t2011: exercise D/F conflicts with HEAD with the reftable backend

Some of the tests in t2011 exercise whether it is possible to move away
from a symbolic HEAD ref whose target ref has a directory-file conflict
with another, preexisting ref. These tests don't use git-symbolic-ref(1)
but manually write HEAD. This is supposedly done to avoid using logic
that we're about to exercise, but it makes it impossible to verify
whether the logic also works for ref backends other than "files".

Refactor the code to use git-symbolic-ref(1) instead so that the tests
work with the "reftable" backend, as well. We already have lots of tests
in t1404 that ensure that both git-update-ref(1) and git-symbolic-ref(1)
work in such a scenario, so it should be safe to rely on it here.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Patrick Steinhardt 2024-02-15 09:25:51 +01:00 committed by Junio C Hamano
parent c4e3af6d97
commit f85a032c67

View file

@ -29,36 +29,33 @@ test_expect_success REFFILES 'checkout notices failure to lock HEAD' '
test_must_fail git checkout -b other
'
test_expect_success REFFILES 'create ref directory/file conflict scenario' '
test_expect_success 'create ref directory/file conflict scenario' '
git update-ref refs/heads/outer/inner main &&
# do not rely on symbolic-ref to get a known state,
# as it may use the same code we are testing
reset_to_df () {
echo "ref: refs/heads/outer" >.git/HEAD
git symbolic-ref HEAD refs/heads/outer
}
'
test_expect_success REFFILES 'checkout away from d/f HEAD (unpacked, to branch)' '
test_expect_success 'checkout away from d/f HEAD (unpacked, to branch)' '
reset_to_df &&
git checkout main
'
test_expect_success REFFILES 'checkout away from d/f HEAD (unpacked, to detached)' '
test_expect_success 'checkout away from d/f HEAD (unpacked, to detached)' '
reset_to_df &&
git checkout --detach main
'
test_expect_success REFFILES 'pack refs' '
test_expect_success 'pack refs' '
git pack-refs --all --prune
'
test_expect_success REFFILES 'checkout away from d/f HEAD (packed, to branch)' '
test_expect_success 'checkout away from d/f HEAD (packed, to branch)' '
reset_to_df &&
git checkout main
'
test_expect_success REFFILES 'checkout away from d/f HEAD (packed, to detached)' '
test_expect_success 'checkout away from d/f HEAD (packed, to detached)' '
reset_to_df &&
git checkout --detach main
'