Add tests for wildcard "path vs ref" disambiguation
authorNguyễn Thái Ngọc Duy <pclouds@gmail.com>
Wed, 1 Jul 2015 11:08:14 +0000 (18:08 +0700)
committerJunio C Hamano <gitster@pobox.com>
Wed, 1 Jul 2015 16:30:53 +0000 (09:30 -0700)
Commit 28fcc0b (pathspec: avoid the need of "--" when wildcard is used -
2015-05-02) changes how the disambiguation rules work. This patch adds
some tests to demonstrate, basically, if wildcard characters are in an
argument:

- if the argument is valid extended sha-1 syntax, "--" must be used
- otherwise the argument is considered a path, even without "--"

And wildcard can appear in extended sha-1 syntax, either as part of
regex in ":/<regex>" or as the literal path in ":<path>". The latter
case is less likely to happen in real world. But if you do ":/" a lot,
you may need to type "--" more.

Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
t/t2019-checkout-ambiguous-ref.sh
index b99d5192a96ec77ef6a99cb86518375c447b48a9..8396320d52c190012ecf86348b3a4a58a07c8163 100755 (executable)
@@ -56,4 +56,30 @@ test_expect_success VAGUENESS_SUCCESS 'checkout reports switch to branch' '
        test_i18ngrep ! "^HEAD is now at" stderr
 '
 
+test_expect_success 'wildcard ambiguation, paths win' '
+       git init ambi &&
+       (
+               cd ambi &&
+               echo a >a.c &&
+               git add a.c &&
+               echo b >a.c &&
+               git checkout "*.c" &&
+               echo a >expect &&
+               test_cmp expect a.c
+       )
+'
+
+test_expect_success 'wildcard ambiguation, refs lose' '
+       git init ambi2 &&
+       (
+               cd ambi2 &&
+               echo a >"*.c" &&
+               git add . &&
+               test_must_fail git show :"*.c" &&
+               git show :"*.c" -- >actual &&
+               echo a >expect &&
+               test_cmp expect actual
+       )
+'
+
 test_done