]>
Commit | Line | Data |
---|---|---|
d08bae7e IL |
1 | #!/bin/sh |
2 | ||
3 | test_description='rev-list/rev-parse --glob' | |
4 | ||
5 | . ./test-lib.sh | |
6 | ||
7 | commit () { | |
8 | test_tick && | |
9 | echo $1 > foo && | |
10 | git add foo && | |
11 | git commit -m "$1" | |
12 | } | |
13 | ||
14 | compare () { | |
15 | # Split arguments on whitespace. | |
16 | git $1 $2 >expected && | |
17 | git $1 $3 >actual && | |
18 | test_cmp expected actual | |
19 | } | |
20 | ||
21 | test_expect_success 'setup' ' | |
22 | ||
23 | commit master && | |
24 | git checkout -b subspace/one master && | |
25 | commit one && | |
26 | git checkout -b subspace/two master && | |
27 | commit two && | |
28 | git checkout -b subspace-x master && | |
29 | commit subspace-x && | |
30 | git checkout -b other/three master && | |
31 | commit three && | |
32 | git checkout -b someref master && | |
33 | commit some && | |
34 | git checkout master && | |
b09fe971 IL |
35 | commit master2 && |
36 | git tag foo/bar master && | |
52663475 MG |
37 | commit master3 && |
38 | git update-ref refs/remotes/foo/baz master && | |
39 | commit master4 | |
d08bae7e IL |
40 | ' |
41 | ||
42 | test_expect_success 'rev-parse --glob=refs/heads/subspace/*' ' | |
43 | ||
44 | compare rev-parse "subspace/one subspace/two" "--glob=refs/heads/subspace/*" | |
45 | ||
46 | ' | |
47 | ||
48 | test_expect_success 'rev-parse --glob=heads/subspace/*' ' | |
49 | ||
50 | compare rev-parse "subspace/one subspace/two" "--glob=heads/subspace/*" | |
51 | ||
52 | ' | |
53 | ||
54 | test_expect_success 'rev-parse --glob=refs/heads/subspace/' ' | |
55 | ||
56 | compare rev-parse "subspace/one subspace/two" "--glob=refs/heads/subspace/" | |
57 | ||
58 | ' | |
59 | ||
60 | test_expect_success 'rev-parse --glob=heads/subspace/' ' | |
61 | ||
62 | compare rev-parse "subspace/one subspace/two" "--glob=heads/subspace/" | |
63 | ||
64 | ' | |
65 | ||
66 | test_expect_success 'rev-parse --glob=heads/subspace' ' | |
67 | ||
68 | compare rev-parse "subspace/one subspace/two" "--glob=heads/subspace" | |
69 | ||
70 | ' | |
71 | ||
0fc63ec4 JN |
72 | test_expect_failure 'rev-parse accepts --glob as detached option' ' |
73 | ||
74 | compare rev-parse "subspace/one subspace/two" "--glob heads/subspace" | |
75 | ||
76 | ' | |
77 | ||
78 | test_expect_failure 'rev-parse is not confused by option-like glob' ' | |
79 | ||
80 | compare rev-parse "master" "--glob --symbolic master" | |
81 | ||
82 | ' | |
83 | ||
b09fe971 IL |
84 | test_expect_success 'rev-parse --branches=subspace/*' ' |
85 | ||
86 | compare rev-parse "subspace/one subspace/two" "--branches=subspace/*" | |
87 | ||
88 | ' | |
89 | ||
90 | test_expect_success 'rev-parse --branches=subspace/' ' | |
91 | ||
92 | compare rev-parse "subspace/one subspace/two" "--branches=subspace/" | |
93 | ||
94 | ' | |
95 | ||
96 | test_expect_success 'rev-parse --branches=subspace' ' | |
97 | ||
98 | compare rev-parse "subspace/one subspace/two" "--branches=subspace" | |
99 | ||
100 | ' | |
101 | ||
d08bae7e IL |
102 | test_expect_success 'rev-parse --glob=heads/subspace/* --glob=heads/other/*' ' |
103 | ||
104 | compare rev-parse "subspace/one subspace/two other/three" "--glob=heads/subspace/* --glob=heads/other/*" | |
105 | ||
106 | ' | |
107 | ||
108 | test_expect_success 'rev-parse --glob=heads/someref/* master' ' | |
109 | ||
110 | compare rev-parse "master" "--glob=heads/someref/* master" | |
111 | ||
112 | ' | |
113 | ||
114 | test_expect_success 'rev-parse --glob=heads/*' ' | |
115 | ||
116 | compare rev-parse "master other/three someref subspace-x subspace/one subspace/two" "--glob=heads/*" | |
117 | ||
118 | ' | |
119 | ||
b09fe971 IL |
120 | test_expect_success 'rev-parse --tags=foo' ' |
121 | ||
122 | compare rev-parse "foo/bar" "--tags=foo" | |
123 | ||
124 | ' | |
125 | ||
126 | test_expect_success 'rev-parse --remotes=foo' ' | |
127 | ||
128 | compare rev-parse "foo/baz" "--remotes=foo" | |
129 | ||
130 | ' | |
131 | ||
9dc01bf0 JH |
132 | test_expect_success 'rev-parse --exclude with --branches' ' |
133 | compare rev-parse "--exclude=*/* --branches" "master someref subspace-x" | |
134 | ' | |
135 | ||
136 | test_expect_success 'rev-parse --exclude with --all' ' | |
137 | compare rev-parse "--exclude=refs/remotes/* --all" "--branches --tags" | |
138 | ' | |
139 | ||
140 | test_expect_success 'rev-parse accumulates multiple --exclude' ' | |
141 | compare rev-parse "--exclude=refs/remotes/* --exclude=refs/tags/* --all" --branches | |
142 | ' | |
143 | ||
d08bae7e IL |
144 | test_expect_success 'rev-list --glob=refs/heads/subspace/*' ' |
145 | ||
146 | compare rev-list "subspace/one subspace/two" "--glob=refs/heads/subspace/*" | |
147 | ||
148 | ' | |
149 | ||
5adba90d MM |
150 | test_expect_success 'rev-list --glob refs/heads/subspace/*' ' |
151 | ||
152 | compare rev-list "subspace/one subspace/two" "--glob refs/heads/subspace/*" | |
153 | ||
154 | ' | |
155 | ||
0fc63ec4 JN |
156 | test_expect_success 'rev-list not confused by option-like --glob arg' ' |
157 | ||
158 | compare rev-list "master" "--glob -0 master" | |
159 | ||
160 | ' | |
161 | ||
d08bae7e IL |
162 | test_expect_success 'rev-list --glob=heads/subspace/*' ' |
163 | ||
164 | compare rev-list "subspace/one subspace/two" "--glob=heads/subspace/*" | |
165 | ||
166 | ' | |
167 | ||
168 | test_expect_success 'rev-list --glob=refs/heads/subspace/' ' | |
169 | ||
170 | compare rev-list "subspace/one subspace/two" "--glob=refs/heads/subspace/" | |
171 | ||
172 | ' | |
173 | ||
174 | test_expect_success 'rev-list --glob=heads/subspace/' ' | |
175 | ||
176 | compare rev-list "subspace/one subspace/two" "--glob=heads/subspace/" | |
177 | ||
178 | ' | |
179 | ||
180 | test_expect_success 'rev-list --glob=heads/subspace' ' | |
181 | ||
182 | compare rev-list "subspace/one subspace/two" "--glob=heads/subspace" | |
183 | ||
184 | ' | |
185 | ||
b09fe971 IL |
186 | test_expect_success 'rev-list --branches=subspace/*' ' |
187 | ||
188 | compare rev-list "subspace/one subspace/two" "--branches=subspace/*" | |
189 | ||
190 | ' | |
191 | ||
192 | test_expect_success 'rev-list --branches=subspace/' ' | |
193 | ||
194 | compare rev-list "subspace/one subspace/two" "--branches=subspace/" | |
195 | ||
196 | ' | |
197 | ||
198 | test_expect_success 'rev-list --branches=subspace' ' | |
199 | ||
200 | compare rev-list "subspace/one subspace/two" "--branches=subspace" | |
201 | ||
202 | ' | |
9332441d MG |
203 | |
204 | test_expect_success 'rev-list --branches' ' | |
205 | ||
206 | compare rev-list "master subspace-x someref other/three subspace/one subspace/two" "--branches" | |
207 | ||
208 | ' | |
209 | ||
d08bae7e IL |
210 | test_expect_success 'rev-list --glob=heads/someref/* master' ' |
211 | ||
212 | compare rev-list "master" "--glob=heads/someref/* master" | |
213 | ||
214 | ' | |
215 | ||
216 | test_expect_success 'rev-list --glob=heads/subspace/* --glob=heads/other/*' ' | |
217 | ||
218 | compare rev-list "subspace/one subspace/two other/three" "--glob=heads/subspace/* --glob=heads/other/*" | |
219 | ||
220 | ' | |
221 | ||
222 | test_expect_success 'rev-list --glob=heads/*' ' | |
223 | ||
224 | compare rev-list "master other/three someref subspace-x subspace/one subspace/two" "--glob=heads/*" | |
225 | ||
226 | ' | |
227 | ||
b09fe971 IL |
228 | test_expect_success 'rev-list --tags=foo' ' |
229 | ||
230 | compare rev-list "foo/bar" "--tags=foo" | |
231 | ||
232 | ' | |
233 | ||
9332441d MG |
234 | test_expect_success 'rev-list --tags' ' |
235 | ||
236 | compare rev-list "foo/bar" "--tags" | |
237 | ||
238 | ' | |
239 | ||
b09fe971 IL |
240 | test_expect_success 'rev-list --remotes=foo' ' |
241 | ||
242 | compare rev-list "foo/baz" "--remotes=foo" | |
243 | ||
244 | ' | |
245 | ||
751a2ac6 JH |
246 | test_expect_success 'rev-list --exclude with --branches' ' |
247 | compare rev-list "--exclude=*/* --branches" "master someref subspace-x" | |
248 | ' | |
249 | ||
250 | test_expect_success 'rev-list --exclude with --all' ' | |
251 | compare rev-list "--exclude=refs/remotes/* --all" "--branches --tags" | |
252 | ' | |
253 | ||
254 | test_expect_success 'rev-list accumulates multiple --exclude' ' | |
255 | compare rev-list "--exclude=refs/remotes/* --exclude=refs/tags/* --all" --branches | |
256 | ' | |
257 | ||
258 | ||
259 | # "git rev-list<ENTER>" is likely to be a bug in the calling script and may | |
260 | # deserve an error message, but do cases where set of refs programatically | |
261 | # given using globbing and/or --stdin need to fail with the same error, or | |
262 | # are we better off reporting a success with no output? The following few | |
263 | # tests document the current behaviour to remind us that we might want to | |
264 | # think about this issue. | |
265 | ||
266 | test_expect_failure 'rev-list may want to succeed with empty output on no input (1)' ' | |
267 | >expect && | |
268 | git rev-list --stdin <expect >actual && | |
269 | test_cmp expect actual | |
270 | ' | |
271 | ||
272 | test_expect_failure 'rev-list may want to succeed with empty output on no input (2)' ' | |
273 | >expect && | |
274 | git rev-list --exclude=* --all >actual && | |
275 | test_cmp expect actual | |
276 | ' | |
277 | ||
278 | test_expect_failure 'rev-list may want to succeed with empty output on no input (3)' ' | |
279 | ( | |
280 | test_create_repo empty && | |
281 | cd empty && | |
282 | >expect && | |
283 | git rev-list --all >actual && | |
284 | test_cmp expect actual | |
285 | ) | |
286 | ' | |
287 | ||
0fc63ec4 JN |
288 | test_expect_success 'shortlog accepts --glob/--tags/--remotes' ' |
289 | ||
290 | compare shortlog "subspace/one subspace/two" --branches=subspace && | |
291 | compare shortlog \ | |
292 | "master subspace-x someref other/three subspace/one subspace/two" \ | |
293 | --branches && | |
294 | compare shortlog master "--glob=heads/someref/* master" && | |
295 | compare shortlog "subspace/one subspace/two other/three" \ | |
296 | "--glob=heads/subspace/* --glob=heads/other/*" && | |
297 | compare shortlog \ | |
298 | "master other/three someref subspace-x subspace/one subspace/two" \ | |
299 | "--glob=heads/*" && | |
300 | compare shortlog foo/bar --tags=foo && | |
301 | compare shortlog foo/bar --tags && | |
302 | compare shortlog foo/baz --remotes=foo | |
303 | ||
304 | ' | |
305 | ||
306 | test_expect_failure 'shortlog accepts --glob as detached option' ' | |
307 | ||
308 | compare shortlog \ | |
309 | "master other/three someref subspace-x subspace/one subspace/two" \ | |
310 | "--glob heads/*" | |
311 | ||
312 | ' | |
313 | ||
314 | test_expect_failure 'shortlog --glob is not confused by option-like argument' ' | |
315 | ||
316 | compare shortlog master "--glob -e master" | |
317 | ||
318 | ' | |
319 | ||
d08bae7e | 320 | test_done |