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>

Patrick Steinhardt committed Feb 15, 2024 at 09:25 UTC f85a032c676b818851926044aaea2e9065acdaa2
1 file changed +7 -10
t/t2011-checkout-invalid-head.sh
+7 -10
@@ -29,36 +29,33 @@ test_expect_success REFFILES 'checkout notices failure to lock HEAD' '
29 test_must_fail git checkout -b other
30 '
31
32 -test_expect_success REFFILES 'create ref directory/file conflict scenario' '
32 +test_expect_success 'create ref directory/file conflict scenario' '
33 git update-ref refs/heads/outer/inner main &&
34 -
35 - # do not rely on symbolic-ref to get a known state,
36 - # as it may use the same code we are testing
34 reset_to_df () {
38 - echo "ref: refs/heads/outer" >.git/HEAD
35 + git symbolic-ref HEAD refs/heads/outer
36 }
37 '
38
42 -test_expect_success REFFILES 'checkout away from d/f HEAD (unpacked, to branch)' '
39 +test_expect_success 'checkout away from d/f HEAD (unpacked, to branch)' '
40 reset_to_df &&
41 git checkout main
42 '
43
47 -test_expect_success REFFILES 'checkout away from d/f HEAD (unpacked, to detached)' '
44 +test_expect_success 'checkout away from d/f HEAD (unpacked, to detached)' '
45 reset_to_df &&
46 git checkout --detach main
47 '
48
52 -test_expect_success REFFILES 'pack refs' '
49 +test_expect_success 'pack refs' '
50 git pack-refs --all --prune
51 '
52
56 -test_expect_success REFFILES 'checkout away from d/f HEAD (packed, to branch)' '
53 +test_expect_success 'checkout away from d/f HEAD (packed, to branch)' '
54 reset_to_df &&
55 git checkout main
56 '
57
61 -test_expect_success REFFILES 'checkout away from d/f HEAD (packed, to detached)' '
58 +test_expect_success 'checkout away from d/f HEAD (packed, to detached)' '
59 reset_to_df &&
60 git checkout --detach main
61 '