t4208: add check for ":/" without matching file
[git] / t / t4208-log-magic-pathspec.sh
1 #!/bin/sh
2
3 test_description='magic pathspec tests using git-log'
4
5 . ./test-lib.sh
6
7 test_expect_success 'setup' '
8         test_commit initial &&
9         test_tick &&
10         git commit --allow-empty -m empty &&
11         mkdir sub
12 '
13
14 test_expect_success '"git log :/" should not be ambiguous' '
15         git log :/
16 '
17
18 test_expect_success '"git log :/a" should be ambiguous (applied both rev and worktree)' '
19         : >a &&
20         test_must_fail git log :/a 2>error &&
21         test_i18ngrep ambiguous error
22 '
23
24 test_expect_success '"git log :/a -- " should not be ambiguous' '
25         git log :/a --
26 '
27
28 test_expect_success '"git log -- :/a" should not be ambiguous' '
29         git log -- :/a
30 '
31
32 # This differs from the ":/a" check above in that :/in looks like a pathspec,
33 # but doesn't match an actual file.
34 test_expect_success '"git log :/in" should not be ambiguous' '
35         git log :/in
36 '
37
38 test_expect_success '"git log :" should be ambiguous' '
39         test_must_fail git log : 2>error &&
40         test_i18ngrep ambiguous error
41 '
42
43 test_expect_success 'git log -- :' '
44         git log -- :
45 '
46
47 test_expect_success 'git log HEAD -- :/' '
48         cat >expected <<-EOF &&
49         24b24cf initial
50         EOF
51         (cd sub && git log --oneline HEAD -- :/ >../actual) &&
52         test_cmp expected actual
53 '
54
55 test_expect_success 'command line pathspec parsing for "git log"' '
56         git reset --hard &&
57         >a &&
58         git add a &&
59         git commit -m "add an empty a" --allow-empty &&
60         echo 1 >a &&
61         git commit -a -m "update a to 1" &&
62         git checkout HEAD^ &&
63         echo 2 >a &&
64         git commit -a -m "update a to 2" &&
65         test_must_fail git merge master &&
66         git add a &&
67         git log --merge -- a
68 '
69
70 test_done