Merge branch 'tk/typofix-connect-unknown-proto-error' into maint
[git] / t / t2019-checkout-ambiguous-ref.sh
1 #!/bin/sh
2
3 test_description='checkout handling of ambiguous (branch/tag) refs'
4 . ./test-lib.sh
5
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
14 '
15
16 test_expect_success 'checkout ambiguous ref succeeds' '
17         git checkout ambiguity >stdout 2>stderr
18 '
19
20 test_expect_success 'checkout produces ambiguity warning' '
21         grep "warning.*ambiguous" stderr
22 '
23
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
30 '
31
32 test_expect_success 'checkout reports switch to branch' '
33         test_i18ngrep "Switched to branch" stderr &&
34         test_i18ngrep ! "^HEAD is now at" stderr
35 '
36
37 test_expect_success 'checkout vague ref succeeds' '
38         git checkout vagueness >stdout 2>stderr &&
39         test_set_prereq VAGUENESS_SUCCESS
40 '
41
42 test_expect_success VAGUENESS_SUCCESS 'checkout produces ambiguity warning' '
43         grep "warning.*ambiguous" stderr
44 '
45
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
52 '
53
54 test_expect_success VAGUENESS_SUCCESS 'checkout reports switch to branch' '
55         test_i18ngrep "Switched to branch" stderr &&
56         test_i18ngrep ! "^HEAD is now at" stderr
57 '
58
59 test_expect_success 'wildcard ambiguation, paths win' '
60         git init ambi &&
61         (
62                 cd ambi &&
63                 echo a >a.c &&
64                 git add a.c &&
65                 echo b >a.c &&
66                 git checkout "*.c" &&
67                 echo a >expect &&
68                 test_cmp expect a.c
69         )
70 '
71
72 test_expect_success !MINGW 'wildcard ambiguation, refs lose' '
73         git init ambi2 &&
74         (
75                 cd ambi2 &&
76                 echo a >"*.c" &&
77                 git add . &&
78                 test_must_fail git show :"*.c" &&
79                 git show :"*.c" -- >actual &&
80                 echo a >expect &&
81                 test_cmp expect actual
82         )
83 '
84
85 test_done