You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
61 lines
1.5 KiB
61 lines
1.5 KiB
#!/bin/sh |
|
|
|
test_description='checkout handling of ambiguous (branch/tag) refs' |
|
|
|
TEST_PASSES_SANITIZE_LEAK=true |
|
. ./test-lib.sh |
|
|
|
test_expect_success 'setup ambiguous refs' ' |
|
test_commit branch file && |
|
git branch ambiguity && |
|
git branch vagueness && |
|
test_commit tag file && |
|
git tag ambiguity && |
|
git tag vagueness HEAD:file && |
|
test_commit other file |
|
' |
|
|
|
test_expect_success 'checkout ambiguous ref succeeds' ' |
|
git checkout ambiguity >stdout 2>stderr |
|
' |
|
|
|
test_expect_success 'checkout produces ambiguity warning' ' |
|
grep "warning.*ambiguous" stderr |
|
' |
|
|
|
test_expect_success 'checkout chooses branch over tag' ' |
|
echo refs/heads/ambiguity >expect && |
|
git symbolic-ref HEAD >actual && |
|
test_cmp expect actual && |
|
echo branch >expect && |
|
test_cmp expect file |
|
' |
|
|
|
test_expect_success 'checkout reports switch to branch' ' |
|
test_i18ngrep "Switched to branch" stderr && |
|
test_i18ngrep ! "^HEAD is now at" stderr |
|
' |
|
|
|
test_expect_success 'checkout vague ref succeeds' ' |
|
git checkout vagueness >stdout 2>stderr && |
|
test_set_prereq VAGUENESS_SUCCESS |
|
' |
|
|
|
test_expect_success VAGUENESS_SUCCESS 'checkout produces ambiguity warning' ' |
|
grep "warning.*ambiguous" stderr |
|
' |
|
|
|
test_expect_success VAGUENESS_SUCCESS 'checkout chooses branch over tag' ' |
|
echo refs/heads/vagueness >expect && |
|
git symbolic-ref HEAD >actual && |
|
test_cmp expect actual && |
|
echo branch >expect && |
|
test_cmp expect file |
|
' |
|
|
|
test_expect_success VAGUENESS_SUCCESS 'checkout reports switch to branch' ' |
|
test_i18ngrep "Switched to branch" stderr && |
|
test_i18ngrep ! "^HEAD is now at" stderr |
|
' |
|
|
|
test_done
|
|
|