mirror of
https://github.com/git/git
synced 2024-11-05 18:59:29 +00:00
f85a032c67
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>
62 lines
1.4 KiB
Bash
Executable file
62 lines
1.4 KiB
Bash
Executable file
#!/bin/sh
|
|
|
|
test_description='checkout switching away from an invalid branch'
|
|
|
|
GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME=main
|
|
export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
|
|
|
|
TEST_PASSES_SANITIZE_LEAK=true
|
|
. ./test-lib.sh
|
|
|
|
test_expect_success 'setup' '
|
|
echo hello >world &&
|
|
git add world &&
|
|
git commit -m initial
|
|
'
|
|
|
|
test_expect_success 'checkout should not start branch from a tree' '
|
|
test_must_fail git checkout -b newbranch main^{tree}
|
|
'
|
|
|
|
test_expect_success REFFILES 'checkout main from invalid HEAD' '
|
|
echo $ZERO_OID >.git/HEAD &&
|
|
git checkout main --
|
|
'
|
|
|
|
test_expect_success REFFILES 'checkout notices failure to lock HEAD' '
|
|
test_when_finished "rm -f .git/HEAD.lock" &&
|
|
>.git/HEAD.lock &&
|
|
test_must_fail git checkout -b other
|
|
'
|
|
|
|
test_expect_success 'create ref directory/file conflict scenario' '
|
|
git update-ref refs/heads/outer/inner main &&
|
|
reset_to_df () {
|
|
git symbolic-ref HEAD refs/heads/outer
|
|
}
|
|
'
|
|
|
|
test_expect_success 'checkout away from d/f HEAD (unpacked, to branch)' '
|
|
reset_to_df &&
|
|
git checkout main
|
|
'
|
|
|
|
test_expect_success 'checkout away from d/f HEAD (unpacked, to detached)' '
|
|
reset_to_df &&
|
|
git checkout --detach main
|
|
'
|
|
|
|
test_expect_success 'pack refs' '
|
|
git pack-refs --all --prune
|
|
'
|
|
|
|
test_expect_success 'checkout away from d/f HEAD (packed, to branch)' '
|
|
reset_to_df &&
|
|
git checkout main
|
|
'
|
|
|
|
test_expect_success 'checkout away from d/f HEAD (packed, to detached)' '
|
|
reset_to_df &&
|
|
git checkout --detach main
|
|
'
|
|
test_done
|