]>
Commit | Line | Data |
---|---|---|
1 | #!/bin/sh | |
2 | ||
3 | test_description='log --grep/--author/--regexp-ignore-case/-S/-G' | |
4 | . ./test-lib.sh | |
5 | ||
6 | test_log () { | |
7 | expect=$1 | |
8 | kind=$2 | |
9 | needle=$3 | |
10 | shift 3 | |
11 | rest=$@ | |
12 | ||
13 | case $kind in | |
14 | --*) | |
15 | opt=$kind=$needle | |
16 | ;; | |
17 | *) | |
18 | opt=$kind$needle | |
19 | ;; | |
20 | esac | |
21 | case $expect in | |
22 | expect_nomatch) | |
23 | match=nomatch | |
24 | ;; | |
25 | *) | |
26 | match=match | |
27 | ;; | |
28 | esac | |
29 | ||
30 | test_expect_success "log $kind${rest:+ $rest} ($match)" " | |
31 | git log $rest $opt --format=%H >actual && | |
32 | test_cmp $expect actual | |
33 | " | |
34 | } | |
35 | ||
36 | # test -i and --regexp-ignore-case and expect both to behave the same way | |
37 | test_log_icase () { | |
38 | test_log $@ --regexp-ignore-case | |
39 | test_log $@ -i | |
40 | } | |
41 | ||
42 | test_expect_success setup ' | |
43 | >expect_nomatch && | |
44 | ||
45 | >file && | |
46 | git add file && | |
47 | test_tick && | |
48 | git commit -m initial && | |
49 | git rev-parse --verify HEAD >expect_initial && | |
50 | ||
51 | echo Picked >file && | |
52 | git add file && | |
53 | test_tick && | |
54 | git commit --author="Another Person <another@example.com>" -m second && | |
55 | git rev-parse --verify HEAD >expect_second | |
56 | ' | |
57 | ||
58 | test_log expect_initial --grep initial | |
59 | test_log expect_nomatch --grep InItial | |
60 | test_log_icase expect_initial --grep InItial | |
61 | test_log_icase expect_nomatch --grep initail | |
62 | ||
63 | test_log expect_second --author Person | |
64 | test_log expect_nomatch --author person | |
65 | test_log_icase expect_second --author person | |
66 | test_log_icase expect_nomatch --author spreon | |
67 | ||
68 | test_log expect_nomatch -G picked | |
69 | test_log expect_second -G Picked | |
70 | test_log_icase expect_nomatch -G pickle | |
71 | test_log_icase expect_second -G picked | |
72 | ||
73 | test_expect_success 'log -G --textconv (missing textconv tool)' ' | |
74 | echo "* diff=test" >.gitattributes && | |
75 | test_must_fail git -c diff.test.textconv=missing log -Gfoo && | |
76 | rm .gitattributes | |
77 | ' | |
78 | ||
79 | test_expect_success 'log -G --no-textconv (missing textconv tool)' ' | |
80 | echo "* diff=test" >.gitattributes && | |
81 | git -c diff.test.textconv=missing log -Gfoo --no-textconv >actual && | |
82 | test_cmp expect_nomatch actual && | |
83 | rm .gitattributes | |
84 | ' | |
85 | ||
86 | test_log expect_nomatch -S picked | |
87 | test_log expect_second -S Picked | |
88 | test_log_icase expect_second -S picked | |
89 | test_log_icase expect_nomatch -S pickle | |
90 | ||
91 | test_log expect_nomatch -S p.cked --pickaxe-regex | |
92 | test_log expect_second -S P.cked --pickaxe-regex | |
93 | test_log_icase expect_second -S p.cked --pickaxe-regex | |
94 | test_log_icase expect_nomatch -S p.ckle --pickaxe-regex | |
95 | ||
96 | test_expect_success 'log -S --textconv (missing textconv tool)' ' | |
97 | echo "* diff=test" >.gitattributes && | |
98 | test_must_fail git -c diff.test.textconv=missing log -Sfoo && | |
99 | rm .gitattributes | |
100 | ' | |
101 | ||
102 | test_expect_success 'log -S --no-textconv (missing textconv tool)' ' | |
103 | echo "* diff=test" >.gitattributes && | |
104 | git -c diff.test.textconv=missing log -Sfoo --no-textconv >actual && | |
105 | test_cmp expect_nomatch actual && | |
106 | rm .gitattributes | |
107 | ' | |
108 | ||
109 | test_expect_success 'setup log -[GS] binary & --text' ' | |
110 | git checkout --orphan GS-binary-and-text && | |
111 | git read-tree --empty && | |
112 | printf "a\na\0a\n" >data.bin && | |
113 | git add data.bin && | |
114 | git commit -m "create binary file" data.bin && | |
115 | printf "a\na\0a\n" >>data.bin && | |
116 | git commit -m "modify binary file" data.bin && | |
117 | git rm data.bin && | |
118 | git commit -m "delete binary file" data.bin && | |
119 | git log >full-log | |
120 | ' | |
121 | ||
122 | test_expect_success 'log -G ignores binary files' ' | |
123 | git log -Ga >log && | |
124 | test_must_be_empty log | |
125 | ' | |
126 | ||
127 | test_expect_success 'log -G looks into binary files with -a' ' | |
128 | git log -a -Ga >log && | |
129 | test_cmp log full-log | |
130 | ' | |
131 | ||
132 | test_expect_success 'log -G looks into binary files with textconv filter' ' | |
133 | test_when_finished "rm .gitattributes" && | |
134 | echo "* diff=bin" >.gitattributes && | |
135 | git -c diff.bin.textconv=cat log -Ga >log && | |
136 | test_cmp log full-log | |
137 | ' | |
138 | ||
139 | test_expect_success 'log -S looks into binary files' ' | |
140 | git log -Sa >log && | |
141 | test_cmp log full-log | |
142 | ' | |
143 | ||
144 | test_done |