Merge branches 'sp/maint-fetch-pack-stop-early' and 'sp/maint-upload-pack-stop-early'
[git/mjg.git] / t / t2019-checkout-ambiguous-ref.sh
blob943541d40d7ea331dd0ae85624a33b9f2258246c
1 #!/bin/sh
3 test_description='checkout handling of ambiguous (branch/tag) refs'
4 . ./test-lib.sh
6 test_expect_success 'setup ambiguous refs' '
7 test_commit branch file &&
8 git branch ambiguity &&
9 git branch vagueness &&
10 test_commit tag file &&
11 git tag ambiguity &&
12 git tag vagueness HEAD:file &&
13 test_commit other file
16 test_expect_success 'checkout ambiguous ref succeeds' '
17 git checkout ambiguity >stdout 2>stderr
20 test_expect_success 'checkout produces ambiguity warning' '
21 grep "warning.*ambiguous" stderr
24 test_expect_success 'checkout chooses branch over tag' '
25 echo refs/heads/ambiguity >expect &&
26 git symbolic-ref HEAD >actual &&
27 test_cmp expect actual &&
28 echo branch >expect &&
29 test_cmp expect file
32 test_expect_success 'checkout reports switch to branch' '
33 grep "Switched to branch" stderr &&
34 ! grep "^HEAD is now at" stderr
37 test_expect_success 'checkout vague ref succeeds' '
38 git checkout vagueness >stdout 2>stderr &&
39 test_set_prereq VAGUENESS_SUCCESS
42 test_expect_success VAGUENESS_SUCCESS 'checkout produces ambiguity warning' '
43 grep "warning.*ambiguous" stderr
46 test_expect_success VAGUENESS_SUCCESS 'checkout chooses branch over tag' '
47 echo refs/heads/vagueness >expect &&
48 git symbolic-ref HEAD >actual &&
49 test_cmp expect actual &&
50 echo branch >expect &&
51 test_cmp expect file
54 test_expect_success VAGUENESS_SUCCESS 'checkout reports switch to branch' '
55 grep "Switched to branch" stderr &&
56 ! grep "^HEAD is now at" stderr
59 test_done