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