]>
Commit | Line | Data |
---|---|---|
76bed78a CC |
1 | #!/bin/sh |
2 | # | |
3 | # Copyright (c) 2013, 2014 Christian Couder | |
4 | # | |
5 | ||
6 | test_description='git interpret-trailers' | |
7 | ||
8 | . ./test-lib.sh | |
9 | ||
10 | # When we want one trailing space at the end of each line, let's use sed | |
11 | # to make sure that these spaces are not removed by any automatic tool. | |
12 | ||
13 | test_expect_success 'setup' ' | |
14 | : >empty && | |
15 | cat >basic_message <<-\EOF && | |
16 | subject | |
17 | ||
18 | body | |
19 | EOF | |
20 | cat >complex_message_body <<-\EOF && | |
21 | my subject | |
22 | ||
23 | my body which is long | |
24 | and contains some special | |
25 | chars like : = ? ! | |
26 | ||
27 | EOF | |
28 | sed -e "s/ Z\$/ /" >complex_message_trailers <<-\EOF && | |
29 | Fixes: Z | |
30 | Acked-by: Z | |
31 | Reviewed-by: Z | |
32 | Signed-off-by: Z | |
33 | EOF | |
34 | cat >basic_patch <<-\EOF | |
35 | --- | |
36 | foo.txt | 2 +- | |
37 | 1 file changed, 1 insertion(+), 1 deletion(-) | |
38 | ||
39 | diff --git a/foo.txt b/foo.txt | |
40 | index 0353767..1d91aa1 100644 | |
41 | --- a/foo.txt | |
42 | +++ b/foo.txt | |
43 | @@ -1,3 +1,3 @@ | |
44 | ||
45 | -bar | |
46 | +baz | |
47 | ||
48 | -- | |
49 | 1.9.rc0.11.ga562ddc | |
50 | ||
51 | EOF | |
52 | ' | |
53 | ||
54 | test_expect_success 'without config' ' | |
55 | sed -e "s/ Z\$/ /" >expected <<-\EOF && | |
56 | ||
57 | ack: Peff | |
58 | Reviewed-by: Z | |
59 | Acked-by: Johan | |
60 | EOF | |
61 | git interpret-trailers --trailer "ack = Peff" --trailer "Reviewed-by" \ | |
62 | --trailer "Acked-by: Johan" empty >actual && | |
63 | test_cmp expected actual | |
64 | ' | |
65 | ||
66 | test_expect_success 'without config in another order' ' | |
67 | sed -e "s/ Z\$/ /" >expected <<-\EOF && | |
68 | ||
69 | Acked-by: Johan | |
70 | Reviewed-by: Z | |
71 | ack: Peff | |
72 | EOF | |
73 | git interpret-trailers --trailer "Acked-by: Johan" --trailer "Reviewed-by" \ | |
74 | --trailer "ack = Peff" empty >actual && | |
75 | test_cmp expected actual | |
76 | ' | |
77 | ||
78 | test_expect_success '--trim-empty without config' ' | |
79 | cat >expected <<-\EOF && | |
80 | ||
81 | ack: Peff | |
82 | Acked-by: Johan | |
83 | EOF | |
84 | git interpret-trailers --trim-empty --trailer ack=Peff \ | |
85 | --trailer "Reviewed-by" --trailer "Acked-by: Johan" \ | |
86 | --trailer "sob:" empty >actual && | |
87 | test_cmp expected actual | |
88 | ' | |
89 | ||
90 | test_expect_success 'with config option on the command line' ' | |
91 | cat >expected <<-\EOF && | |
92 | ||
93 | Acked-by: Johan | |
94 | Reviewed-by: Peff | |
95 | EOF | |
dc5d553b | 96 | { echo; echo "Acked-by: Johan"; } | |
76bed78a CC |
97 | git -c "trailer.Acked-by.ifexists=addifdifferent" interpret-trailers \ |
98 | --trailer "Reviewed-by: Peff" --trailer "Acked-by: Johan" >actual && | |
99 | test_cmp expected actual | |
100 | ' | |
101 | ||
6262fe9c | 102 | test_expect_success 'with only a title in the message' ' |
dc5d553b CC |
103 | cat >expected <<-\EOF && |
104 | area: change | |
105 | ||
106 | Reviewed-by: Peff | |
107 | Acked-by: Johan | |
108 | EOF | |
109 | echo "area: change" | | |
110 | git interpret-trailers --trailer "Reviewed-by: Peff" \ | |
111 | --trailer "Acked-by: Johan" >actual && | |
112 | test_cmp expected actual | |
113 | ' | |
114 | ||
5c99995d CC |
115 | test_expect_success 'with multiline title in the message' ' |
116 | cat >expected <<-\EOF && | |
117 | place of | |
118 | code: change | |
119 | ||
120 | Reviewed-by: Peff | |
121 | Acked-by: Johan | |
122 | EOF | |
123 | printf "%s\n" "place of" "code: change" | | |
124 | git interpret-trailers --trailer "Reviewed-by: Peff" \ | |
125 | --trailer "Acked-by: Johan" >actual && | |
126 | test_cmp expected actual | |
127 | ' | |
128 | ||
76bed78a CC |
129 | test_expect_success 'with config setup' ' |
130 | git config trailer.ack.key "Acked-by: " && | |
131 | cat >expected <<-\EOF && | |
132 | ||
133 | Acked-by: Peff | |
134 | EOF | |
135 | git interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual && | |
136 | test_cmp expected actual && | |
137 | git interpret-trailers --trim-empty --trailer "Acked-by = Peff" empty >actual && | |
138 | test_cmp expected actual && | |
139 | git interpret-trailers --trim-empty --trailer "Acked-by :Peff" empty >actual && | |
140 | test_cmp expected actual | |
141 | ' | |
142 | ||
143 | test_expect_success 'with config setup and ":=" as separators' ' | |
144 | git config trailer.separators ":=" && | |
145 | git config trailer.ack.key "Acked-by= " && | |
146 | cat >expected <<-\EOF && | |
147 | ||
148 | Acked-by= Peff | |
149 | EOF | |
150 | git interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual && | |
151 | test_cmp expected actual && | |
152 | git interpret-trailers --trim-empty --trailer "Acked-by= Peff" empty >actual && | |
153 | test_cmp expected actual && | |
154 | git interpret-trailers --trim-empty --trailer "Acked-by : Peff" empty >actual && | |
155 | test_cmp expected actual | |
156 | ' | |
157 | ||
158 | test_expect_success 'with config setup and "%" as separators' ' | |
159 | git config trailer.separators "%" && | |
160 | cat >expected <<-\EOF && | |
161 | ||
162 | bug% 42 | |
163 | count% 10 | |
164 | bug% 422 | |
165 | EOF | |
166 | git interpret-trailers --trim-empty --trailer "bug = 42" \ | |
167 | --trailer count%10 --trailer "test: stuff" \ | |
168 | --trailer "bug % 422" empty >actual && | |
169 | test_cmp expected actual | |
170 | ' | |
171 | ||
172 | test_expect_success 'with "%" as separators and a message with trailers' ' | |
173 | cat >special_message <<-\EOF && | |
174 | Special Message | |
175 | ||
176 | bug% 42 | |
177 | count% 10 | |
178 | bug% 422 | |
179 | EOF | |
180 | cat >expected <<-\EOF && | |
181 | Special Message | |
182 | ||
183 | bug% 42 | |
184 | count% 10 | |
185 | bug% 422 | |
186 | count% 100 | |
187 | EOF | |
188 | git interpret-trailers --trailer count%100 \ | |
189 | special_message >actual && | |
190 | test_cmp expected actual | |
191 | ' | |
192 | ||
193 | test_expect_success 'with config setup and ":=#" as separators' ' | |
194 | git config trailer.separators ":=#" && | |
195 | git config trailer.bug.key "Bug #" && | |
196 | cat >expected <<-\EOF && | |
197 | ||
198 | Bug #42 | |
199 | EOF | |
200 | git interpret-trailers --trim-empty --trailer "bug = 42" empty >actual && | |
201 | test_cmp expected actual | |
202 | ' | |
203 | ||
204 | test_expect_success 'with commit basic message' ' | |
205 | cat basic_message >expected && | |
206 | echo >>expected && | |
207 | git interpret-trailers <basic_message >actual && | |
208 | test_cmp expected actual | |
209 | ' | |
210 | ||
211 | test_expect_success 'with basic patch' ' | |
212 | cat basic_message >input && | |
213 | cat basic_patch >>input && | |
214 | cat basic_message >expected && | |
215 | echo >>expected && | |
216 | cat basic_patch >>expected && | |
217 | git interpret-trailers <input >actual && | |
218 | test_cmp expected actual | |
219 | ' | |
220 | ||
221 | test_expect_success 'with commit complex message as argument' ' | |
222 | cat complex_message_body complex_message_trailers >complex_message && | |
223 | cat complex_message_body >expected && | |
224 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
225 | Fixes: Z | |
226 | Acked-by= Z | |
227 | Reviewed-by: Z | |
228 | Signed-off-by: Z | |
229 | EOF | |
230 | git interpret-trailers complex_message >actual && | |
231 | test_cmp expected actual | |
232 | ' | |
233 | ||
234 | test_expect_success 'with 2 files arguments' ' | |
235 | cat basic_message >>expected && | |
236 | echo >>expected && | |
237 | cat basic_patch >>expected && | |
238 | git interpret-trailers complex_message input >actual && | |
239 | test_cmp expected actual | |
240 | ' | |
241 | ||
242 | test_expect_success 'with message that has comments' ' | |
3d24a726 | 243 | cat basic_message >message_with_comments && |
76bed78a CC |
244 | sed -e "s/ Z\$/ /" >>message_with_comments <<-\EOF && |
245 | # comment | |
246 | ||
247 | # other comment | |
248 | Cc: Z | |
249 | # yet another comment | |
250 | Reviewed-by: Johan | |
251 | Reviewed-by: Z | |
252 | # last comment | |
253 | ||
254 | EOF | |
255 | cat basic_patch >>message_with_comments && | |
256 | cat basic_message >expected && | |
257 | cat >>expected <<-\EOF && | |
258 | # comment | |
259 | ||
260 | Reviewed-by: Johan | |
261 | Cc: Peff | |
61cfef4c CC |
262 | # last comment |
263 | ||
76bed78a CC |
264 | EOF |
265 | cat basic_patch >>expected && | |
266 | git interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual && | |
267 | test_cmp expected actual | |
268 | ' | |
269 | ||
3d24a726 CC |
270 | test_expect_success 'with message that has an old style conflict block' ' |
271 | cat basic_message >message_with_comments && | |
272 | sed -e "s/ Z\$/ /" >>message_with_comments <<-\EOF && | |
273 | # comment | |
274 | ||
275 | # other comment | |
276 | Cc: Z | |
277 | # yet another comment | |
278 | Reviewed-by: Johan | |
279 | Reviewed-by: Z | |
280 | # last comment | |
281 | ||
282 | Conflicts: | |
283 | ||
284 | EOF | |
285 | cat basic_message >expected && | |
286 | cat >>expected <<-\EOF && | |
287 | # comment | |
288 | ||
289 | Reviewed-by: Johan | |
290 | Cc: Peff | |
291 | # last comment | |
292 | ||
293 | Conflicts: | |
294 | ||
295 | EOF | |
296 | git interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual && | |
297 | test_cmp expected actual | |
298 | ' | |
299 | ||
76bed78a CC |
300 | test_expect_success 'with commit complex message and trailer args' ' |
301 | cat complex_message_body >expected && | |
302 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
303 | Fixes: Z | |
304 | Acked-by= Z | |
305 | Reviewed-by: Z | |
306 | Signed-off-by: Z | |
307 | Acked-by= Peff | |
308 | Bug #42 | |
309 | EOF | |
310 | git interpret-trailers --trailer "ack: Peff" \ | |
311 | --trailer "bug: 42" <complex_message >actual && | |
312 | test_cmp expected actual | |
313 | ' | |
314 | ||
315 | test_expect_success 'with complex patch, args and --trim-empty' ' | |
316 | cat complex_message >complex_patch && | |
317 | cat basic_patch >>complex_patch && | |
318 | cat complex_message_body >expected && | |
319 | cat >>expected <<-\EOF && | |
320 | Acked-by= Peff | |
321 | Bug #42 | |
322 | EOF | |
323 | cat basic_patch >>expected && | |
324 | git interpret-trailers --trim-empty --trailer "ack: Peff" \ | |
325 | --trailer "bug: 42" <complex_patch >actual && | |
326 | test_cmp expected actual | |
327 | ' | |
328 | ||
329 | test_expect_success 'using "where = before"' ' | |
330 | git config trailer.bug.where "before" && | |
331 | cat complex_message_body >expected && | |
332 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
333 | Bug #42 | |
334 | Fixes: Z | |
335 | Acked-by= Z | |
336 | Reviewed-by: Z | |
337 | Signed-off-by: Z | |
338 | Acked-by= Peff | |
339 | EOF | |
340 | git interpret-trailers --trailer "ack: Peff" \ | |
341 | --trailer "bug: 42" complex_message >actual && | |
342 | test_cmp expected actual | |
343 | ' | |
344 | ||
345 | test_expect_success 'using "where = after"' ' | |
346 | git config trailer.ack.where "after" && | |
347 | cat complex_message_body >expected && | |
348 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
349 | Bug #42 | |
350 | Fixes: Z | |
351 | Acked-by= Z | |
352 | Acked-by= Peff | |
353 | Reviewed-by: Z | |
354 | Signed-off-by: Z | |
355 | EOF | |
356 | git interpret-trailers --trailer "ack: Peff" \ | |
357 | --trailer "bug: 42" complex_message >actual && | |
358 | test_cmp expected actual | |
359 | ' | |
360 | ||
361 | test_expect_success 'using "where = end"' ' | |
362 | git config trailer.review.key "Reviewed-by" && | |
363 | git config trailer.review.where "end" && | |
364 | cat complex_message_body >expected && | |
365 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
366 | Fixes: Z | |
367 | Acked-by= Z | |
368 | Acked-by= Peff | |
369 | Reviewed-by: Z | |
370 | Signed-off-by: Z | |
371 | Reviewed-by: Junio | |
372 | Reviewed-by: Johannes | |
373 | EOF | |
374 | git interpret-trailers --trailer "ack: Peff" \ | |
375 | --trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \ | |
376 | complex_message >actual && | |
377 | test_cmp expected actual | |
378 | ' | |
379 | ||
380 | test_expect_success 'using "where = start"' ' | |
381 | git config trailer.review.key "Reviewed-by" && | |
382 | git config trailer.review.where "start" && | |
383 | cat complex_message_body >expected && | |
384 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
385 | Reviewed-by: Johannes | |
386 | Reviewed-by: Junio | |
387 | Fixes: Z | |
388 | Acked-by= Z | |
389 | Acked-by= Peff | |
390 | Reviewed-by: Z | |
391 | Signed-off-by: Z | |
392 | EOF | |
393 | git interpret-trailers --trailer "ack: Peff" \ | |
394 | --trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \ | |
395 | complex_message >actual && | |
396 | test_cmp expected actual | |
397 | ' | |
398 | ||
399 | test_expect_success 'using "where = before" for a token in the middle of the message' ' | |
400 | git config trailer.review.key "Reviewed-by:" && | |
401 | git config trailer.review.where "before" && | |
402 | cat complex_message_body >expected && | |
403 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
404 | Bug #42 | |
405 | Fixes: Z | |
406 | Acked-by= Z | |
407 | Acked-by= Peff | |
408 | Reviewed-by:Johan | |
409 | Reviewed-by: | |
410 | Signed-off-by: Z | |
411 | EOF | |
412 | git interpret-trailers --trailer "ack: Peff" --trailer "bug: 42" \ | |
413 | --trailer "review: Johan" <complex_message >actual && | |
414 | test_cmp expected actual | |
415 | ' | |
416 | ||
417 | test_expect_success 'using "where = before" and --trim-empty' ' | |
418 | cat complex_message_body >expected && | |
419 | cat >>expected <<-\EOF && | |
420 | Bug #46 | |
421 | Bug #42 | |
422 | Acked-by= Peff | |
423 | Reviewed-by:Johan | |
424 | EOF | |
425 | git interpret-trailers --trim-empty --trailer "ack: Peff" \ | |
426 | --trailer "bug: 42" --trailer "review: Johan" \ | |
427 | --trailer "Bug: 46" <complex_message >actual && | |
428 | test_cmp expected actual | |
429 | ' | |
430 | ||
431 | test_expect_success 'the default is "ifExists = addIfDifferentNeighbor"' ' | |
432 | cat complex_message_body >expected && | |
433 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
434 | Bug #42 | |
435 | Fixes: Z | |
436 | Acked-by= Z | |
437 | Acked-by= Peff | |
438 | Acked-by= Junio | |
439 | Acked-by= Peff | |
440 | Reviewed-by: | |
441 | Signed-off-by: Z | |
442 | EOF | |
443 | git interpret-trailers --trailer "ack: Peff" --trailer "review:" \ | |
444 | --trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \ | |
445 | --trailer "ack: Peff" <complex_message >actual && | |
446 | test_cmp expected actual | |
447 | ' | |
448 | ||
449 | test_expect_success 'default "ifExists" is now "addIfDifferent"' ' | |
450 | git config trailer.ifexists "addIfDifferent" && | |
451 | cat complex_message_body >expected && | |
452 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
453 | Bug #42 | |
454 | Fixes: Z | |
455 | Acked-by= Z | |
456 | Acked-by= Peff | |
457 | Acked-by= Junio | |
458 | Reviewed-by: | |
459 | Signed-off-by: Z | |
460 | EOF | |
461 | git interpret-trailers --trailer "ack: Peff" --trailer "review:" \ | |
462 | --trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \ | |
463 | --trailer "ack: Peff" <complex_message >actual && | |
464 | test_cmp expected actual | |
465 | ' | |
466 | ||
467 | test_expect_success 'using "ifExists = addIfDifferent" with "where = end"' ' | |
468 | git config trailer.ack.ifExists "addIfDifferent" && | |
469 | git config trailer.ack.where "end" && | |
470 | cat complex_message_body >expected && | |
471 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
472 | Bug #42 | |
473 | Fixes: Z | |
474 | Acked-by= Z | |
475 | Reviewed-by: | |
476 | Signed-off-by: Z | |
477 | Acked-by= Peff | |
478 | EOF | |
479 | git interpret-trailers --trailer "ack: Peff" --trailer "review:" \ | |
480 | --trailer "bug: 42" --trailer "ack: Peff" \ | |
481 | <complex_message >actual && | |
482 | test_cmp expected actual | |
483 | ' | |
484 | ||
485 | test_expect_success 'using "ifExists = addIfDifferent" with "where = before"' ' | |
486 | git config trailer.ack.ifExists "addIfDifferent" && | |
487 | git config trailer.ack.where "before" && | |
488 | cat complex_message_body >expected && | |
489 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
490 | Bug #42 | |
491 | Fixes: Z | |
492 | Acked-by= Peff | |
493 | Acked-by= Z | |
494 | Reviewed-by: | |
495 | Signed-off-by: Z | |
496 | EOF | |
497 | git interpret-trailers --trailer "ack: Peff" --trailer "review:" \ | |
498 | --trailer "bug: 42" --trailer "ack: Peff" \ | |
499 | <complex_message >actual && | |
500 | test_cmp expected actual | |
501 | ' | |
502 | ||
503 | test_expect_success 'using "ifExists = addIfDifferentNeighbor" with "where = end"' ' | |
504 | git config trailer.ack.ifExists "addIfDifferentNeighbor" && | |
505 | git config trailer.ack.where "end" && | |
506 | cat complex_message_body >expected && | |
507 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
508 | Bug #42 | |
509 | Fixes: Z | |
510 | Acked-by= Z | |
511 | Reviewed-by: | |
512 | Signed-off-by: Z | |
513 | Acked-by= Peff | |
514 | Acked-by= Junio | |
515 | Tested-by: Jakub | |
516 | Acked-by= Junio | |
517 | Acked-by= Peff | |
518 | EOF | |
519 | git interpret-trailers --trailer "ack: Peff" --trailer "review:" \ | |
520 | --trailer "ack: Junio" --trailer "bug: 42" \ | |
521 | --trailer "Tested-by: Jakub" --trailer "ack: Junio" \ | |
522 | --trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual && | |
523 | test_cmp expected actual | |
524 | ' | |
525 | ||
526 | test_expect_success 'using "ifExists = addIfDifferentNeighbor" with "where = after"' ' | |
527 | git config trailer.ack.ifExists "addIfDifferentNeighbor" && | |
528 | git config trailer.ack.where "after" && | |
529 | cat complex_message_body >expected && | |
530 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
531 | Bug #42 | |
532 | Fixes: Z | |
533 | Acked-by= Z | |
534 | Acked-by= Peff | |
535 | Acked-by= Junio | |
536 | Acked-by= Peff | |
537 | Reviewed-by: | |
538 | Signed-off-by: Z | |
539 | Tested-by: Jakub | |
540 | EOF | |
541 | git interpret-trailers --trailer "ack: Peff" --trailer "review:" \ | |
542 | --trailer "ack: Junio" --trailer "bug: 42" \ | |
543 | --trailer "Tested-by: Jakub" --trailer "ack: Junio" \ | |
544 | --trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual && | |
545 | test_cmp expected actual | |
546 | ' | |
547 | ||
548 | test_expect_success 'using "ifExists = addIfDifferentNeighbor" and --trim-empty' ' | |
549 | git config trailer.ack.ifExists "addIfDifferentNeighbor" && | |
550 | cat complex_message_body >expected && | |
551 | cat >>expected <<-\EOF && | |
552 | Bug #42 | |
553 | Acked-by= Peff | |
554 | Acked-by= Junio | |
555 | Acked-by= Peff | |
556 | EOF | |
557 | git interpret-trailers --trim-empty --trailer "ack: Peff" \ | |
558 | --trailer "Acked-by= Peff" --trailer "review:" \ | |
559 | --trailer "ack: Junio" --trailer "bug: 42" \ | |
560 | --trailer "ack: Peff" <complex_message >actual && | |
561 | test_cmp expected actual | |
562 | ' | |
563 | ||
564 | test_expect_success 'using "ifExists = add" with "where = end"' ' | |
565 | git config trailer.ack.ifExists "add" && | |
566 | git config trailer.ack.where "end" && | |
567 | cat complex_message_body >expected && | |
568 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
569 | Bug #42 | |
570 | Fixes: Z | |
571 | Acked-by= Z | |
572 | Reviewed-by: | |
573 | Signed-off-by: Z | |
574 | Acked-by= Peff | |
575 | Acked-by= Peff | |
576 | Tested-by: Jakub | |
577 | Acked-by= Junio | |
578 | Tested-by: Johannes | |
579 | Acked-by= Peff | |
580 | EOF | |
581 | git interpret-trailers --trailer "ack: Peff" \ | |
582 | --trailer "Acked-by= Peff" --trailer "review:" \ | |
583 | --trailer "Tested-by: Jakub" --trailer "ack: Junio" \ | |
584 | --trailer "bug: 42" --trailer "Tested-by: Johannes" \ | |
585 | --trailer "ack: Peff" <complex_message >actual && | |
586 | test_cmp expected actual | |
587 | ' | |
588 | ||
589 | test_expect_success 'using "ifExists = add" with "where = after"' ' | |
590 | git config trailer.ack.ifExists "add" && | |
591 | git config trailer.ack.where "after" && | |
592 | cat complex_message_body >expected && | |
593 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
594 | Bug #42 | |
595 | Fixes: Z | |
596 | Acked-by= Z | |
597 | Acked-by= Peff | |
598 | Acked-by= Peff | |
599 | Acked-by= Junio | |
600 | Acked-by= Peff | |
601 | Reviewed-by: | |
602 | Signed-off-by: Z | |
603 | EOF | |
604 | git interpret-trailers --trailer "ack: Peff" \ | |
605 | --trailer "Acked-by= Peff" --trailer "review:" \ | |
606 | --trailer "ack: Junio" --trailer "bug: 42" \ | |
607 | --trailer "ack: Peff" <complex_message >actual && | |
608 | test_cmp expected actual | |
609 | ' | |
610 | ||
611 | test_expect_success 'using "ifExists = replace"' ' | |
612 | git config trailer.fix.key "Fixes: " && | |
613 | git config trailer.fix.ifExists "replace" && | |
614 | cat complex_message_body >expected && | |
615 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
616 | Bug #42 | |
617 | Acked-by= Z | |
618 | Acked-by= Junio | |
619 | Acked-by= Peff | |
620 | Reviewed-by: | |
621 | Signed-off-by: Z | |
622 | Fixes: 22 | |
623 | EOF | |
624 | git interpret-trailers --trailer "review:" \ | |
625 | --trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \ | |
626 | --trailer "bug: 42" --trailer "ack: Peff" \ | |
627 | <complex_message >actual && | |
628 | test_cmp expected actual | |
629 | ' | |
630 | ||
631 | test_expect_success 'using "ifExists = replace" with "where = after"' ' | |
632 | git config trailer.fix.where "after" && | |
633 | cat complex_message_body >expected && | |
634 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
635 | Bug #42 | |
636 | Fixes: 22 | |
637 | Acked-by= Z | |
638 | Acked-by= Junio | |
639 | Acked-by= Peff | |
640 | Reviewed-by: | |
641 | Signed-off-by: Z | |
642 | EOF | |
643 | git interpret-trailers --trailer "review:" \ | |
644 | --trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \ | |
645 | --trailer "bug: 42" --trailer "ack: Peff" \ | |
646 | <complex_message >actual && | |
647 | test_cmp expected actual | |
648 | ' | |
649 | ||
650 | test_expect_success 'using "ifExists = doNothing"' ' | |
651 | git config trailer.fix.ifExists "doNothing" && | |
652 | cat complex_message_body >expected && | |
653 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
654 | Bug #42 | |
655 | Fixes: Z | |
656 | Acked-by= Z | |
657 | Acked-by= Junio | |
658 | Acked-by= Peff | |
659 | Reviewed-by: | |
660 | Signed-off-by: Z | |
661 | EOF | |
662 | git interpret-trailers --trailer "review:" --trailer "fix=53" \ | |
663 | --trailer "ack: Junio" --trailer "fix=22" \ | |
664 | --trailer "bug: 42" --trailer "ack: Peff" \ | |
665 | <complex_message >actual && | |
666 | test_cmp expected actual | |
667 | ' | |
668 | ||
669 | test_expect_success 'the default is "ifMissing = add"' ' | |
670 | git config trailer.cc.key "Cc: " && | |
671 | git config trailer.cc.where "before" && | |
672 | cat complex_message_body >expected && | |
673 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
674 | Bug #42 | |
675 | Cc: Linus | |
676 | Fixes: Z | |
677 | Acked-by= Z | |
678 | Acked-by= Junio | |
679 | Acked-by= Peff | |
680 | Reviewed-by: | |
681 | Signed-off-by: Z | |
682 | EOF | |
683 | git interpret-trailers --trailer "review:" --trailer "fix=53" \ | |
684 | --trailer "cc=Linus" --trailer "ack: Junio" \ | |
685 | --trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \ | |
686 | <complex_message >actual && | |
687 | test_cmp expected actual | |
688 | ' | |
689 | ||
690 | test_expect_success 'when default "ifMissing" is "doNothing"' ' | |
691 | git config trailer.ifmissing "doNothing" && | |
692 | cat complex_message_body >expected && | |
693 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
694 | Fixes: Z | |
695 | Acked-by= Z | |
696 | Acked-by= Junio | |
697 | Acked-by= Peff | |
698 | Reviewed-by: | |
699 | Signed-off-by: Z | |
700 | EOF | |
701 | git interpret-trailers --trailer "review:" --trailer "fix=53" \ | |
702 | --trailer "cc=Linus" --trailer "ack: Junio" \ | |
703 | --trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \ | |
704 | <complex_message >actual && | |
705 | test_cmp expected actual && | |
706 | git config trailer.ifmissing "add" | |
707 | ' | |
708 | ||
709 | test_expect_success 'using "ifMissing = add" with "where = end"' ' | |
710 | git config trailer.cc.key "Cc: " && | |
711 | git config trailer.cc.where "end" && | |
712 | git config trailer.cc.ifMissing "add" && | |
713 | cat complex_message_body >expected && | |
714 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
715 | Bug #42 | |
716 | Fixes: Z | |
717 | Acked-by= Z | |
718 | Acked-by= Junio | |
719 | Acked-by= Peff | |
720 | Reviewed-by: | |
721 | Signed-off-by: Z | |
722 | Cc: Linus | |
723 | EOF | |
724 | git interpret-trailers --trailer "review:" --trailer "fix=53" \ | |
725 | --trailer "ack: Junio" --trailer "fix=22" \ | |
726 | --trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \ | |
727 | <complex_message >actual && | |
728 | test_cmp expected actual | |
729 | ' | |
730 | ||
731 | test_expect_success 'using "ifMissing = add" with "where = before"' ' | |
732 | git config trailer.cc.key "Cc: " && | |
733 | git config trailer.cc.where "before" && | |
734 | git config trailer.cc.ifMissing "add" && | |
735 | cat complex_message_body >expected && | |
736 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
737 | Cc: Linus | |
738 | Bug #42 | |
739 | Fixes: Z | |
740 | Acked-by= Z | |
741 | Acked-by= Junio | |
742 | Acked-by= Peff | |
743 | Reviewed-by: | |
744 | Signed-off-by: Z | |
745 | EOF | |
746 | git interpret-trailers --trailer "review:" --trailer "fix=53" \ | |
747 | --trailer "ack: Junio" --trailer "fix=22" \ | |
748 | --trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \ | |
749 | <complex_message >actual && | |
750 | test_cmp expected actual | |
751 | ' | |
752 | ||
753 | test_expect_success 'using "ifMissing = doNothing"' ' | |
754 | git config trailer.cc.ifMissing "doNothing" && | |
755 | cat complex_message_body >expected && | |
756 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
757 | Bug #42 | |
758 | Fixes: Z | |
759 | Acked-by= Z | |
760 | Acked-by= Junio | |
761 | Acked-by= Peff | |
762 | Reviewed-by: | |
763 | Signed-off-by: Z | |
764 | EOF | |
765 | git interpret-trailers --trailer "review:" --trailer "fix=53" \ | |
766 | --trailer "cc=Linus" --trailer "ack: Junio" \ | |
767 | --trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \ | |
768 | <complex_message >actual && | |
769 | test_cmp expected actual | |
770 | ' | |
771 | ||
772 | test_expect_success 'default "where" is now "after"' ' | |
773 | git config trailer.where "after" && | |
774 | git config --unset trailer.ack.where && | |
775 | cat complex_message_body >expected && | |
776 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
777 | Bug #42 | |
778 | Fixes: Z | |
779 | Acked-by= Z | |
780 | Acked-by= Peff | |
781 | Acked-by= Peff | |
782 | Acked-by= Junio | |
783 | Acked-by= Peff | |
784 | Reviewed-by: | |
785 | Signed-off-by: Z | |
786 | Tested-by: Jakub | |
787 | Tested-by: Johannes | |
788 | EOF | |
789 | git interpret-trailers --trailer "ack: Peff" \ | |
790 | --trailer "Acked-by= Peff" --trailer "review:" \ | |
791 | --trailer "Tested-by: Jakub" --trailer "ack: Junio" \ | |
792 | --trailer "bug: 42" --trailer "Tested-by: Johannes" \ | |
793 | --trailer "ack: Peff" <complex_message >actual && | |
794 | test_cmp expected actual | |
795 | ' | |
796 | ||
b9384ff3 CC |
797 | test_expect_success 'with simple command' ' |
798 | git config trailer.sign.key "Signed-off-by: " && | |
799 | git config trailer.sign.where "after" && | |
800 | git config trailer.sign.ifExists "addIfDifferentNeighbor" && | |
801 | git config trailer.sign.command "echo \"A U Thor <author@example.com>\"" && | |
802 | cat complex_message_body >expected && | |
803 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
804 | Fixes: Z | |
805 | Acked-by= Z | |
806 | Reviewed-by: | |
807 | Signed-off-by: Z | |
808 | Signed-off-by: A U Thor <author@example.com> | |
809 | EOF | |
810 | git interpret-trailers --trailer "review:" --trailer "fix=22" \ | |
811 | <complex_message >actual && | |
812 | test_cmp expected actual | |
813 | ' | |
814 | ||
815 | test_expect_success 'with command using commiter information' ' | |
816 | git config trailer.sign.ifExists "addIfDifferent" && | |
817 | git config trailer.sign.command "echo \"\$GIT_COMMITTER_NAME <\$GIT_COMMITTER_EMAIL>\"" && | |
818 | cat complex_message_body >expected && | |
819 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
820 | Fixes: Z | |
821 | Acked-by= Z | |
822 | Reviewed-by: | |
823 | Signed-off-by: Z | |
824 | Signed-off-by: C O Mitter <committer@example.com> | |
825 | EOF | |
826 | git interpret-trailers --trailer "review:" --trailer "fix=22" \ | |
827 | <complex_message >actual && | |
828 | test_cmp expected actual | |
829 | ' | |
830 | ||
831 | test_expect_success 'with command using author information' ' | |
832 | git config trailer.sign.key "Signed-off-by: " && | |
833 | git config trailer.sign.where "after" && | |
834 | git config trailer.sign.ifExists "addIfDifferentNeighbor" && | |
835 | git config trailer.sign.command "echo \"\$GIT_AUTHOR_NAME <\$GIT_AUTHOR_EMAIL>\"" && | |
836 | cat complex_message_body >expected && | |
837 | sed -e "s/ Z\$/ /" >>expected <<-\EOF && | |
838 | Fixes: Z | |
839 | Acked-by= Z | |
840 | Reviewed-by: | |
841 | Signed-off-by: Z | |
842 | Signed-off-by: A U Thor <author@example.com> | |
843 | EOF | |
844 | git interpret-trailers --trailer "review:" --trailer "fix=22" \ | |
845 | <complex_message >actual && | |
846 | test_cmp expected actual | |
847 | ' | |
848 | ||
849 | test_expect_success 'setup a commit' ' | |
850 | echo "Content of the first commit." > a.txt && | |
851 | git add a.txt && | |
852 | git commit -m "Add file a.txt" | |
853 | ' | |
854 | ||
855 | test_expect_success 'with command using $ARG' ' | |
856 | git config trailer.fix.ifExists "replace" && | |
857 | git config trailer.fix.command "git log -1 --oneline --format=\"%h (%s)\" --abbrev-commit --abbrev=14 \$ARG" && | |
858 | FIXED=$(git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14 HEAD) && | |
859 | cat complex_message_body >expected && | |
860 | sed -e "s/ Z\$/ /" >>expected <<-EOF && | |
861 | Fixes: $FIXED | |
862 | Acked-by= Z | |
863 | Reviewed-by: | |
864 | Signed-off-by: Z | |
865 | Signed-off-by: A U Thor <author@example.com> | |
866 | EOF | |
867 | git interpret-trailers --trailer "review:" --trailer "fix=HEAD" \ | |
868 | <complex_message >actual && | |
869 | test_cmp expected actual | |
870 | ' | |
871 | ||
872 | test_expect_success 'with failing command using $ARG' ' | |
873 | git config trailer.fix.ifExists "replace" && | |
874 | git config trailer.fix.command "false \$ARG" && | |
875 | cat complex_message_body >expected && | |
876 | sed -e "s/ Z\$/ /" >>expected <<-EOF && | |
877 | Fixes: Z | |
878 | Acked-by= Z | |
879 | Reviewed-by: | |
880 | Signed-off-by: Z | |
881 | Signed-off-by: A U Thor <author@example.com> | |
882 | EOF | |
883 | git interpret-trailers --trailer "review:" --trailer "fix=HEAD" \ | |
884 | <complex_message >actual && | |
885 | test_cmp expected actual | |
886 | ' | |
887 | ||
888 | test_expect_success 'with empty tokens' ' | |
889 | git config --unset trailer.fix.command && | |
890 | cat >expected <<-EOF && | |
891 | ||
892 | Signed-off-by: A U Thor <author@example.com> | |
893 | EOF | |
894 | git interpret-trailers --trailer ":" --trailer ":test" >actual <<-EOF && | |
895 | EOF | |
896 | test_cmp expected actual | |
897 | ' | |
898 | ||
899 | test_expect_success 'with command but no key' ' | |
900 | git config --unset trailer.sign.key && | |
901 | cat >expected <<-EOF && | |
902 | ||
903 | sign: A U Thor <author@example.com> | |
904 | EOF | |
905 | git interpret-trailers >actual <<-EOF && | |
906 | EOF | |
907 | test_cmp expected actual | |
908 | ' | |
909 | ||
910 | test_expect_success 'with no command and no key' ' | |
911 | git config --unset trailer.review.key && | |
912 | cat >expected <<-EOF && | |
913 | ||
914 | review: Junio | |
915 | sign: A U Thor <author@example.com> | |
916 | EOF | |
917 | git interpret-trailers --trailer "review:Junio" >actual <<-EOF && | |
918 | EOF | |
919 | test_cmp expected actual | |
920 | ' | |
921 | ||
76bed78a | 922 | test_done |