]>
Commit | Line | Data |
---|---|---|
f25b7939 JH |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2006 Junio C Hamano | |
4 | # | |
5 | ||
0d042fec | 6 | test_description='git grep various. |
f25b7939 JH |
7 | ' |
8 | ||
9 | . ./test-lib.sh | |
10 | ||
11 | test_expect_success setup ' | |
12 | { | |
13 | echo foo mmap bar | |
14 | echo foo_mmap bar | |
15 | echo foo_mmap bar mmap | |
16 | echo foo mmap bar_mmap | |
17 | echo foo_mmap bar mmap baz | |
18 | } >file && | |
dbb6a4ad | 19 | echo ww w >w && |
f25b7939 JH |
20 | echo x x xx x >x && |
21 | echo y yy >y && | |
22 | echo zzz > z && | |
0d042fec JH |
23 | mkdir t && |
24 | echo test >t/t && | |
dbb6a4ad | 25 | git add file w x y z t/t && |
a4d7d2c6 | 26 | test_tick && |
f25b7939 JH |
27 | git commit -m initial |
28 | ' | |
29 | ||
c922b01f LT |
30 | test_expect_success 'grep should not segfault with a bad input' ' |
31 | test_must_fail git grep "(" | |
32 | ' | |
33 | ||
f25b7939 JH |
34 | for H in HEAD '' |
35 | do | |
36 | case "$H" in | |
37 | HEAD) HC='HEAD:' L='HEAD' ;; | |
38 | '') HC= L='in working tree' ;; | |
39 | esac | |
40 | ||
41 | test_expect_success "grep -w $L" ' | |
42 | { | |
43 | echo ${HC}file:1:foo mmap bar | |
44 | echo ${HC}file:3:foo_mmap bar mmap | |
45 | echo ${HC}file:4:foo mmap bar_mmap | |
46 | echo ${HC}file:5:foo_mmap bar mmap baz | |
47 | } >expected && | |
48 | git grep -n -w -e mmap $H >actual && | |
49 | diff expected actual | |
50 | ' | |
51 | ||
dbb6a4ad RS |
52 | test_expect_success "grep -w $L (w)" ' |
53 | : >expected && | |
54 | ! git grep -n -w -e "^w" >actual && | |
55 | test_cmp expected actual | |
56 | ' | |
57 | ||
f25b7939 JH |
58 | test_expect_success "grep -w $L (x)" ' |
59 | { | |
60 | echo ${HC}x:1:x x xx x | |
61 | } >expected && | |
62 | git grep -n -w -e "x xx* x" $H >actual && | |
63 | diff expected actual | |
64 | ' | |
65 | ||
66 | test_expect_success "grep -w $L (y-1)" ' | |
67 | { | |
68 | echo ${HC}y:1:y yy | |
69 | } >expected && | |
70 | git grep -n -w -e "^y" $H >actual && | |
71 | diff expected actual | |
72 | ' | |
73 | ||
74 | test_expect_success "grep -w $L (y-2)" ' | |
75 | : >expected && | |
76 | if git grep -n -w -e "^y y" $H >actual | |
77 | then | |
78 | echo should not have matched | |
79 | cat actual | |
80 | false | |
81 | else | |
82 | diff expected actual | |
83 | fi | |
84 | ' | |
85 | ||
86 | test_expect_success "grep -w $L (z)" ' | |
87 | : >expected && | |
88 | if git grep -n -w -e "^z" $H >actual | |
89 | then | |
90 | echo should not have matched | |
91 | cat actual | |
92 | false | |
93 | else | |
94 | diff expected actual | |
95 | fi | |
96 | ' | |
0d042fec JH |
97 | |
98 | test_expect_success "grep $L (t-1)" ' | |
99 | echo "${HC}t/t:1:test" >expected && | |
100 | git grep -n -e test $H >actual && | |
101 | diff expected actual | |
102 | ' | |
103 | ||
104 | test_expect_success "grep $L (t-2)" ' | |
105 | echo "${HC}t:1:test" >expected && | |
106 | ( | |
107 | cd t && | |
108 | git grep -n -e test $H | |
109 | ) >actual && | |
110 | diff expected actual | |
111 | ' | |
112 | ||
113 | test_expect_success "grep $L (t-3)" ' | |
114 | echo "${HC}t/t:1:test" >expected && | |
115 | ( | |
116 | cd t && | |
117 | git grep --full-name -n -e test $H | |
118 | ) >actual && | |
119 | diff expected actual | |
120 | ' | |
121 | ||
41ac414e | 122 | test_expect_success "grep -c $L (no /dev/null)" ' |
87539416 | 123 | ! git grep -c test $H | grep /dev/null |
d99ebf08 JH |
124 | ' |
125 | ||
f25b7939 JH |
126 | done |
127 | ||
a4d7d2c6 JH |
128 | test_expect_success 'log grep setup' ' |
129 | echo a >>file && | |
130 | test_tick && | |
131 | GIT_AUTHOR_NAME="With * Asterisk" \ | |
132 | GIT_AUTHOR_EMAIL="xyzzy@frotz.com" \ | |
133 | git commit -a -m "second" && | |
134 | ||
135 | echo a >>file && | |
136 | test_tick && | |
137 | git commit -a -m "third" | |
138 | ||
139 | ' | |
140 | ||
141 | test_expect_success 'log grep (1)' ' | |
142 | git log --author=author --pretty=tformat:%s >actual && | |
143 | ( echo third ; echo initial ) >expect && | |
144 | test_cmp expect actual | |
145 | ' | |
146 | ||
147 | test_expect_success 'log grep (2)' ' | |
148 | git log --author=" * " -F --pretty=tformat:%s >actual && | |
149 | ( echo second ) >expect && | |
150 | test_cmp expect actual | |
151 | ' | |
152 | ||
153 | test_expect_success 'log grep (3)' ' | |
154 | git log --author="^A U" --pretty=tformat:%s >actual && | |
155 | ( echo third ; echo initial ) >expect && | |
156 | test_cmp expect actual | |
157 | ' | |
158 | ||
159 | test_expect_success 'log grep (4)' ' | |
160 | git log --author="frotz\.com>$" --pretty=tformat:%s >actual && | |
161 | ( echo second ) >expect && | |
162 | test_cmp expect actual | |
163 | ' | |
164 | ||
165 | test_expect_success 'log grep (5)' ' | |
166 | git log --author=Thor -F --grep=Thu --pretty=tformat:%s >actual && | |
167 | ( echo third ; echo initial ) >expect && | |
168 | test_cmp expect actual | |
169 | ' | |
170 | ||
171 | test_expect_success 'log grep (6)' ' | |
172 | git log --author=-0700 --pretty=tformat:%s >actual && | |
173 | >expect && | |
174 | test_cmp expect actual | |
57d43466 | 175 | ' |
a4d7d2c6 | 176 | |
57d43466 NTND |
177 | test_expect_success 'grep with CE_VALID file' ' |
178 | git update-index --assume-unchanged t/t && | |
179 | rm t/t && | |
180 | test "$(git grep --no-ext-grep t)" = "t/t:test" && | |
181 | git update-index --no-assume-unchanged t/t && | |
182 | git checkout t/t | |
a4d7d2c6 JH |
183 | ' |
184 | ||
f25b7939 | 185 | test_done |