(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_description) op: assign_op.Equal rhs: {(SQ (Token id:Id.Lit_Chars val:'git interpret-trailers' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:34))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:38) (Token id:Id.Lit_Chars val:'\t: >empty &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tcat >basic_message <<-\\EOF &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\t\tsubject\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\t\tbody\n' span_id:43) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:44) (Token id:Id.Lit_Chars val:'\tcat >complex_message_body <<-\\EOF &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\tmy subject\n' span_id:46) (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\t\tmy body which is long\n' span_id:48) (Token id:Id.Lit_Chars val:'\t\tand contains some special\n' span_id:49) (Token id:Id.Lit_Chars val:'\t\tchars like : = ? !\n' span_id:50) (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:52) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >complex_message_trailers <<-\\EOF &&\n' span_id: 53 ) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:54) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Z\n' span_id:55) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:57) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:58) (Token id:Id.Lit_Chars val:'\tcat >basic_patch <<-\\EOF\n' span_id:59) (Token id:Id.Lit_Chars val:'\t\t---\n' span_id:60) (Token id:Id.Lit_Chars val:'\t\t foo.txt | 2 +-\n' span_id:61) (Token id:Id.Lit_Chars val:'\t\t 1 file changed, 1 insertion(+), 1 deletion(-)\n' span_id:62) (Token id:Id.Lit_Chars val:'\n' span_id:63) (Token id:Id.Lit_Chars val:'\t\tdiff --git a/foo.txt b/foo.txt\n' span_id:64) (Token id:Id.Lit_Chars val:'\t\tindex 0353767..1d91aa1 100644\n' span_id:65) (Token id:Id.Lit_Chars val:'\t\t--- a/foo.txt\n' span_id:66) (Token id:Id.Lit_Chars val:'\t\t+++ b/foo.txt\n' span_id:67) (Token id:Id.Lit_Chars val:'\t\t@@ -1,3 +1,3 @@\n' span_id:68) (Token id:Id.Lit_Chars val:'\n' span_id:69) (Token id:Id.Lit_Chars val:'\t\t-bar\n' span_id:70) (Token id:Id.Lit_Chars val:'\t\t+baz\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id:Id.Lit_Chars val:'\t\t--\n' span_id:73) (Token id:Id.Lit_Chars val:'\t\t1.9.rc0.11.ga562ddc\n' span_id:74) (Token id:Id.Lit_Chars val:'\n' span_id:75) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:76) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'without config' span_id:83))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:87) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >expected <<-\\EOF &&\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'\n' span_id:89) (Token id:Id.Lit_Chars val:'\t\tack: Peff\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:91) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Johan\n' span_id:92) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:93) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack = Peff" --trailer "Reviewed-by" \\\n' span_id: 94 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "Acked-by: Johan" empty >actual &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:96) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'without config in another order' span_id:103))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:107) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >expected <<-\\EOF &&\n' span_id: 108 ) (Token id:Id.Lit_Chars val:'\n' span_id:109) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Johan\n' span_id:110) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:111) (Token id:Id.Lit_Chars val:'\t\tack: Peff\n' span_id:112) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:113) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "Acked-by: Johan" --trailer "Reviewed-by" \\\n' span_id: 114 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack = Peff" empty >actual &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:116) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--trim-empty without config' span_id:123))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:128) (Token id:Id.Lit_Chars val:'\n' span_id:129) (Token id:Id.Lit_Chars val:'\t\tack: Peff\n' span_id:130) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Johan\n' span_id:131) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:132) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer ack=Peff \\\n' span_id: 133 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "Reviewed-by" --trailer "Acked-by: Johan" \\\n' span_id: 134 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "sob:" empty >actual &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:136) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with config option on the command line' span_id:143))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:147) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Johan\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Peff\n' span_id:151) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:152) (Token id:Id.Lit_Chars val:'\t{ echo; echo "Acked-by: Johan"; } |\n' span_id:153) (Token id: Id.Lit_Chars val: '\tgit -c "trailer.Acked-by.ifexists=addifdifferent" interpret-trailers \\\n' span_id: 154 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "Reviewed-by: Peff" --trailer "Acked-by: Johan" >actual &&\n' span_id: 155 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:156) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with only a title in the message' span_id:163))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:167) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\t\tarea: change\n' span_id:169) (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Peff\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Johan\n' span_id:172) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:173) (Token id:Id.Lit_Chars val:'\techo "area: change" |\n' span_id:174) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers --trailer "Reviewed-by: Peff" \\\n' span_id:175) (Token id: Id.Lit_Chars val: '\t\t--trailer "Acked-by: Johan" >actual &&\n' span_id: 176 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:177) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with multiline title in the message' span_id:184))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:188) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\t\tplace of\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tcode: change\n' span_id:191) (Token id:Id.Lit_Chars val:'\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Peff\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Johan\n' span_id:194) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:195) (Token id:Id.Lit_Chars val:'\tprintf "%s\\n" "place of" "code: change" |\n' span_id:196) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "Reviewed-by: Peff" \\\n' span_id: 197 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "Acked-by: Johan" >actual &&\n' span_id:198) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:199) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with config setup' span_id:206))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:210) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.key "Acked-by: " &&\n' span_id: 211 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\t\tAcked-by: Peff\n' span_id:214) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:215) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual &&\n' span_id: 216 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:217) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "Acked-by = Peff" empty >actual &&\n' span_id: 218 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:219) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "Acked-by :Peff" empty >actual &&\n' span_id: 220 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:221) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with config setup and ":=" as separators' span_id:228))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:232) (Token id: Id.Lit_Chars val: '\tgit config trailer.separators ":=" &&\n' span_id: 233 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.key "Acked-by= " &&\n' span_id:234) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:235) (Token id:Id.Lit_Chars val:'\n' span_id:236) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:237) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:238) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "ack = Peff" empty >actual &&\n' span_id: 239 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:240) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "Acked-by= Peff" empty >actual &&\n' span_id: 241 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:242) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "Acked-by : Peff" empty >actual &&\n' span_id: 243 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:244) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with config setup and "%" as separators' span_id:251))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:255) (Token id: Id.Lit_Chars val: '\tgit config trailer.separators "%" &&\n' span_id: 256 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\tbug% 42\n' span_id:259) (Token id:Id.Lit_Chars val:'\t\tcount% 10\n' span_id:260) (Token id:Id.Lit_Chars val:'\t\tbug% 422\n' span_id:261) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:262) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "bug = 42" \\\n' span_id: 263 ) (Token id:Id.Lit_Chars val:'\t\t--trailer count%10 --trailer "test: stuff" \\\n' span_id:264) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug % 422" empty >actual &&\n' span_id: 265 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:266) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'with "%" as separators and a message with trailers' span_id: 273 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:277) (Token id:Id.Lit_Chars val:'\tcat >special_message <<-\\EOF &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\t\tSpecial Message\n' span_id:279) (Token id:Id.Lit_Chars val:'\n' span_id:280) (Token id:Id.Lit_Chars val:'\t\tbug% 42\n' span_id:281) (Token id:Id.Lit_Chars val:'\t\tcount% 10\n' span_id:282) (Token id:Id.Lit_Chars val:'\t\tbug% 422\n' span_id:283) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:284) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:285) (Token id:Id.Lit_Chars val:'\t\tSpecial Message\n' span_id:286) (Token id:Id.Lit_Chars val:'\n' span_id:287) (Token id:Id.Lit_Chars val:'\t\tbug% 42\n' span_id:288) (Token id:Id.Lit_Chars val:'\t\tcount% 10\n' span_id:289) (Token id:Id.Lit_Chars val:'\t\tbug% 422\n' span_id:290) (Token id:Id.Lit_Chars val:'\t\tcount% 100\n' span_id:291) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:292) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer count%100 \\\n' span_id: 293 ) (Token id:Id.Lit_Chars val:'\t\tspecial_message >actual &&\n' span_id:294) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:295) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with config setup and ":=#" as separators' span_id:302))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:306) (Token id: Id.Lit_Chars val: '\tgit config trailer.separators ":=#" &&\n' span_id: 307 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.bug.key "Bug #" &&\n' span_id:308) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:309) (Token id:Id.Lit_Chars val:'\n' span_id:310) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:311) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:312) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "bug = 42" empty >actual &&\n' span_id: 313 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:314) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with commit basic message' span_id:321))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) (Token id:Id.Lit_Chars val:'\tcat basic_message >expected &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\techo >>expected &&\n' span_id:327) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers <basic_message >actual &&\n' span_id: 328 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:329) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with basic patch' span_id:336))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id:Id.Lit_Chars val:'\tcat basic_message >input &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>input &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\tcat basic_message >expected &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\techo >>expected &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>expected &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers <input >actual &&\n' span_id:346) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:347) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with commit complex message as argument' span_id:354))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:358) (Token id: Id.Lit_Chars val: '\tcat complex_message_body complex_message_trailers >complex_message &&\n' span_id: 359 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:360) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 361 ) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:362) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:363) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:364) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:365) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:366) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers complex_message >actual &&\n' span_id: 367 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:368) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with 2 files arguments' span_id:375))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:379) (Token id:Id.Lit_Chars val:'\tcat basic_message >>expected &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\techo >>expected &&\n' span_id:381) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>expected &&\n' span_id:382) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers complex_message input >actual &&\n' span_id:383) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:384) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with message that has comments' span_id:391))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:395) (Token id: Id.Lit_Chars val: '\tcat basic_message >message_with_comments &&\n' span_id: 396 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>message_with_comments <<-\\EOF &&\n' span_id:397) (Token id:Id.Lit_Chars val:'\t\t# comment\n' span_id:398) (Token id:Id.Lit_Chars val:'\n' span_id:399) (Token id:Id.Lit_Chars val:'\t\t# other comment\n' span_id:400) (Token id:Id.Lit_Chars val:'\t\tCc: Z\n' span_id:401) (Token id:Id.Lit_Chars val:'\t\t# yet another comment\n' span_id:402) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Johan\n' span_id:403) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:404) (Token id:Id.Lit_Chars val:'\t\t# last comment\n' span_id:405) (Token id:Id.Lit_Chars val:'\n' span_id:406) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:407) (Token id: Id.Lit_Chars val: '\tcat basic_patch >>message_with_comments &&\n' span_id: 408 ) (Token id:Id.Lit_Chars val:'\tcat basic_message >expected &&\n' span_id:409) (Token id:Id.Lit_Chars val:'\tcat >>expected <<-\\EOF &&\n' span_id:410) (Token id:Id.Lit_Chars val:'\t\t# comment\n' span_id:411) (Token id:Id.Lit_Chars val:'\n' span_id:412) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Johan\n' span_id:413) (Token id:Id.Lit_Chars val:'\t\tCc: Peff\n' span_id:414) (Token id:Id.Lit_Chars val:'\t\t# last comment\n' span_id:415) (Token id:Id.Lit_Chars val:'\n' span_id:416) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:417) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>expected &&\n' span_id:418) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&\n' span_id: 419 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:420) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'with message that has an old style conflict block' span_id: 427 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:431) (Token id: Id.Lit_Chars val: '\tcat basic_message >message_with_comments &&\n' span_id: 432 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>message_with_comments <<-\\EOF &&\n' span_id:433) (Token id:Id.Lit_Chars val:'\t\t# comment\n' span_id:434) (Token id:Id.Lit_Chars val:'\n' span_id:435) (Token id:Id.Lit_Chars val:'\t\t# other comment\n' span_id:436) (Token id:Id.Lit_Chars val:'\t\tCc: Z\n' span_id:437) (Token id:Id.Lit_Chars val:'\t\t# yet another comment\n' span_id:438) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Johan\n' span_id:439) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:440) (Token id:Id.Lit_Chars val:'\t\t# last comment\n' span_id:441) (Token id:Id.Lit_Chars val:'\n' span_id:442) (Token id:Id.Lit_Chars val:'\t\tConflicts:\n' span_id:443) (Token id:Id.Lit_Chars val:'\n' span_id:444) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:445) (Token id:Id.Lit_Chars val:'\tcat basic_message >expected &&\n' span_id:446) (Token id:Id.Lit_Chars val:'\tcat >>expected <<-\\EOF &&\n' span_id:447) (Token id:Id.Lit_Chars val:'\t\t# comment\n' span_id:448) (Token id:Id.Lit_Chars val:'\n' span_id:449) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Johan\n' span_id:450) (Token id:Id.Lit_Chars val:'\t\tCc: Peff\n' span_id:451) (Token id:Id.Lit_Chars val:'\t\t# last comment\n' span_id:452) (Token id:Id.Lit_Chars val:'\n' span_id:453) (Token id:Id.Lit_Chars val:'\t\tConflicts:\n' span_id:454) (Token id:Id.Lit_Chars val:'\n' span_id:455) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:456) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "Cc: Peff" message_with_comments >actual &&\n' span_id: 457 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:458) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with commit complex message and trailer args' span_id:465))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:469) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 470 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:471) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:472) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:473) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:474) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:475) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:476) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:477) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:478) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id:479) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug: 42" <complex_message >actual &&\n' span_id: 480 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:481) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with complex patch, args and --trim-empty' span_id:488))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:492) (Token id: Id.Lit_Chars val: '\tcat complex_message >complex_patch &&\n' span_id: 493 ) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>complex_patch &&\n' span_id:494) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 495 ) (Token id:Id.Lit_Chars val:'\tcat >>expected <<-\\EOF &&\n' span_id:496) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:497) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:498) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:499) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>expected &&\n' span_id:500) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "ack: Peff" \\\n' span_id: 501 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" <complex_patch >actual &&\n' span_id:502) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:503) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'in-place editing with basic patch' span_id:510))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:514) (Token id:Id.Lit_Chars val:'\tcat basic_message >message &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>message &&\n' span_id:516) (Token id:Id.Lit_Chars val:'\tcat basic_message >expected &&\n' span_id:517) (Token id:Id.Lit_Chars val:'\techo >>expected &&\n' span_id:518) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>expected &&\n' span_id:519) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers --in-place message &&\n' span_id:520) (Token id:Id.Lit_Chars val:'\ttest_cmp expected message\n' span_id:521) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'in-place editing with additional trailer' span_id:528))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:532) (Token id:Id.Lit_Chars val:'\tcat basic_message >message &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>message &&\n' span_id:534) (Token id:Id.Lit_Chars val:'\tcat basic_message >expected &&\n' span_id:535) (Token id:Id.Lit_Chars val:'\techo >>expected &&\n' span_id:536) (Token id:Id.Lit_Chars val:'\tcat >>expected <<-\\EOF &&\n' span_id:537) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Alice\n' span_id:538) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:539) (Token id:Id.Lit_Chars val:'\tcat basic_patch >>expected &&\n' span_id:540) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "Reviewed-by: Alice" --in-place message &&\n' span_id: 541 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected message\n' span_id:542) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'in-place editing on stdin disallowed' span_id:549))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:553) (Token id: Id.Lit_Chars val: '\ttest_must_fail git interpret-trailers --trailer "Reviewed-by: Alice" --in-place < basic_message\n' span_id: 554 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'in-place editing on non-existing file' span_id:561))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:565) (Token id: Id.Lit_Chars val: '\ttest_must_fail git interpret-trailers --trailer "Reviewed-by: Alice" --in-place nonexisting &&\n' span_id: 566 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing nonexisting\n' span_id:567) ) } ) (C {(test_expect_success)} {(POSIXPERM) (Id.Lit_Comma ',') (SANITY)} {(DQ ("in-place editing doesn't clobber original file on error"))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:582) (Token id:Id.Lit_Chars val:'\tcat basic_message >message &&\n' span_id:583) (Token id:Id.Lit_Chars val:'\tchmod -r message &&\n' span_id:584) (Token id: Id.Lit_Chars val: '\ttest_must_fail git interpret-trailers --trailer "Reviewed-by: Alice" --in-place message &&\n' span_id: 585 ) (Token id:Id.Lit_Chars val:'\tchmod +r message &&\n' span_id:586) (Token id:Id.Lit_Chars val:'\ttest_cmp message basic_message\n' span_id:587) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "where = before"' span_id:594))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:598) (Token id: Id.Lit_Chars val: '\tgit config trailer.bug.where "before" &&\n' span_id: 599 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:600) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 601 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:602) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:603) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:604) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:605) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:606) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:607) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:608) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 609 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" complex_message >actual &&\n' span_id:610) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:611) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "where = after"' span_id:618))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:622) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.where "after" &&\n' span_id: 623 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:624) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 625 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:626) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:627) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:628) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:629) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:630) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:631) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:632) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 633 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" complex_message >actual &&\n' span_id:634) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:635) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "where = end"' span_id:642))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:646) (Token id: Id.Lit_Chars val: '\tgit config trailer.review.key "Reviewed-by" &&\n' span_id: 647 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.review.where "end" &&\n' span_id:648) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 649 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:650) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:651) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:652) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:653) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:654) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:655) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Junio\n' span_id:656) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Johannes\n' span_id:657) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:658) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 659 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \\\n' span_id: 660 ) (Token id:Id.Lit_Chars val:'\t\tcomplex_message >actual &&\n' span_id:661) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:662) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "where = start"' span_id:669))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:673) (Token id: Id.Lit_Chars val: '\tgit config trailer.review.key "Reviewed-by" &&\n' span_id: 674 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.review.where "start" &&\n' span_id:675) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 676 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:677) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Johannes\n' span_id:678) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Junio\n' span_id:679) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:680) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:681) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:682) (Token id:Id.Lit_Chars val:'\t\tReviewed-by: Z\n' span_id:683) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:684) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:685) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 686 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "Reviewed-by: Junio" --trailer "Reviewed-by: Johannes" \\\n' span_id: 687 ) (Token id:Id.Lit_Chars val:'\t\tcomplex_message >actual &&\n' span_id:688) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:689) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "where = before" for a token in the middle of the message' span_id: 696 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:700) (Token id: Id.Lit_Chars val: '\tgit config trailer.review.key "Reviewed-by:" &&\n' span_id: 701 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.review.where "before" &&\n' span_id:702) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 703 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:704) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:705) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:706) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:707) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:708) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:Johan\n' span_id:709) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:710) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:711) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:712) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "bug: 42" \\\n' span_id: 713 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "review: Johan" <complex_message >actual &&\n' span_id:714) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:715) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "where = before" and --trim-empty' span_id:722))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:726) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 727 ) (Token id:Id.Lit_Chars val:'\tcat >>expected <<-\\EOF &&\n' span_id:728) (Token id:Id.Lit_Chars val:'\t\tBug #46\n' span_id:729) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:730) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:731) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:Johan\n' span_id:732) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:733) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "ack: Peff" \\\n' span_id: 734 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" --trailer "review: Johan" \\\n' span_id:735) (Token id: Id.Lit_Chars val: '\t\t--trailer "Bug: 46" <complex_message >actual &&\n' span_id: 736 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:737) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'the default is "ifExists = addIfDifferentNeighbor"' span_id: 744 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:748) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 749 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:750) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:751) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:752) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:753) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:754) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:755) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:756) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:757) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:758) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:759) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n' span_id: 760 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id: 761 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Peff" <complex_message >actual &&\n' span_id:762) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:763) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'default "ifExists" is now "addIfDifferent"' span_id:770))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:774) (Token id: Id.Lit_Chars val: '\tgit config trailer.ifexists "addIfDifferent" &&\n' span_id: 775 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:776) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 777 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:778) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:779) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:780) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:781) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:782) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:783) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:784) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:785) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n' span_id: 786 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "ack: Junio" --trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id: 787 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Peff" <complex_message >actual &&\n' span_id:788) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:789) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "ifExists = addIfDifferent" with "where = end"' span_id: 796 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:800) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "addIfDifferent" &&\n' span_id: 801 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.where "end" &&\n' span_id:802) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 803 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:804) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:805) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:806) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:807) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:808) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:809) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:810) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:811) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n' span_id: 812 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id:813) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:814) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:815) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "ifExists = addIfDifferent" with "where = before"' span_id: 822 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:826) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "addIfDifferent" &&\n' span_id: 827 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.where "before" &&\n' span_id:828) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 829 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:830) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:831) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:832) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:833) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:834) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:835) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:836) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:837) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n' span_id: 838 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id:839) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:840) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:841) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "ifExists = addIfDifferentNeighbor" with "where = end"' span_id: 848 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:852) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "addIfDifferentNeighbor" &&\n' span_id: 853 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.where "end" &&\n' span_id:854) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 855 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:856) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:857) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:858) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:859) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:860) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:861) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:862) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:863) (Token id:Id.Lit_Chars val:'\t\tTested-by: Jakub\n' span_id:864) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:865) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:866) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:867) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n' span_id: 868 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n' span_id:869) (Token id: Id.Lit_Chars val: '\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n' span_id: 870 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual &&\n' span_id: 871 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:872) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "ifExists = addIfDifferentNeighbor" with "where = after"' span_id: 879 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:883) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "addIfDifferentNeighbor" &&\n' span_id: 884 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.where "after" &&\n' span_id:885) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 886 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:887) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:888) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:889) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:890) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:891) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:892) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:893) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:894) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:895) (Token id:Id.Lit_Chars val:'\t\tTested-by: Jakub\n' span_id:896) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:897) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" --trailer "review:" \\\n' span_id: 898 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n' span_id:899) (Token id: Id.Lit_Chars val: '\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n' span_id: 900 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "ack: Junio" --trailer "ack: Peff" <complex_message >actual &&\n' span_id: 901 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:902) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "ifExists = addIfDifferentNeighbor" and --trim-empty' span_id: 909 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:913) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "addIfDifferentNeighbor" &&\n' span_id: 914 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:915) (Token id:Id.Lit_Chars val:'\tcat >>expected <<-\\EOF &&\n' span_id:916) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:917) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:918) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:919) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:920) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:921) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trim-empty --trailer "ack: Peff" \\\n' span_id: 922 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n' span_id:923) (Token id: Id.Lit_Chars val: '\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n' span_id: 924 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Peff" <complex_message >actual &&\n' span_id:925) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:926) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifExists = add" with "where = end"' span_id:933))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:937) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "add" &&\n' span_id: 938 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.where "end" &&\n' span_id:939) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 940 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:941) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:942) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:943) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:944) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:945) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:946) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:947) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:948) (Token id:Id.Lit_Chars val:'\t\tTested-by: Jakub\n' span_id:949) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:950) (Token id:Id.Lit_Chars val:'\t\tTested-by: Johannes\n' span_id:951) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:952) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:953) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 954 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n' span_id:955) (Token id: Id.Lit_Chars val: '\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n' span_id: 956 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug: 42" --trailer "Tested-by: Johannes" \\\n' span_id: 957 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Peff" <complex_message >actual &&\n' span_id:958) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:959) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifExists = add" with "where = after"' span_id:966))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:970) (Token id: Id.Lit_Chars val: '\tgit config trailer.ack.ifExists "add" &&\n' span_id: 971 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.ack.where "after" &&\n' span_id:972) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 973 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:975) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:976) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:977) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:978) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:979) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:980) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:981) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:982) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:983) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:984) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 985 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n' span_id:986) (Token id: Id.Lit_Chars val: '\t\t--trailer "ack: Junio" --trailer "bug: 42" \\\n' span_id: 987 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Peff" <complex_message >actual &&\n' span_id:988) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:989) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifExists = replace"' span_id:996))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1000) (Token id: Id.Lit_Chars val: '\tgit config trailer.fix.key "Fixes: " &&\n' span_id: 1001 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.fix.ifExists "replace" &&\n' span_id:1002) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 1003 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:1004) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1005) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1006) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1007) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1008) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1009) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1010) (Token id:Id.Lit_Chars val:'\t\tFixes: 22\n' span_id:1011) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1012) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" \\\n' span_id: 1013 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \\\n' span_id: 1014 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id:1015) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1016) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1017) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'using "ifExists = replace" with "where = after"' span_id: 1024 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1028) (Token id: Id.Lit_Chars val: '\tgit config trailer.fix.where "after" &&\n' span_id: 1029 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1030) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1031 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1032) (Token id:Id.Lit_Chars val:'\t\tFixes: 22\n' span_id:1033) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1034) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1035) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1036) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1037) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1038) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1039) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers --trailer "review:" \\\n' span_id:1040) (Token id: Id.Lit_Chars val: '\t\t--trailer "fix=53" --trailer "ack: Junio" --trailer "fix=22" \\\n' span_id: 1041 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id:1042) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1043) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1044) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifExists = doNothing"' span_id:1051))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1055) (Token id: Id.Lit_Chars val: '\tgit config trailer.fix.ifExists "doNothing" &&\n' span_id: 1056 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1057) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1058 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1059) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1060) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1061) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1062) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1063) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1064) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1065) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1066) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n' span_id: 1067 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Junio" --trailer "fix=22" \\\n' span_id:1068) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id: 1069 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1070) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1071) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'the default is "ifMissing = add"' span_id:1078))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1082) (Token id: Id.Lit_Chars val: '\tgit config trailer.cc.key "Cc: " &&\n' span_id: 1083 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.cc.where "before" &&\n' span_id:1084) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 1085 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:1086) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1087) (Token id:Id.Lit_Chars val:'\t\tCc: Linus\n' span_id:1088) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1089) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1090) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1091) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1092) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1093) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1094) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1095) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n' span_id: 1096 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "cc=Linus" --trailer "ack: Junio" \\\n' span_id:1097) (Token id: Id.Lit_Chars val: '\t\t--trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id: 1098 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1099) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1100) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'when default "ifMissing" is "doNothing"' span_id:1107))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1111) (Token id: Id.Lit_Chars val: '\tgit config trailer.ifmissing "doNothing" &&\n' span_id: 1112 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1113) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1114 ) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1115) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1116) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1117) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1118) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1119) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1120) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1121) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n' span_id: 1122 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "cc=Linus" --trailer "ack: Junio" \\\n' span_id:1123) (Token id: Id.Lit_Chars val: '\t\t--trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id: 1124 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1125) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:1126) (Token id:Id.Lit_Chars val:'\tgit config trailer.ifmissing "add"\n' span_id:1127) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifMissing = add" with "where = end"' span_id:1134))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1138) (Token id: Id.Lit_Chars val: '\tgit config trailer.cc.key "Cc: " &&\n' span_id: 1139 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.cc.where "end" &&\n' span_id:1140) (Token id: Id.Lit_Chars val: '\tgit config trailer.cc.ifMissing "add" &&\n' span_id: 1141 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1142) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1143 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1144) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1145) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1146) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1147) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1148) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1149) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1150) (Token id:Id.Lit_Chars val:'\t\tCc: Linus\n' span_id:1151) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1152) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n' span_id: 1153 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Junio" --trailer "fix=22" \\\n' span_id:1154) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \\\n' span_id: 1155 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1156) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1157) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifMissing = add" with "where = before"' span_id:1164))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1168) (Token id: Id.Lit_Chars val: '\tgit config trailer.cc.key "Cc: " &&\n' span_id: 1169 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.cc.where "before" &&\n' span_id:1170) (Token id: Id.Lit_Chars val: '\tgit config trailer.cc.ifMissing "add" &&\n' span_id: 1171 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1172) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1173 ) (Token id:Id.Lit_Chars val:'\t\tCc: Linus\n' span_id:1174) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1175) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1176) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1177) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1178) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1179) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1180) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1181) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1182) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n' span_id: 1183 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Junio" --trailer "fix=22" \\\n' span_id:1184) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug: 42" --trailer "cc=Linus" --trailer "ack: Peff" \\\n' span_id: 1185 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1186) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1187) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'using "ifMissing = doNothing"' span_id:1194))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1198) (Token id: Id.Lit_Chars val: '\tgit config trailer.cc.ifMissing "doNothing" &&\n' span_id: 1199 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1200) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1201 ) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1202) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1203) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1204) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1205) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1206) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1207) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1208) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1209) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=53" \\\n' span_id: 1210 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "cc=Linus" --trailer "ack: Junio" \\\n' span_id:1211) (Token id: Id.Lit_Chars val: '\t\t--trailer "fix=22" --trailer "bug: 42" --trailer "ack: Peff" \\\n' span_id: 1212 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1213) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1214) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'default "where" is now "after"' span_id:1221))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1225) (Token id: Id.Lit_Chars val: '\tgit config trailer.where "after" &&\n' span_id: 1226 ) (Token id:Id.Lit_Chars val:'\tgit config --unset trailer.ack.where &&\n' span_id:1227) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 1228 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id:1229) (Token id:Id.Lit_Chars val:'\t\tBug #42\n' span_id:1230) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1231) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1232) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1233) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1234) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Junio\n' span_id:1235) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Peff\n' span_id:1236) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1237) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1238) (Token id:Id.Lit_Chars val:'\t\tTested-by: Jakub\n' span_id:1239) (Token id:Id.Lit_Chars val:'\t\tTested-by: Johannes\n' span_id:1240) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1241) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "ack: Peff" \\\n' span_id: 1242 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "Acked-by= Peff" --trailer "review:" \\\n' span_id:1243) (Token id: Id.Lit_Chars val: '\t\t--trailer "Tested-by: Jakub" --trailer "ack: Junio" \\\n' span_id: 1244 ) (Token id: Id.Lit_Chars val: '\t\t--trailer "bug: 42" --trailer "Tested-by: Johannes" \\\n' span_id: 1245 ) (Token id:Id.Lit_Chars val:'\t\t--trailer "ack: Peff" <complex_message >actual &&\n' span_id:1246) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1247) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with simple command' span_id:1254))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1258) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.key "Signed-off-by: " &&\n' span_id: 1259 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.sign.where "after" &&\n' span_id:1260) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.ifExists "addIfDifferentNeighbor" &&\n' span_id: 1261 ) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.command "echo \\"A U Thor <author@example.com>\\"" &&\n' span_id: 1262 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1263) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1264 ) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1265) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1266) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1267) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1268) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: A U Thor <author@example.com>\n' span_id:1269) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1270) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=22" \\\n' span_id: 1271 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1272) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1273) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with command using commiter information' span_id:1280))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1284) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.ifExists "addIfDifferent" &&\n' span_id: 1285 ) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.command "echo \\"\\$GIT_COMMITTER_NAME <\\$GIT_COMMITTER_EMAIL>\\"" &&\n' span_id: 1286 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1287) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1288 ) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1289) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1290) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1291) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1292) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: C O Mitter <committer@example.com>\n' span_id:1293) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1294) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=22" \\\n' span_id: 1295 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1296) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1297) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with command using author information' span_id:1304))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1308) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.key "Signed-off-by: " &&\n' span_id: 1309 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.sign.where "after" &&\n' span_id:1310) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.ifExists "addIfDifferentNeighbor" &&\n' span_id: 1311 ) (Token id: Id.Lit_Chars val: '\tgit config trailer.sign.command "echo \\"\\$GIT_AUTHOR_NAME <\\$GIT_AUTHOR_EMAIL>\\"" &&\n' span_id: 1312 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1313) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-\\EOF &&\n' span_id: 1314 ) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1315) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1316) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1317) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1318) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: A U Thor <author@example.com>\n' span_id:1319) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1320) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=22" \\\n' span_id: 1321 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1322) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1323) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup a commit' span_id:1330))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1334) (Token id: Id.Lit_Chars val: '\techo "Content of the first commit." > a.txt &&\n' span_id: 1335 ) (Token id:Id.Lit_Chars val:'\tgit add a.txt &&\n' span_id:1336) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add file a.txt"\n' span_id:1337) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with command using $ARG' span_id:1344))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1348) (Token id: Id.Lit_Chars val: '\tgit config trailer.fix.ifExists "replace" &&\n' span_id: 1349 ) (Token id: Id.Lit_Chars val: '\tgit config trailer.fix.command "git log -1 --oneline --format=\\"%h (%s)\\" --abbrev-commit --abbrev=14 \\$ARG" &&\n' span_id: 1350 ) (Token id: Id.Lit_Chars val: '\tFIXED=$(git log -1 --oneline --format="%h (%s)" --abbrev-commit --abbrev=14 HEAD) &&\n' span_id: 1351 ) (Token id:Id.Lit_Chars val:'\tcat complex_message_body >expected &&\n' span_id:1352) (Token id: Id.Lit_Chars val: '\tsed -e "s/ Z\\$/ /" >>expected <<-EOF &&\n' span_id: 1353 ) (Token id:Id.Lit_Chars val:'\t\tFixes: $FIXED\n' span_id:1354) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1355) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1356) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1357) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: A U Thor <author@example.com>\n' span_id:1358) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1359) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=HEAD" \\\n' span_id: 1360 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1361) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1362) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with failing command using $ARG' span_id:1369))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1373) (Token id: Id.Lit_Chars val: '\tgit config trailer.fix.ifExists "replace" &&\n' span_id: 1374 ) (Token id:Id.Lit_Chars val:'\tgit config trailer.fix.command "false \\$ARG" &&\n' span_id:1375) (Token id: Id.Lit_Chars val: '\tcat complex_message_body >expected &&\n' span_id: 1376 ) (Token id:Id.Lit_Chars val:'\tsed -e "s/ Z\\$/ /" >>expected <<-EOF &&\n' span_id:1377) (Token id:Id.Lit_Chars val:'\t\tFixes: Z\n' span_id:1378) (Token id:Id.Lit_Chars val:'\t\tAcked-by= Z\n' span_id:1379) (Token id:Id.Lit_Chars val:'\t\tReviewed-by:\n' span_id:1380) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: Z\n' span_id:1381) (Token id: Id.Lit_Chars val: '\t\tSigned-off-by: A U Thor <author@example.com>\n' span_id: 1382 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1383) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:" --trailer "fix=HEAD" \\\n' span_id: 1384 ) (Token id:Id.Lit_Chars val:'\t\t<complex_message >actual &&\n' span_id:1385) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1386) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with empty tokens' span_id:1393))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1397) (Token id: Id.Lit_Chars val: '\tgit config --unset trailer.fix.command &&\n' span_id: 1398 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1399) (Token id:Id.Lit_Chars val:'\n' span_id:1400) (Token id:Id.Lit_Chars val:'\t\tSigned-off-by: A U Thor <author@example.com>\n' span_id:1401) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1402) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer ":" --trailer ":test" >actual <<-EOF &&\n' span_id: 1403 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1404) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1405) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with command but no key' span_id:1412))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1416) (Token id: Id.Lit_Chars val: '\tgit config --unset trailer.sign.key &&\n' span_id: 1417 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1418) (Token id:Id.Lit_Chars val:'\n' span_id:1419) (Token id:Id.Lit_Chars val:'\t\tsign: A U Thor <author@example.com>\n' span_id:1420) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1421) (Token id:Id.Lit_Chars val:'\tgit interpret-trailers >actual <<-EOF &&\n' span_id:1422) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1423) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1424) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'with no command and no key' span_id:1431))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1435) (Token id: Id.Lit_Chars val: '\tgit config --unset trailer.review.key &&\n' span_id: 1436 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1437) (Token id:Id.Lit_Chars val:'\n' span_id:1438) (Token id:Id.Lit_Chars val:'\t\treview: Junio\n' span_id:1439) (Token id: Id.Lit_Chars val: '\t\tsign: A U Thor <author@example.com>\n' span_id: 1440 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1441) (Token id: Id.Lit_Chars val: '\tgit interpret-trailers --trailer "review:Junio" >actual <<-EOF &&\n' span_id: 1442 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1443) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1444) ) } ) (C {(test_done)}) ] )