-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge "checkout ambiguous ref bugfix" into maint
* commit '0cb6ad3': checkout: fix bug with ambiguous refs
- Loading branch information
Showing
2 changed files
with
72 additions
and
10 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,59 @@ | ||
#!/bin/sh | ||
|
||
test_description='checkout handling of ambiguous (branch/tag) refs' | ||
. ./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' ' | ||
grep "Switched to branch" stderr && | ||
! grep "^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' ' | ||
grep "Switched to branch" stderr && | ||
! grep "^HEAD is now at" stderr | ||
' | ||
|
||
test_done |