(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:'fmt-merge-msg test' span_id:15))} spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:29) (Token id:Id.Lit_Chars val:'\techo one >one &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\tgit add one &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit commit -m "Initial" &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit clone . remote &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\n' span_id:36) (Token id:Id.Lit_Chars val:'\techo uno >one &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\techo dos >two &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit add two &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Second" &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit checkout -b left &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\n' span_id:44) (Token id:Id.Lit_Chars val:'\techo "c1" >one &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Common #1" &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\techo "c2" >one &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Common #2" &&\n' span_id:51) (Token id:Id.Lit_Chars val:'\n' span_id:52) (Token id:Id.Lit_Chars val:'\tgit branch right &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\n' span_id:54) (Token id:Id.Lit_Chars val:'\techo "l3" >two &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:56) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_NAME="Another Committer" \\\n' span_id:57) (Token id: Id.Lit_Chars val: '\tGIT_AUTHOR_NAME="Another Author" git commit -a -m "Left #3" &&\n' span_id: 58 ) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\techo "l4" >two &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:61) (Token id: Id.Lit_Chars val: '\tGIT_COMMITTER_NAME="Another Committer" \\\n' span_id: 62 ) (Token id: Id.Lit_Chars val: '\tGIT_AUTHOR_NAME="Another Author" git commit -a -m "Left #4" &&\n' span_id: 63 ) (Token id:Id.Lit_Chars val:'\n' span_id:64) (Token id:Id.Lit_Chars val:'\techo "l5" >two &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:66) (Token id: Id.Lit_Chars val: '\tGIT_COMMITTER_NAME="Another Committer" \\\n' span_id: 67 ) (Token id: Id.Lit_Chars val: '\tGIT_AUTHOR_NAME="Another Author" git commit -a -m "Left #5" &&\n' span_id: 68 ) (Token id:Id.Lit_Chars val:'\tgit tag tag-l5 &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\n' span_id:70) (Token id:Id.Lit_Chars val:'\tgit checkout right &&\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id:Id.Lit_Chars val:'\techo "r3" >three &&\n' span_id:73) (Token id:Id.Lit_Chars val:'\tgit add three &&\n' span_id:74) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Right #3" &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\tgit tag tag-r3 &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id:Id.Lit_Chars val:'\techo "r4" >three &&\n' span_id:79) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:80) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Right #4" &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\n' span_id:82) (Token id:Id.Lit_Chars val:'\techo "r5" >three &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "Right #5" &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\n' span_id:86) (Token id:Id.Lit_Chars val:'\tgit checkout -b long &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\ti=0 &&\n' span_id:88) (Token id:Id.Lit_Chars val:'\twhile test $i -lt 30\n' span_id:89) (Token id:Id.Lit_Chars val:'\tdo\n' span_id:90) (Token id:Id.Lit_Chars val:'\t\ttest_commit $i one &&\n' span_id:91) (Token id:Id.Lit_Chars val:'\t\ti=$(($i+1))\n' span_id:92) (Token id:Id.Lit_Chars val:'\tdone &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\n' span_id:94) (Token id:Id.Lit_Chars val:'\tgit show-branch &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\n' span_id:96) (Token id:Id.Lit_Chars val:'\tapos="' span_id:97) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:99)) (SQ (Token id:Id.Lit_Chars val:'"\n' span_id:101)) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'message for merging local branch' span_id:108))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) (Token id: Id.Lit_Chars val: '\techo "Merge branch ${apos}left${apos}" >expected &&\n' span_id: 113 ) (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\tgit fetch . left &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\n' span_id:117) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:119) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'message for merging external branch' span_id:126))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:130) (Token id: Id.Lit_Chars val: '\techo "Merge branch ${apos}left${apos} of $(pwd)" >expected &&\n' span_id: 131 ) (Token id:Id.Lit_Chars val:'\n' span_id:132) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:133) (Token id:Id.Lit_Chars val:'\tgit fetch "$(pwd)" left &&\n' span_id:134) (Token id:Id.Lit_Chars val:'\n' span_id:135) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:136) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:137) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'[merge] summary/log configuration' span_id:144))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:148) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:149) (Token id:Id.Lit_Chars val:'\tMerge branch ${apos}left${apos}\n' span_id:150) (Token id:Id.Lit_Chars val:'\n' span_id:151) (Token id:Id.Lit_Chars val:'\t# By Another Author (3) and A U Thor (2)\n' span_id:152) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:153) (Token id:Id.Lit_Chars val:'\t* left:\n' span_id:154) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:155) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:156) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:157) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:158) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:159) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:160) (Token id:Id.Lit_Chars val:'\n' span_id:161) (Token id:Id.Lit_Chars val:'\ttest_config merge.log true &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.summary &&\n' span_id:163) (Token id:Id.Lit_Chars val:'\n' span_id:164) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:165) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\tgit fetch . left &&\n' span_id:167) (Token id:Id.Lit_Chars val:'\n' span_id:168) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual1 &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary true &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\n' span_id:173) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:175) (Token id:Id.Lit_Chars val:'\tgit fetch . left &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\n' span_id:177) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg <.git/FETCH_HEAD >actual2 &&\n' span_id: 178 ) (Token id:Id.Lit_Chars val:'\n' span_id:179) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual1 &&\n' span_id:180) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual2\n' span_id:181) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup FETCH_HEAD' span_id:188))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:192) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\tgit fetch . left\n' span_id:195) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge.log=3 limits shortlog length' span_id:202))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:206) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\tMerge branch ${apos}left${apos}\n' span_id:208) (Token id:Id.Lit_Chars val:'\n' span_id:209) (Token id:Id.Lit_Chars val:'\t# By Another Author (3) and A U Thor (2)\n' span_id:210) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:211) (Token id:Id.Lit_Chars val:'\t* left: (5 commits)\n' span_id:212) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:213) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:214) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:215) (Token id:Id.Lit_Chars val:'\t ...\n' span_id:216) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:217) (Token id:Id.Lit_Chars val:'\n' span_id:218) (Token id: Id.Lit_Chars val: '\tgit -c merge.log=3 fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id: 219 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:220) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge.log=5 shows all 5 commits' span_id:227))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:231) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:232) (Token id:Id.Lit_Chars val:'\tMerge branch ${apos}left${apos}\n' span_id:233) (Token id:Id.Lit_Chars val:'\n' span_id:234) (Token id:Id.Lit_Chars val:'\t# By Another Author (3) and A U Thor (2)\n' span_id:235) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:236) (Token id:Id.Lit_Chars val:'\t* left:\n' span_id:237) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:238) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:239) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:240) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:241) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:242) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:243) (Token id:Id.Lit_Chars val:'\n' span_id:244) (Token id: Id.Lit_Chars val: '\tgit -c merge.log=5 fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id: 245 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:246) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--log=5 with custom comment character' span_id:253))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:257) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\tMerge branch ${apos}left${apos}\n' span_id:259) (Token id:Id.Lit_Chars val:'\n' span_id:260) (Token id:Id.Lit_Chars val:'\tx By Another Author (3) and A U Thor (2)\n' span_id:261) (Token id:Id.Lit_Chars val:'\tx Via Another Committer\n' span_id:262) (Token id:Id.Lit_Chars val:'\t* left:\n' span_id:263) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:264) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:265) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:266) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:267) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:268) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:269) (Token id:Id.Lit_Chars val:'\n' span_id:270) (Token id: Id.Lit_Chars val: '\tgit -c core.commentchar="x" fmt-merge-msg --log=5 <.git/FETCH_HEAD >actual &&\n' span_id: 271 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:272) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge.log=0 disables shortlog' span_id:279))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:283) (Token id: Id.Lit_Chars val: '\techo "Merge branch ${apos}left${apos}" >expected &&\n' span_id: 284 ) (Token id: Id.Lit_Chars val: '\tgit -c merge.log=0 fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id: 285 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:286) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--log=3 limits shortlog length' span_id:293))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:297) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:298) (Token id:Id.Lit_Chars val:'\tMerge branch ${apos}left${apos}\n' span_id:299) (Token id:Id.Lit_Chars val:'\n' span_id:300) (Token id:Id.Lit_Chars val:'\t# By Another Author (3) and A U Thor (2)\n' span_id:301) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:302) (Token id:Id.Lit_Chars val:'\t* left: (5 commits)\n' span_id:303) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:304) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:305) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:306) (Token id:Id.Lit_Chars val:'\t ...\n' span_id:307) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:308) (Token id:Id.Lit_Chars val:'\n' span_id:309) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg --log=3 <.git/FETCH_HEAD >actual &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:311) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--log=5 shows all 5 commits' span_id:318))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:322) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\tMerge branch ${apos}left${apos}\n' span_id:324) (Token id:Id.Lit_Chars val:'\n' span_id:325) (Token id:Id.Lit_Chars val:'\t# By Another Author (3) and A U Thor (2)\n' span_id:326) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:327) (Token id:Id.Lit_Chars val:'\t* left:\n' span_id:328) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:329) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:330) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:331) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:332) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:333) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:334) (Token id:Id.Lit_Chars val:'\n' span_id:335) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg --log=5 <.git/FETCH_HEAD >actual &&\n' span_id: 336 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:337) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--no-log disables shortlog' span_id:344))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:348) (Token id: Id.Lit_Chars val: '\techo "Merge branch ${apos}left${apos}" >expected &&\n' span_id: 349 ) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg --no-log <.git/FETCH_HEAD >actual &&\n' span_id:350) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:351) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--log=0 disables shortlog' span_id:358))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:362) (Token id: Id.Lit_Chars val: '\techo "Merge branch ${apos}left${apos}" >expected &&\n' span_id: 363 ) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg --no-log <.git/FETCH_HEAD >actual &&\n' span_id:364) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:365) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'fmt-merge-msg -m' span_id:372))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:376) (Token id:Id.Lit_Chars val:'\techo "Sync with left" >expected &&\n' span_id:377) (Token id:Id.Lit_Chars val:'\tcat >expected.log <<-EOF &&\n' span_id:378) (Token id:Id.Lit_Chars val:'\tSync with left\n' span_id:379) (Token id:Id.Lit_Chars val:'\n' span_id:380) (Token id: Id.Lit_Chars val: '\t# By Another Author (3) and A U Thor (2)\n' span_id: 381 ) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:382) (Token id:Id.Lit_Chars val:'\t* ${apos}left${apos} of $(pwd):\n' span_id:383) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:384) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:385) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:386) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:387) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:388) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:389) (Token id:Id.Lit_Chars val:'\n' span_id:390) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:391) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.summary &&\n' span_id:392) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\tgit fetch "$(pwd)" left &&\n' span_id:394) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg -m "Sync with left" <.git/FETCH_HEAD >actual &&\n' span_id: 395 ) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg --log -m "Sync with left" \\\n' span_id:396) (Token id: Id.Lit_Chars val: '\t\t\t\t\t<.git/FETCH_HEAD >actual.log &&\n' span_id: 397 ) (Token id:Id.Lit_Chars val:'\ttest_config merge.log true &&\n' span_id:398) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg -m "Sync with left" \\\n' span_id: 399 ) (Token id:Id.Lit_Chars val:'\t\t\t\t\t<.git/FETCH_HEAD >actual.log-config &&\n' span_id:400) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg --no-log -m "Sync with left" \\\n' span_id: 401 ) (Token id:Id.Lit_Chars val:'\t\t\t\t\t<.git/FETCH_HEAD >actual.nolog &&\n' span_id:402) (Token id:Id.Lit_Chars val:'\n' span_id:403) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:404) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.log actual.log &&\n' span_id:405) (Token id:Id.Lit_Chars val:'\ttest_cmp expected.log actual.log-config &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual.nolog\n' span_id:407) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: expected shortlog for two branches' span_id:414))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:418) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF\n' span_id:419) (Token id: Id.Lit_Chars val: '\tMerge branches ${apos}left${apos} and ${apos}right${apos}\n' span_id: 420 ) (Token id:Id.Lit_Chars val:'\n' span_id:421) (Token id: Id.Lit_Chars val: '\t# By Another Author (3) and A U Thor (2)\n' span_id: 422 ) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:423) (Token id:Id.Lit_Chars val:'\t* left:\n' span_id:424) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:425) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:426) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:427) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:428) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:429) (Token id:Id.Lit_Chars val:'\n' span_id:430) (Token id:Id.Lit_Chars val:'\t* right:\n' span_id:431) (Token id:Id.Lit_Chars val:'\t Right #5\n' span_id:432) (Token id:Id.Lit_Chars val:'\t Right #4\n' span_id:433) (Token id:Id.Lit_Chars val:'\t Right #3\n' span_id:434) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:435) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:436) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:437) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'shortlog for two branches' span_id:444))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:448) (Token id:Id.Lit_Chars val:'\ttest_config merge.log true &&\n' span_id:449) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.summary &&\n' span_id:450) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:451) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:452) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:453) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual1 &&\n' span_id:454) (Token id:Id.Lit_Chars val:'\n' span_id:455) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:456) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary true &&\n' span_id:457) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:458) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:459) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:460) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg <.git/FETCH_HEAD >actual2 &&\n' span_id: 461 ) (Token id:Id.Lit_Chars val:'\n' span_id:462) (Token id:Id.Lit_Chars val:'\ttest_config merge.log yes &&\n' span_id:463) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.summary &&\n' span_id:464) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:465) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:467) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual3 &&\n' span_id:468) (Token id:Id.Lit_Chars val:'\n' span_id:469) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:470) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:471) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:472) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:473) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:474) (Token id: Id.Lit_Chars val: '\tgit fmt-merge-msg <.git/FETCH_HEAD >actual4 &&\n' span_id: 475 ) (Token id:Id.Lit_Chars val:'\n' span_id:476) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual1 &&\n' span_id:477) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual2 &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual3 &&\n' span_id:479) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual4\n' span_id:480) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg -F' span_id:487))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:491) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:492) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:493) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:494) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:495) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:496) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg -F .git/FETCH_HEAD >actual &&\n' span_id:497) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:498) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg -F in subdirectory' span_id:505))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:509) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:512) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:513) (Token id:Id.Lit_Chars val:'\tgit fetch . left right &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:515) (Token id: Id.Lit_Chars val: '\tcp .git/FETCH_HEAD sub/FETCH_HEAD &&\n' span_id: 516 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:517) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:518) (Token id:Id.Lit_Chars val:'\t\tgit fmt-merge-msg -F FETCH_HEAD >../actual\n' span_id:519) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:520) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:521) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg with nothing to merge' span_id:528))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:532) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:534) (Token id:Id.Lit_Chars val:'\n' span_id:535) (Token id:Id.Lit_Chars val:'\t>empty &&\n' span_id:536) (Token id:Id.Lit_Chars val:'\n' span_id:537) (Token id:Id.Lit_Chars val:'\t(\n' span_id:538) (Token id:Id.Lit_Chars val:'\t\tcd remote &&\n' span_id:539) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b unrelated &&\n' span_id:540) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\t\tgit fetch origin &&\n' span_id:542) (Token id:Id.Lit_Chars val:'\t\tgit fmt-merge-msg <.git/FETCH_HEAD >../actual\n' span_id:543) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\n' span_id:545) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual\n' span_id:546) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg tag' span_id:553))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:557) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:558) (Token id:Id.Lit_Chars val:'\tMerge tag ${apos}tag-r3${apos}\n' span_id:559) (Token id:Id.Lit_Chars val:'\n' span_id:560) (Token id:Id.Lit_Chars val:'\t* tag ${apos}tag-r3${apos}:\n' span_id:561) (Token id:Id.Lit_Chars val:'\t Right #3\n' span_id:562) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:563) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:564) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:565) (Token id:Id.Lit_Chars val:'\n' span_id:566) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:567) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:568) (Token id:Id.Lit_Chars val:'\n' span_id:569) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:570) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:571) (Token id:Id.Lit_Chars val:'\tgit fetch . tag tag-r3 &&\n' span_id:572) (Token id:Id.Lit_Chars val:'\n' span_id:573) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:574) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:575) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg two tags' span_id:582))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:586) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:587) (Token id: Id.Lit_Chars val: '\tMerge tags ${apos}tag-r3${apos} and ${apos}tag-l5${apos}\n' span_id: 588 ) (Token id:Id.Lit_Chars val:'\n' span_id:589) (Token id:Id.Lit_Chars val:'\t* tag ${apos}tag-r3${apos}:\n' span_id:590) (Token id:Id.Lit_Chars val:'\t Right #3\n' span_id:591) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:592) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:593) (Token id:Id.Lit_Chars val:'\n' span_id:594) (Token id: Id.Lit_Chars val: '\t# By Another Author (3) and A U Thor (2)\n' span_id: 595 ) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:596) (Token id:Id.Lit_Chars val:'\t* tag ${apos}tag-l5${apos}:\n' span_id:597) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:598) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:599) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:600) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:601) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:602) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:603) (Token id:Id.Lit_Chars val:'\n' span_id:604) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:605) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:606) (Token id:Id.Lit_Chars val:'\n' span_id:607) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:608) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:609) (Token id:Id.Lit_Chars val:'\tgit fetch . tag tag-r3 tag tag-l5 &&\n' span_id:610) (Token id:Id.Lit_Chars val:'\n' span_id:611) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:612) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:613) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg tag and branch' span_id:620))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:624) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:625) (Token id: Id.Lit_Chars val: '\tMerge branch ${apos}left${apos}, tag ${apos}tag-r3${apos}\n' span_id: 626 ) (Token id:Id.Lit_Chars val:'\n' span_id:627) (Token id:Id.Lit_Chars val:'\t* tag ${apos}tag-r3${apos}:\n' span_id:628) (Token id:Id.Lit_Chars val:'\t Right #3\n' span_id:629) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:630) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:631) (Token id:Id.Lit_Chars val:'\n' span_id:632) (Token id: Id.Lit_Chars val: '\t# By Another Author (3) and A U Thor (2)\n' span_id: 633 ) (Token id:Id.Lit_Chars val:'\t# Via Another Committer\n' span_id:634) (Token id:Id.Lit_Chars val:'\t* left:\n' span_id:635) (Token id:Id.Lit_Chars val:'\t Left #5\n' span_id:636) (Token id:Id.Lit_Chars val:'\t Left #4\n' span_id:637) (Token id:Id.Lit_Chars val:'\t Left #3\n' span_id:638) (Token id:Id.Lit_Chars val:'\t Common #2\n' span_id:639) (Token id:Id.Lit_Chars val:'\t Common #1\n' span_id:640) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:641) (Token id:Id.Lit_Chars val:'\n' span_id:642) (Token id:Id.Lit_Chars val:'\ttest_unconfig merge.log &&\n' span_id:643) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:644) (Token id:Id.Lit_Chars val:'\n' span_id:645) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:646) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:647) (Token id:Id.Lit_Chars val:'\tgit fetch . tag tag-r3 left &&\n' span_id:648) (Token id:Id.Lit_Chars val:'\n' span_id:649) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:650) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:651) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg lots of commits' span_id:658))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:662) (Token id:Id.Lit_Chars val:'\t{\n' span_id:663) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF &&\n' span_id:664) (Token id:Id.Lit_Chars val:'\t\tMerge branch ${apos}long${apos}\n' span_id:665) (Token id:Id.Lit_Chars val:'\n' span_id:666) (Token id:Id.Lit_Chars val:'\t\t* long: (35 commits)\n' span_id:667) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:668) (Token id:Id.Lit_Chars val:'\n' span_id:669) (Token id:Id.Lit_Chars val:'\t\ti=29 &&\n' span_id:670) (Token id:Id.Lit_Chars val:'\t\twhile test $i -gt 9\n' span_id:671) (Token id:Id.Lit_Chars val:'\t\tdo\n' span_id:672) (Token id:Id.Lit_Chars val:'\t\t\techo " $i" &&\n' span_id:673) (Token id:Id.Lit_Chars val:'\t\t\ti=$(($i-1))\n' span_id:674) (Token id:Id.Lit_Chars val:'\t\tdone &&\n' span_id:675) (Token id:Id.Lit_Chars val:'\t\techo " ..."\n' span_id:676) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:677) (Token id:Id.Lit_Chars val:'\n' span_id:678) (Token id:Id.Lit_Chars val:'\ttest_config merge.summary yes &&\n' span_id:679) (Token id:Id.Lit_Chars val:'\n' span_id:680) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:681) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:682) (Token id:Id.Lit_Chars val:'\tgit fetch . long &&\n' span_id:683) (Token id:Id.Lit_Chars val:'\n' span_id:684) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:685) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:686) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'merge-msg with "merging" an annotated tag' span_id:693))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:697) (Token id:Id.Lit_Chars val:'\ttest_config merge.log true &&\n' span_id:698) (Token id:Id.Lit_Chars val:'\n' span_id:699) (Token id:Id.Lit_Chars val:'\tgit checkout master^0 &&\n' span_id:700) (Token id:Id.Lit_Chars val:'\tgit commit --allow-empty -m "One step ahead" &&\n' span_id:701) (Token id: Id.Lit_Chars val: '\tgit tag -a -m "An annotated one" annote HEAD &&\n' span_id: 702 ) (Token id:Id.Lit_Chars val:'\n' span_id:703) (Token id:Id.Lit_Chars val:'\tgit checkout master &&\n' span_id:704) (Token id:Id.Lit_Chars val:'\tgit fetch . annote &&\n' span_id:705) (Token id:Id.Lit_Chars val:'\n' span_id:706) (Token id:Id.Lit_Chars val:'\tgit fmt-merge-msg <.git/FETCH_HEAD >actual &&\n' span_id:707) (Token id:Id.Lit_Chars val:'\t{\n' span_id:708) (Token id:Id.Lit_Chars val:'\t\tcat <<-\\EOF\n' span_id:709) (Token id:Id.Lit_Chars val:'\t\tMerge tag ' span_id:710) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:712)) (SQ (Token id:Id.Lit_Chars val:annote span_id:714)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:716)) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:718) (Token id:Id.Lit_Chars val:'\n' span_id:719) (Token id:Id.Lit_Chars val:'\t\tAn annotated one\n' span_id:720) (Token id:Id.Lit_Chars val:'\n' span_id:721) (Token id:Id.Lit_Chars val:'\t\t* tag ' span_id:722) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:724)) (SQ (Token id:Id.Lit_Chars val:annote span_id:726)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:728)) (SQ (Token id:Id.Lit_Chars val:':\n' span_id:730) (Token id:Id.Lit_Chars val:'\t\t One step ahead\n' span_id:731) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:732) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:733) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:734) (Token id:Id.Lit_Chars val:'\n' span_id:735) (Token id:Id.Lit_Chars val:'\ttest_when_finished "git reset --hard" &&\n' span_id:736) (Token id:Id.Lit_Chars val:'\tannote=$(git rev-parse annote) &&\n' span_id:737) (Token id:Id.Lit_Chars val:'\tgit merge --no-commit $annote &&\n' span_id:738) (Token id:Id.Lit_Chars val:'\t{\n' span_id:739) (Token id:Id.Lit_Chars val:'\t\tcat <<-EOF\n' span_id:740) (Token id:Id.Lit_Chars val:'\t\tMerge tag ' span_id:741) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:743)) (SQ (Token id:Id.Lit_Chars val:'$annote' span_id:745)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:747)) (SQ (Token id:Id.Lit_Chars val:'\n' span_id:749) (Token id:Id.Lit_Chars val:'\n' span_id:750) (Token id:Id.Lit_Chars val:'\t\tAn annotated one\n' span_id:751) (Token id:Id.Lit_Chars val:'\n' span_id:752) (Token id:Id.Lit_Chars val:'\t\t* tag ' span_id:753) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:755)) (SQ (Token id:Id.Lit_Chars val:'$annote' span_id:757)) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:759)) (SQ (Token id:Id.Lit_Chars val:':\n' span_id:761) (Token id:Id.Lit_Chars val:'\t\t One step ahead\n' span_id:762) (Token id:Id.Lit_Chars val:'\t\tEOF\n' span_id:763) (Token id:Id.Lit_Chars val:'\t} >expected &&\n' span_id:764) (Token id:Id.Lit_Chars val:'\ttest_cmp expected .git/MERGE_MSG\n' span_id:765) ) } ) (C {(test_done)}) ] )