trailer: add tests for "git interpret-trailers"

Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>

Christian Couder committed Oct 13, 2014 at 20:16 UTC 76bed78a5829392d4e4dcf21b899d372dd71f408
1 file changed +738
t/t7513-interpret-trailers.sh new
+738
@@ -0,0 +1,738 @@
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
96 + echo "Acked-by: Johan" |
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 +
102 +test_expect_success 'with config setup' '
103 + git config trailer.ack.key "Acked-by: " &&
104 + cat >expected <<-\EOF &&
105 +
106 + Acked-by: Peff
107 + EOF
108 + git interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual &&
109 + test_cmp expected actual &&
110 + git interpret-trailers --trim-empty --trailer "Acked-by = Peff" empty >actual &&
111 + test_cmp expected actual &&
112 + git interpret-trailers --trim-empty --trailer "Acked-by :Peff" empty >actual &&
113 + test_cmp expected actual
114 +'
115 +
116 +test_expect_success 'with config setup and ":=" as separators' '
117 + git config trailer.separators ":=" &&
118 + git config trailer.ack.key "Acked-by= " &&
119 + cat >expected <<-\EOF &&
120 +
121 + Acked-by= Peff
122 + EOF
123 + git interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual &&
124 + test_cmp expected actual &&
125 + git interpret-trailers --trim-empty --trailer "Acked-by= Peff" empty >actual &&
126 + test_cmp expected actual &&
127 + git interpret-trailers --trim-empty --trailer "Acked-by : Peff" empty >actual &&
128 + test_cmp expected actual
129 +'
130 +
131 +test_expect_success 'with config setup and "%" as separators' '
132 + git config trailer.separators "%" &&
133 + cat >expected <<-\EOF &&
134 +
135 + bug% 42
136 + count% 10
137 + bug% 422
138 + EOF
139 + git interpret-trailers --trim-empty --trailer "bug = 42" \
140 + --trailer count%10 --trailer "test: stuff" \
141 + --trailer "bug % 422" empty >actual &&
142 + test_cmp expected actual
143 +'
144 +
145 +test_expect_success 'with "%" as separators and a message with trailers' '
146 + cat >special_message <<-\EOF &&
147 + Special Message
148 +
149 + bug% 42
150 + count% 10
151 + bug% 422
152 + EOF
153 + cat >expected <<-\EOF &&
154 + Special Message
155 +
156 + bug% 42
157 + count% 10
158 + bug% 422
159 + count% 100
160 + EOF
161 + git interpret-trailers --trailer count%100 \
162 + special_message >actual &&
163 + test_cmp expected actual
164 +'
165 +
166 +test_expect_success 'with config setup and ":=#" as separators' '
167 + git config trailer.separators ":=#" &&
168 + git config trailer.bug.key "Bug #" &&
169 + cat >expected <<-\EOF &&
170 +
171 + Bug #42
172 + EOF
173 + git interpret-trailers --trim-empty --trailer "bug = 42" empty >actual &&
174 + test_cmp expected actual
175 +'
176 +
177 +test_expect_success 'with commit basic message' '
178 + cat basic_message >expected &&
179 + echo >>expected &&
180 + git interpret-trailers <basic_message >actual &&
181 + test_cmp expected actual
182 +'
183 +
184 +test_expect_success 'with basic patch' '
185 + cat basic_message >input &&
186 + cat basic_patch >>input &&
187 + cat basic_message >expected &&
188 + echo >>expected &&
189 + cat basic_patch >>expected &&
190 + git interpret-trailers <input >actual &&
191 + test_cmp expected actual
192 +'
193 +
194 +test_expect_success 'with commit complex message as argument' '
195 + cat complex_message_body complex_message_trailers >complex_message &&
196 + cat complex_message_body >expected &&
197 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
198 + Fixes: Z
199 + Acked-by= Z
200 + Reviewed-by: Z
201 + Signed-off-by: Z
202 + EOF
203 + git interpret-trailers complex_message >actual &&
204 + test_cmp expected actual
205 +'
206 +
207 +test_expect_success 'with 2 files arguments' '
208 + cat basic_message >>expected &&
209 + echo >>expected &&
210 + cat basic_patch >>expected &&
211 + git interpret-trailers complex_message input >actual &&
212 + test_cmp expected actual
213 +'
214 +
215 +test_expect_success 'with message that has comments' '
216 + cat basic_message >>message_with_comments &&
217 + sed -e "s/ Z\$/ /" >>message_with_comments <<-\EOF &&
218 + # comment
219 +
220 + # other comment
221 + Cc: Z
222 + # yet another comment
223 + Reviewed-by: Johan
224 + Reviewed-by: Z
225 + # last comment
226 +
227 + EOF
228 + cat basic_patch >>message_with_comments &&
229 + cat basic_message >expected &&
230 + cat >>expected <<-\EOF &&
231 + # comment
232 +
233 + Reviewed-by: Johan
234 + Cc: Peff
235 + EOF
236 + cat basic_patch >>expected &&
237 + git interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&
238 + test_cmp expected actual
239 +'
240 +
241 +test_expect_success 'with commit complex message and trailer args' '
242 + cat complex_message_body >expected &&
243 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
244 + Fixes: Z
245 + Acked-by= Z
246 + Reviewed-by: Z
247 + Signed-off-by: Z
248 + Acked-by= Peff
249 + Bug #42
250 + EOF
251 + git interpret-trailers --trailer "ack: Peff" \
252 + --trailer "bug: 42" <complex_message >actual &&
253 + test_cmp expected actual
254 +'
255 +
256 +test_expect_success 'with complex patch, args and --trim-empty' '
257 + cat complex_message >complex_patch &&
258 + cat basic_patch >>complex_patch &&
259 + cat complex_message_body >expected &&
260 + cat >>expected <<-\EOF &&
261 + Acked-by= Peff
262 + Bug #42
263 + EOF
264 + cat basic_patch >>expected &&
265 + git interpret-trailers --trim-empty --trailer "ack: Peff" \
266 + --trailer "bug: 42" <complex_patch >actual &&
267 + test_cmp expected actual
268 +'
269 +
270 +test_expect_success 'using "where = before"' '
271 + git config trailer.bug.where "before" &&
272 + cat complex_message_body >expected &&
273 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
274 + Bug #42
275 + Fixes: Z
276 + Acked-by= Z
277 + Reviewed-by: Z
278 + Signed-off-by: Z
279 + Acked-by= Peff
280 + EOF
281 + git interpret-trailers --trailer "ack: Peff" \
282 + --trailer "bug: 42" complex_message >actual &&
283 + test_cmp expected actual
284 +'
285 +
286 +test_expect_success 'using "where = after"' '
287 + git config trailer.ack.where "after" &&
288 + cat complex_message_body >expected &&
289 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
290 + Bug #42
291 + Fixes: Z
292 + Acked-by= Z
293 + Acked-by= Peff
294 + Reviewed-by: Z
295 + Signed-off-by: Z
296 + EOF
297 + git interpret-trailers --trailer "ack: Peff" \
298 + --trailer "bug: 42" complex_message >actual &&
299 + test_cmp expected actual
300 +'
301 +
302 +test_expect_success 'using "where = end"' '
303 + git config trailer.review.key "Reviewed-by" &&
304 + git config trailer.review.where "end" &&
305 + cat complex_message_body >expected &&
306 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
307 + Fixes: Z
308 + Acked-by= Z
309 + Acked-by= Peff
310 + Reviewed-by: Z
311 + Signed-off-by: Z
312 + Reviewed-by: Junio
313 + Reviewed-by: Johannes
314 + EOF
315 + git interpret-trailers --trailer "ack: Peff" \
316 + --trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \
317 + complex_message >actual &&
318 + test_cmp expected actual
319 +'
320 +
321 +test_expect_success 'using "where = start"' '
322 + git config trailer.review.key "Reviewed-by" &&
323 + git config trailer.review.where "start" &&
324 + cat complex_message_body >expected &&
325 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
326 + Reviewed-by: Johannes
327 + Reviewed-by: Junio
328 + Fixes: Z
329 + Acked-by= Z
330 + Acked-by= Peff
331 + Reviewed-by: Z
332 + Signed-off-by: Z
333 + EOF
334 + git interpret-trailers --trailer "ack: Peff" \
335 + --trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \
336 + complex_message >actual &&
337 + test_cmp expected actual
338 +'
339 +
340 +test_expect_success 'using "where = before" for a token in the middle of the message' '
341 + git config trailer.review.key "Reviewed-by:" &&
342 + git config trailer.review.where "before" &&
343 + cat complex_message_body >expected &&
344 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
345 + Bug #42
346 + Fixes: Z
347 + Acked-by= Z
348 + Acked-by= Peff
349 + Reviewed-by:Johan
350 + Reviewed-by:
351 + Signed-off-by: Z
352 + EOF
353 + git interpret-trailers --trailer "ack: Peff" --trailer "bug: 42" \
354 + --trailer "review: Johan" <complex_message >actual &&
355 + test_cmp expected actual
356 +'
357 +
358 +test_expect_success 'using "where = before" and --trim-empty' '
359 + cat complex_message_body >expected &&
360 + cat >>expected <<-\EOF &&
361 + Bug #46
362 + Bug #42
363 + Acked-by= Peff
364 + Reviewed-by:Johan
365 + EOF
366 + git interpret-trailers --trim-empty --trailer "ack: Peff" \
367 + --trailer "bug: 42" --trailer "review: Johan" \
368 + --trailer "Bug: 46" <complex_message >actual &&
369 + test_cmp expected actual
370 +'
371 +
372 +test_expect_success 'the default is "ifExists = addIfDifferentNeighbor"' '
373 + cat complex_message_body >expected &&
374 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
375 + Bug #42
376 + Fixes: Z
377 + Acked-by= Z
378 + Acked-by= Peff
379 + Acked-by= Junio
380 + Acked-by= Peff
381 + Reviewed-by:
382 + Signed-off-by: Z
383 + EOF
384 + git interpret-trailers --trailer "ack: Peff" --trailer "review:" \
385 + --trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \
386 + --trailer "ack: Peff" <complex_message >actual &&
387 + test_cmp expected actual
388 +'
389 +
390 +test_expect_success 'default "ifExists" is now "addIfDifferent"' '
391 + git config trailer.ifexists "addIfDifferent" &&
392 + cat complex_message_body >expected &&
393 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
394 + Bug #42
395 + Fixes: Z
396 + Acked-by= Z
397 + Acked-by= Peff
398 + Acked-by= Junio
399 + Reviewed-by:
400 + Signed-off-by: Z
401 + EOF
402 + git interpret-trailers --trailer "ack: Peff" --trailer "review:" \
403 + --trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \
404 + --trailer "ack: Peff" <complex_message >actual &&
405 + test_cmp expected actual
406 +'
407 +
408 +test_expect_success 'using "ifExists = addIfDifferent" with "where = end"' '
409 + git config trailer.ack.ifExists "addIfDifferent" &&
410 + git config trailer.ack.where "end" &&
411 + cat complex_message_body >expected &&
412 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
413 + Bug #42
414 + Fixes: Z
415 + Acked-by= Z
416 + Reviewed-by:
417 + Signed-off-by: Z
418 + Acked-by= Peff
419 + EOF
420 + git interpret-trailers --trailer "ack: Peff" --trailer "review:" \
421 + --trailer "bug: 42" --trailer "ack: Peff" \
422 + <complex_message >actual &&
423 + test_cmp expected actual
424 +'
425 +
426 +test_expect_success 'using "ifExists = addIfDifferent" with "where = before"' '
427 + git config trailer.ack.ifExists "addIfDifferent" &&
428 + git config trailer.ack.where "before" &&
429 + cat complex_message_body >expected &&
430 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
431 + Bug #42
432 + Fixes: Z
433 + Acked-by= Peff
434 + Acked-by= Z
435 + Reviewed-by:
436 + Signed-off-by: Z
437 + EOF
438 + git interpret-trailers --trailer "ack: Peff" --trailer "review:" \
439 + --trailer "bug: 42" --trailer "ack: Peff" \
440 + <complex_message >actual &&
441 + test_cmp expected actual
442 +'
443 +
444 +test_expect_success 'using "ifExists = addIfDifferentNeighbor" with "where = end"' '
445 + git config trailer.ack.ifExists "addIfDifferentNeighbor" &&
446 + git config trailer.ack.where "end" &&
447 + cat complex_message_body >expected &&
448 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
449 + Bug #42
450 + Fixes: Z
451 + Acked-by= Z
452 + Reviewed-by:
453 + Signed-off-by: Z
454 + Acked-by= Peff
455 + Acked-by= Junio
456 + Tested-by: Jakub
457 + Acked-by= Junio
458 + Acked-by= Peff
459 + EOF
460 + git interpret-trailers --trailer "ack: Peff" --trailer "review:" \
461 + --trailer "ack: Junio" --trailer "bug: 42" \
462 + --trailer "Tested-by: Jakub" --trailer "ack: Junio" \
463 + --trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual &&
464 + test_cmp expected actual
465 +'
466 +
467 +test_expect_success 'using "ifExists = addIfDifferentNeighbor" with "where = after"' '
468 + git config trailer.ack.ifExists "addIfDifferentNeighbor" &&
469 + git config trailer.ack.where "after" &&
470 + cat complex_message_body >expected &&
471 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
472 + Bug #42
473 + Fixes: Z
474 + Acked-by= Z
475 + Acked-by= Peff
476 + Acked-by= Junio
477 + Acked-by= Peff
478 + Reviewed-by:
479 + Signed-off-by: Z
480 + Tested-by: Jakub
481 + EOF
482 + git interpret-trailers --trailer "ack: Peff" --trailer "review:" \
483 + --trailer "ack: Junio" --trailer "bug: 42" \
484 + --trailer "Tested-by: Jakub" --trailer "ack: Junio" \
485 + --trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual &&
486 + test_cmp expected actual
487 +'
488 +
489 +test_expect_success 'using "ifExists = addIfDifferentNeighbor" and --trim-empty' '
490 + git config trailer.ack.ifExists "addIfDifferentNeighbor" &&
491 + cat complex_message_body >expected &&
492 + cat >>expected <<-\EOF &&
493 + Bug #42
494 + Acked-by= Peff
495 + Acked-by= Junio
496 + Acked-by= Peff
497 + EOF
498 + git interpret-trailers --trim-empty --trailer "ack: Peff" \
499 + --trailer "Acked-by= Peff" --trailer "review:" \
500 + --trailer "ack: Junio" --trailer "bug: 42" \
501 + --trailer "ack: Peff" <complex_message >actual &&
502 + test_cmp expected actual
503 +'
504 +
505 +test_expect_success 'using "ifExists = add" with "where = end"' '
506 + git config trailer.ack.ifExists "add" &&
507 + git config trailer.ack.where "end" &&
508 + cat complex_message_body >expected &&
509 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
510 + Bug #42
511 + Fixes: Z
512 + Acked-by= Z
513 + Reviewed-by:
514 + Signed-off-by: Z
515 + Acked-by= Peff
516 + Acked-by= Peff
517 + Tested-by: Jakub
518 + Acked-by= Junio
519 + Tested-by: Johannes
520 + Acked-by= Peff
521 + EOF
522 + git interpret-trailers --trailer "ack: Peff" \
523 + --trailer "Acked-by= Peff" --trailer "review:" \
524 + --trailer "Tested-by: Jakub" --trailer "ack: Junio" \
525 + --trailer "bug: 42" --trailer "Tested-by: Johannes" \
526 + --trailer "ack: Peff" <complex_message >actual &&
527 + test_cmp expected actual
528 +'
529 +
530 +test_expect_success 'using "ifExists = add" with "where = after"' '
531 + git config trailer.ack.ifExists "add" &&
532 + git config trailer.ack.where "after" &&
533 + cat complex_message_body >expected &&
534 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
535 + Bug #42
536 + Fixes: Z
537 + Acked-by= Z
538 + Acked-by= Peff
539 + Acked-by= Peff
540 + Acked-by= Junio
541 + Acked-by= Peff
542 + Reviewed-by:
543 + Signed-off-by: Z
544 + EOF
545 + git interpret-trailers --trailer "ack: Peff" \
546 + --trailer "Acked-by= Peff" --trailer "review:" \
547 + --trailer "ack: Junio" --trailer "bug: 42" \
548 + --trailer "ack: Peff" <complex_message >actual &&
549 + test_cmp expected actual
550 +'
551 +
552 +test_expect_success 'using "ifExists = replace"' '
553 + git config trailer.fix.key "Fixes: " &&
554 + git config trailer.fix.ifExists "replace" &&
555 + cat complex_message_body >expected &&
556 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
557 + Bug #42
558 + Acked-by= Z
559 + Acked-by= Junio
560 + Acked-by= Peff
561 + Reviewed-by:
562 + Signed-off-by: Z
563 + Fixes: 22
564 + EOF
565 + git interpret-trailers --trailer "review:" \
566 + --trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \
567 + --trailer "bug: 42" --trailer "ack: Peff" \
568 + <complex_message >actual &&
569 + test_cmp expected actual
570 +'
571 +
572 +test_expect_success 'using "ifExists = replace" with "where = after"' '
573 + git config trailer.fix.where "after" &&
574 + cat complex_message_body >expected &&
575 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
576 + Bug #42
577 + Fixes: 22
578 + Acked-by= Z
579 + Acked-by= Junio
580 + Acked-by= Peff
581 + Reviewed-by:
582 + Signed-off-by: Z
583 + EOF
584 + git interpret-trailers --trailer "review:" \
585 + --trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \
586 + --trailer "bug: 42" --trailer "ack: Peff" \
587 + <complex_message >actual &&
588 + test_cmp expected actual
589 +'
590 +
591 +test_expect_success 'using "ifExists = doNothing"' '
592 + git config trailer.fix.ifExists "doNothing" &&
593 + cat complex_message_body >expected &&
594 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
595 + Bug #42
596 + Fixes: Z
597 + Acked-by= Z
598 + Acked-by= Junio
599 + Acked-by= Peff
600 + Reviewed-by:
601 + Signed-off-by: Z
602 + EOF
603 + git interpret-trailers --trailer "review:" --trailer "fix=53" \
604 + --trailer "ack: Junio" --trailer "fix=22" \
605 + --trailer "bug: 42" --trailer "ack: Peff" \
606 + <complex_message >actual &&
607 + test_cmp expected actual
608 +'
609 +
610 +test_expect_success 'the default is "ifMissing = add"' '
611 + git config trailer.cc.key "Cc: " &&
612 + git config trailer.cc.where "before" &&
613 + cat complex_message_body >expected &&
614 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
615 + Bug #42
616 + Cc: Linus
617 + Fixes: Z
618 + Acked-by= Z
619 + Acked-by= Junio
620 + Acked-by= Peff
621 + Reviewed-by:
622 + Signed-off-by: Z
623 + EOF
624 + git interpret-trailers --trailer "review:" --trailer "fix=53" \
625 + --trailer "cc=Linus" --trailer "ack: Junio" \
626 + --trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \
627 + <complex_message >actual &&
628 + test_cmp expected actual
629 +'
630 +
631 +test_expect_success 'when default "ifMissing" is "doNothing"' '
632 + git config trailer.ifmissing "doNothing" &&
633 + cat complex_message_body >expected &&
634 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
635 + Fixes: Z
636 + Acked-by= Z
637 + Acked-by= Junio
638 + Acked-by= Peff
639 + Reviewed-by:
640 + Signed-off-by: Z
641 + EOF
642 + git interpret-trailers --trailer "review:" --trailer "fix=53" \
643 + --trailer "cc=Linus" --trailer "ack: Junio" \
644 + --trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \
645 + <complex_message >actual &&
646 + test_cmp expected actual &&
647 + git config trailer.ifmissing "add"
648 +'
649 +
650 +test_expect_success 'using "ifMissing = add" with "where = end"' '
651 + git config trailer.cc.key "Cc: " &&
652 + git config trailer.cc.where "end" &&
653 + git config trailer.cc.ifMissing "add" &&
654 + cat complex_message_body >expected &&
655 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
656 + Bug #42
657 + Fixes: Z
658 + Acked-by= Z
659 + Acked-by= Junio
660 + Acked-by= Peff
661 + Reviewed-by:
662 + Signed-off-by: Z
663 + Cc: Linus
664 + EOF
665 + git interpret-trailers --trailer "review:" --trailer "fix=53" \
666 + --trailer "ack: Junio" --trailer "fix=22" \
667 + --trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \
668 + <complex_message >actual &&
669 + test_cmp expected actual
670 +'
671 +
672 +test_expect_success 'using "ifMissing = add" with "where = before"' '
673 + git config trailer.cc.key "Cc: " &&
674 + git config trailer.cc.where "before" &&
675 + git config trailer.cc.ifMissing "add" &&
676 + cat complex_message_body >expected &&
677 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
678 + Cc: Linus
679 + Bug #42
680 + Fixes: Z
681 + Acked-by= Z
682 + Acked-by= Junio
683 + Acked-by= Peff
684 + Reviewed-by:
685 + Signed-off-by: Z
686 + EOF
687 + git interpret-trailers --trailer "review:" --trailer "fix=53" \
688 + --trailer "ack: Junio" --trailer "fix=22" \
689 + --trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \
690 + <complex_message >actual &&
691 + test_cmp expected actual
692 +'
693 +
694 +test_expect_success 'using "ifMissing = doNothing"' '
695 + git config trailer.cc.ifMissing "doNothing" &&
696 + cat complex_message_body >expected &&
697 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
698 + Bug #42
699 + Fixes: Z
700 + Acked-by= Z
701 + Acked-by= Junio
702 + Acked-by= Peff
703 + Reviewed-by:
704 + Signed-off-by: Z
705 + EOF
706 + git interpret-trailers --trailer "review:" --trailer "fix=53" \
707 + --trailer "cc=Linus" --trailer "ack: Junio" \
708 + --trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \
709 + <complex_message >actual &&
710 + test_cmp expected actual
711 +'
712 +
713 +test_expect_success 'default "where" is now "after"' '
714 + git config trailer.where "after" &&
715 + git config --unset trailer.ack.where &&
716 + cat complex_message_body >expected &&
717 + sed -e "s/ Z\$/ /" >>expected <<-\EOF &&
718 + Bug #42
719 + Fixes: Z
720 + Acked-by= Z
721 + Acked-by= Peff
722 + Acked-by= Peff
723 + Acked-by= Junio
724 + Acked-by= Peff
725 + Reviewed-by:
726 + Signed-off-by: Z
727 + Tested-by: Jakub
728 + Tested-by: Johannes
729 + EOF
730 + git interpret-trailers --trailer "ack: Peff" \
731 + --trailer "Acked-by= Peff" --trailer "review:" \
732 + --trailer "Tested-by: Jakub" --trailer "ack: Junio" \
733 + --trailer "bug: 42" --trailer "Tested-by: Johannes" \
734 + --trailer "ack: Peff" <complex_message >actual &&
735 + test_cmp expected actual
736 +'
737 +
738 +test_done