(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 am running' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: messages' span_id:18))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id:Id.Lit_Chars val:'\tcat >msg <<-\\EOF &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tsecond\n' span_id:24) (Token id:Id.Lit_Chars val:'\n' span_id:25) (Token id: Id.Lit_Chars val: '\tLorem ipsum dolor sit amet, consectetuer sadipscing elitr, sed diam nonumy\n' span_id: 26 ) (Token id: Id.Lit_Chars val: '\teirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam\n' span_id: 27 ) (Token id: Id.Lit_Chars val: '\tvoluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita\n' span_id: 28 ) (Token id: Id.Lit_Chars val: '\tkasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem\n' span_id: 29 ) (Token id: Id.Lit_Chars val: '\tipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod\n' span_id: 30 ) (Token id: Id.Lit_Chars val: '\ttempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At\n' span_id: 31 ) (Token id:Id.Lit_Chars val:'\tvero eos et accusam et justo duo dolores et ea rebum.\n' span_id:32) (Token id:Id.Lit_Chars val:'\n' span_id:33) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:34) (Token id:Id.Lit_Chars val:'\tqz_to_tab_space <<-\\EOF >>msg &&\n' span_id:35) (Token id: Id.Lit_Chars val: '\tQDuis autem vel eum iriure dolor in hendrerit in vulputate velit\n' span_id: 36 ) (Token id: Id.Lit_Chars val: '\tQesse molestie consequat, vel illum dolore eu feugiat nulla facilisis\n' span_id: 37 ) (Token id: Id.Lit_Chars val: '\tQat vero eros et accumsan et iusto odio dignissim qui blandit\n' span_id: 38 ) (Token id: Id.Lit_Chars val: '\tQpraesent luptatum zzril delenit augue duis dolore te feugait nulla\n' span_id: 39 ) (Token id:Id.Lit_Chars val:'\tQfacilisi.\n' span_id:40) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:41) (Token id:Id.Lit_Chars val:'\tcat >>msg <<-\\EOF &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\n' span_id:43) (Token id:Id.Lit_Chars val:'\tLorem ipsum dolor sit amet,\n' span_id:44) (Token id: Id.Lit_Chars val: '\tconsectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut\n' span_id: 45 ) (Token id:Id.Lit_Chars val:'\tlaoreet dolore magna aliquam erat volutpat.\n' span_id:46) (Token id:Id.Lit_Chars val:'\n' span_id:47) (Token id:Id.Lit_Chars val:'\t git\n' span_id:48) (Token id:Id.Lit_Chars val:'\t ---\n' span_id:49) (Token id:Id.Lit_Chars val:'\t +++\n' span_id:50) (Token id:Id.Lit_Chars val:'\n' span_id:51) (Token id: Id.Lit_Chars val: '\tUt wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit\n' span_id: 52 ) (Token id: Id.Lit_Chars val: '\tlobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure\n' span_id: 53 ) (Token id: Id.Lit_Chars val: '\tdolor in hendrerit in vulputate velit esse molestie consequat, vel illum\n' span_id: 54 ) (Token id: Id.Lit_Chars val: '\tdolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio\n' span_id: 55 ) (Token id: Id.Lit_Chars val: '\tdignissim qui blandit praesent luptatum zzril delenit augue duis dolore te\n' span_id: 56 ) (Token id:Id.Lit_Chars val:'\tfeugait nulla facilisi.\n' span_id:57) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:58) (Token id:Id.Lit_Chars val:'\n' span_id:59) (Token id:Id.Lit_Chars val:'\tcat >failmail <<-\\EOF &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tFrom foo@example.com Fri May 23 10:43:49 2008\n' span_id:61) (Token id:Id.Lit_Chars val:'\tFrom:\tfoo@example.com\n' span_id:62) (Token id:Id.Lit_Chars val:'\tTo:\tbar@example.com\n' span_id:63) (Token id:Id.Lit_Chars val:'\tSubject: Re: [RFC/PATCH] git-foo.sh\n' span_id:64) (Token id:Id.Lit_Chars val:'\tDate:\tFri, 23 May 2008 05:23:42 +0200\n' span_id:65) (Token id:Id.Lit_Chars val:'\n' span_id:66) (Token id:Id.Lit_Chars val:'\tSometimes we have to find out that there' span_id:67) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:69)) (SQ (Token id:Id.Lit_Chars val:'s nothing left.\n' span_id:71) (Token id:Id.Lit_Chars val:'\n' span_id:72) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:73) (Token id:Id.Lit_Chars val:'\n' span_id:74) (Token id:Id.Lit_Chars val:'\tcat >pine <<-\\EOF &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\tFrom MAILER-DAEMON Fri May 23 10:43:49 2008\n' span_id:76) (Token id:Id.Lit_Chars val:'\tDate: 23 May 2008 05:23:42 +0200\n' span_id:77) (Token id: Id.Lit_Chars val: '\tFrom: Mail System Internal Data <MAILER-DAEMON@example.com>\n' span_id: 78 ) (Token id:Id.Lit_Chars val:'\tSubject: DON' span_id:79) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:81)) (SQ (Token id:Id.Lit_Chars val:'T DELETE THIS MESSAGE -- FOLDER INTERNAL DATA\n' span_id:83) (Token id:Id.Lit_Chars val:'\tMessage-ID: <foo-0001@example.com>\n' span_id:84) (Token id:Id.Lit_Chars val:'\n' span_id:85) (Token id: Id.Lit_Chars val: '\tThis text is part of the internal format of your mail folder, and is not\n' span_id: 86 ) (Token id: Id.Lit_Chars val: '\ta real message. It is created automatically by the mail system software.\n' span_id: 87 ) (Token id: Id.Lit_Chars val: '\tIf deleted, important folder data will be lost, and it will be re-created\n' span_id: 88 ) (Token id:Id.Lit_Chars val:'\twith the data reset to initial values.\n' span_id:89) (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:91) (Token id:Id.Lit_Chars val:'\n' span_id:92) (Token id:Id.Lit_Chars val:'\tcat >scissors-msg <<-\\EOF &&\n' span_id:93) (Token id:Id.Lit_Chars val:'\tTest git-am with scissors line\n' span_id:94) (Token id:Id.Lit_Chars val:'\n' span_id:95) (Token id:Id.Lit_Chars val:'\tThis line should be included in the commit message.\n' span_id:96) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:97) (Token id:Id.Lit_Chars val:'\n' span_id:98) (Token id: Id.Lit_Chars val: '\tcat - scissors-msg >no-scissors-msg <<-\\EOF &&\n' span_id: 99 ) (Token id: Id.Lit_Chars val: '\tThis line should not be included in the commit message with --scissors enabled.\n' span_id: 100 ) (Token id:Id.Lit_Chars val:'\n' span_id:101) (Token id: Id.Lit_Chars val: '\t - - >8 - - remove everything above this line - - >8 - -\n' span_id: 102 ) (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:104) (Token id:Id.Lit_Chars val:'\n' span_id:105) (Token id: Id.Lit_Chars val: '\tsignoff="Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"\n' span_id: 106 ) ) } ) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:115) (Token id:Id.Lit_Chars val:'\techo hello >file &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:118) (Token id:Id.Lit_Chars val:'\tgit commit -m first &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\tgit tag first &&\n' span_id:120) (Token id:Id.Lit_Chars val:'\n' span_id:121) (Token id:Id.Lit_Chars val:'\techo world >>file &&\n' span_id:122) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:124) (Token id:Id.Lit_Chars val:'\tgit commit -s -F msg &&\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit tag second &&\n' span_id:126) (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout first >patch1 &&\n' span_id: 128 ) (Token id:Id.Lit_Chars val:'\t{\n' span_id:129) (Token id: Id.Lit_Chars val: '\t\techo "Message-Id: <1226501681-24923-1-git-send-email-bda@mnsspb.ru>" &&\n' span_id: 130 ) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line One" &&\n' span_id:131) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line Two" &&\n' span_id:132) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line Three" &&\n' span_id:133) (Token id: Id.Lit_Chars val: '\t\tgit format-patch --stdout first | sed -e "1d"\n' span_id: 134 ) (Token id:Id.Lit_Chars val:'\t} > patch1.eml &&\n' span_id:135) (Token id:Id.Lit_Chars val:'\t{\n' span_id:136) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line One" &&\n' span_id:137) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line Two" &&\n' span_id:138) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line Three" &&\n' span_id:139) (Token id: Id.Lit_Chars val: '\t\tgit format-patch --stdout first | sed -e "1d"\n' span_id: 140 ) (Token id:Id.Lit_Chars val:'\t} | append_cr >patch1-crlf.eml &&\n' span_id:141) (Token id:Id.Lit_Chars val:'\t{\n' span_id:142) (Token id:Id.Lit_Chars val:'\t\tprintf "%255s\\\\n" ""\n' span_id:143) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line One" &&\n' span_id:144) (Token id:Id.Lit_Chars val:'\t\techo "X-Fake-Field: Line Two" &&\n' span_id:145) (Token id: Id.Lit_Chars val: '\t\techo "X-Fake-Field: Line Three" &&\n' span_id: 146 ) (Token id:Id.Lit_Chars val:'\t\tgit format-patch --stdout first | sed -e "1d"\n' span_id:147) (Token id:Id.Lit_Chars val:'\t} > patch1-ws.eml &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\t{\n' span_id:149) (Token id:Id.Lit_Chars val:'\t\tsed -ne "1p" msg &&\n' span_id:150) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:151) (Token id: Id.Lit_Chars val: '\t\techo "From: $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" &&\n' span_id: 152 ) (Token id:Id.Lit_Chars val:'\t\techo "Date: $GIT_AUTHOR_DATE" &&\n' span_id:153) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:154) (Token id:Id.Lit_Chars val:'\t\tsed -e "1,2d" msg &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:156) (Token id: Id.Lit_Chars val: '\t\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" &&\n' span_id: 157 ) (Token id:Id.Lit_Chars val:'\t\techo "---" &&\n' span_id:158) (Token id: Id.Lit_Chars val: '\t\tgit diff-tree --no-commit-id --stat -p second\n' span_id: 159 ) (Token id:Id.Lit_Chars val:'\t} >patch1-stgit.eml &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\tmkdir stgit-series &&\n' span_id:161) (Token id:Id.Lit_Chars val:'\tcp patch1-stgit.eml stgit-series/patch &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\t{\n' span_id:163) (Token id: Id.Lit_Chars val: '\t\techo "# This series applies on GIT commit $(git rev-parse first)" &&\n' span_id: 164 ) (Token id:Id.Lit_Chars val:'\t\techo "patch"\n' span_id:165) (Token id:Id.Lit_Chars val:'\t} >stgit-series/series &&\n' span_id:166) (Token id:Id.Lit_Chars val:'\t{\n' span_id:167) (Token id:Id.Lit_Chars val:'\t\techo "# HG changeset patch" &&\n' span_id:168) (Token id:Id.Lit_Chars val:'\t\techo "# User $GIT_AUTHOR_NAME <$GIT_AUTHOR_EMAIL>" &&\n' span_id:169) (Token id:Id.Lit_Chars val:'\t\techo "# Date $test_tick 25200" &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\t\techo "# $(git show --pretty="%aD" -s second)" &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\techo "# Node ID $_z40" &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\t\techo "# Parent $_z40" &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\tcat msg &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:175) (Token id: Id.Lit_Chars val: '\t\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" &&\n' span_id: 176 ) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:177) (Token id: Id.Lit_Chars val: '\t\tgit diff-tree --no-commit-id -p second\n' span_id: 178 ) (Token id:Id.Lit_Chars val:'\t} >patch1-hg.eml &&\n' span_id:179) (Token id:Id.Lit_Chars val:'\n' span_id:180) (Token id:Id.Lit_Chars val:'\n' span_id:181) (Token id: Id.Lit_Chars val: '\techo scissors-file >scissors-file &&\n' span_id: 182 ) (Token id:Id.Lit_Chars val:'\tgit add scissors-file &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\tgit commit -F scissors-msg &&\n' span_id:184) (Token id:Id.Lit_Chars val:'\tgit tag scissors &&\n' span_id:185) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout scissors^ >scissors-patch.eml &&\n' span_id: 186 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:187) (Token id:Id.Lit_Chars val:'\n' span_id:188) (Token id:Id.Lit_Chars val:'\techo no-scissors-file >no-scissors-file &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\tgit add no-scissors-file &&\n' span_id:190) (Token id:Id.Lit_Chars val:'\tgit commit -F no-scissors-msg &&\n' span_id:191) (Token id:Id.Lit_Chars val:'\tgit tag no-scissors &&\n' span_id:192) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout no-scissors^ >no-scissors-patch.eml &&\n' span_id: 193 ) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\n' span_id:195) (Token id:Id.Lit_Chars val:'\tsed -n -e "3,\\$p" msg >file &&\n' span_id:196) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:198) (Token id:Id.Lit_Chars val:'\tgit commit -m third &&\n' span_id:199) (Token id:Id.Lit_Chars val:'\n' span_id:200) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout first >patch2\t&&\n' span_id: 201 ) (Token id:Id.Lit_Chars val:'\n' span_id:202) (Token id:Id.Lit_Chars val:'\tgit checkout -b lorem &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tsed -n -e "11,\\$p" msg >file &&\n' span_id:204) (Token id:Id.Lit_Chars val:'\thead -n 9 msg >>file &&\n' span_id:205) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:206) (Token id:Id.Lit_Chars val:'\tgit commit -a -m "moved stuff" &&\n' span_id:207) (Token id:Id.Lit_Chars val:'\n' span_id:208) (Token id:Id.Lit_Chars val:'\techo goodbye >another &&\n' span_id:209) (Token id:Id.Lit_Chars val:'\tgit add another &&\n' span_id:210) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\tgit commit -m "added another file" &&\n' span_id:212) (Token id:Id.Lit_Chars val:'\n' span_id:213) (Token id:Id.Lit_Chars val:'\tgit format-patch --stdout master >lorem-move.patch &&\n' span_id:214) (Token id: Id.Lit_Chars val: '\tgit format-patch --no-prefix --stdout master >lorem-zero.patch &&\n' span_id: 215 ) (Token id:Id.Lit_Chars val:'\n' span_id:216) (Token id:Id.Lit_Chars val:'\tgit checkout -b rename &&\n' span_id:217) (Token id:Id.Lit_Chars val:'\tgit mv file renamed &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\tgit commit -m "renamed a file" &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\n' span_id:220) (Token id: Id.Lit_Chars val: '\tgit format-patch -M --stdout lorem >rename.patch &&\n' span_id: 221 ) (Token id:Id.Lit_Chars val:'\n' span_id:222) (Token id:Id.Lit_Chars val:'\tgit reset --soft lorem^ &&\n' span_id:223) (Token id:Id.Lit_Chars val:'\tgit commit -m "renamed a file and added another" &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\n' span_id:225) (Token id: Id.Lit_Chars val: '\tgit format-patch -M --stdout lorem^ >rename-add.patch &&\n' span_id: 226 ) (Token id:Id.Lit_Chars val:'\n' span_id:227) (Token id:Id.Lit_Chars val:'\t# reset time\n' span_id:228) (Token id:Id.Lit_Chars val:'\tsane_unset test_tick &&\n' span_id:229) (Token id:Id.Lit_Chars val:'\ttest_tick\n' span_id:230) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am applies patch correctly' span_id:237))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:241) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:244) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\tgit am <patch1 &&\n' span_id:246) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:248) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&\n' span_id: 249 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"\n' span_id: 250 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am fails if index is dirty' span_id:257))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:261) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f dirtyfile" &&\n' span_id: 262 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:263) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:264) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:265) (Token id:Id.Lit_Chars val:'\techo dirtyfile >dirtyfile &&\n' span_id:266) (Token id:Id.Lit_Chars val:'\tgit add dirtyfile &&\n' span_id:267) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am patch1 &&\n' span_id:268) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:269) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev first HEAD\n' span_id:270) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am applies patch e-mail not in a mbox' span_id:277))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:281) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:283) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:284) (Token id:Id.Lit_Chars val:'\tgit am patch1.eml &&\n' span_id:285) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 286 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:287) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&\n' span_id: 288 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"\n' span_id: 289 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am applies patch e-mail not in a mbox with CRLF' span_id:296))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:300) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:301) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:303) (Token id:Id.Lit_Chars val:'\tgit am patch1-crlf.eml &&\n' span_id:304) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 305 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:306) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&\n' span_id: 307 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"\n' span_id: 308 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am applies patch e-mail with preceding whitespace' span_id: 315 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:319) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:320) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:321) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\tgit am patch1-ws.eml &&\n' span_id:323) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 324 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:325) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second)" = "$(git rev-parse HEAD)" &&\n' span_id: 326 ) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse second^)" = "$(git rev-parse HEAD^)"\n' span_id: 327 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am applies stgit patch' span_id:334))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:338) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:339) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:340) (Token id:Id.Lit_Chars val:'\tgit am patch1-stgit.eml &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second^ HEAD^\n' span_id:345) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --patch-format=stgit applies stgit patch' span_id:352))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:358) (Token id: Id.Lit_Chars val: '\tgit am --patch-format=stgit <patch1-stgit.eml &&\n' span_id: 359 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:360) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:361) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:362) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second^ HEAD^\n' span_id:363) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am applies stgit series' span_id:370))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:374) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:375) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:376) (Token id:Id.Lit_Chars val:'\tgit am stgit-series/series &&\n' span_id:377) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:378) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:379) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second^ HEAD^\n' span_id:381) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am applies hg patch' span_id:388))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:392) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:394) (Token id:Id.Lit_Chars val:'\tgit am patch1-hg.eml &&\n' span_id:395) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:396) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:397) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:398) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second^ HEAD^\n' span_id:399) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --patch-format=hg applies hg patch' span_id:406))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:410) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:411) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:412) (Token id: Id.Lit_Chars val: '\tgit am --patch-format=hg <patch1-hg.eml &&\n' span_id: 413 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:414) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:415) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:416) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second^ HEAD^\n' span_id:417) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am with applypatch-msg hook' span_id:424))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:428) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/hooks/applypatch-msg" &&\n' span_id: 429 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:430) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:431) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:432) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/hooks &&\n' span_id:433) (Token id:Id.Lit_Chars val:'\twrite_script .git/hooks/applypatch-msg <<-\\EOF &&\n' span_id:434) (Token id:Id.Lit_Chars val:'\tcat "$1" >actual-msg &&\n' span_id:435) (Token id:Id.Lit_Chars val:'\techo hook-message >"$1"\n' span_id:436) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:437) (Token id:Id.Lit_Chars val:'\tgit am patch1 &&\n' span_id:438) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 439 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:440) (Token id:Id.Lit_Chars val:'\techo hook-message >expected &&\n' span_id:441) (Token id:Id.Lit_Chars val:'\tgit log -1 --format=format:%B >actual &&\n' span_id:442) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:443) (Token id:Id.Lit_Chars val:'\tgit log -1 --format=format:%B second >expected &&\n' span_id:444) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual-msg\n' span_id:445) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am with failing applypatch-msg hook' span_id:452))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:456) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/hooks/applypatch-msg" &&\n' span_id: 457 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:458) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:459) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:460) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/hooks &&\n' span_id:461) (Token id:Id.Lit_Chars val:'\twrite_script .git/hooks/applypatch-msg <<-\\EOF &&\n' span_id:462) (Token id:Id.Lit_Chars val:'\texit 1\n' span_id:463) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:464) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am patch1 &&\n' span_id:465) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:466) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code first &&\n' span_id:467) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev first HEAD\n' span_id:468) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am with pre-applypatch hook' span_id:475))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:479) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/hooks/pre-applypatch" &&\n' span_id: 480 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:481) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:483) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/hooks &&\n' span_id:484) (Token id:Id.Lit_Chars val:'\twrite_script .git/hooks/pre-applypatch <<-\\EOF &&\n' span_id:485) (Token id:Id.Lit_Chars val:'\tgit diff first >diff.actual\n' span_id:486) (Token id:Id.Lit_Chars val:'\texit 0\n' span_id:487) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:488) (Token id:Id.Lit_Chars val:'\tgit am patch1 &&\n' span_id:489) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:490) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:491) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:492) (Token id: Id.Lit_Chars val: '\tgit diff first..second >diff.expected &&\n' span_id: 493 ) (Token id:Id.Lit_Chars val:'\ttest_cmp diff.expected diff.actual\n' span_id:494) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am with failing pre-applypatch hook' span_id:501))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:505) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/hooks/pre-applypatch" &&\n' span_id: 506 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:507) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:508) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/hooks &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\twrite_script .git/hooks/pre-applypatch <<-\\EOF &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\texit 1\n' span_id:512) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:513) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am patch1 &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:515) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:516) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev first HEAD\n' span_id:517) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am with post-applypatch hook' span_id:524))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:528) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/hooks/post-applypatch" &&\n' span_id: 529 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:531) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:532) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/hooks &&\n' span_id:533) (Token id:Id.Lit_Chars val:'\twrite_script .git/hooks/post-applypatch <<-\\EOF &&\n' span_id:534) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >head.actual\n' span_id:535) (Token id:Id.Lit_Chars val:'\tgit diff second >diff.actual\n' span_id:536) (Token id:Id.Lit_Chars val:'\texit 0\n' span_id:537) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:538) (Token id:Id.Lit_Chars val:'\tgit am patch1 &&\n' span_id:539) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:540) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\tgit rev-parse second >head.expected &&\n' span_id:542) (Token id: Id.Lit_Chars val: '\ttest_cmp head.expected head.actual &&\n' span_id: 543 ) (Token id:Id.Lit_Chars val:'\tgit diff second >diff.expected &&\n' span_id:544) (Token id:Id.Lit_Chars val:'\ttest_cmp diff.expected diff.actual\n' span_id:545) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am with failing post-applypatch hook' span_id:552))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:556) (Token id: Id.Lit_Chars val: '\ttest_when_finished "rm -f .git/hooks/post-applypatch" &&\n' span_id: 557 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:558) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:559) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:560) (Token id:Id.Lit_Chars val:'\tmkdir -p .git/hooks &&\n' span_id:561) (Token id:Id.Lit_Chars val:'\twrite_script .git/hooks/post-applypatch <<-\\EOF &&\n' span_id:562) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >head.actual\n' span_id:563) (Token id:Id.Lit_Chars val:'\texit 1\n' span_id:564) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:565) (Token id:Id.Lit_Chars val:'\tgit am patch1 &&\n' span_id:566) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:567) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second &&\n' span_id:568) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:569) (Token id: Id.Lit_Chars val: '\tgit rev-parse second >head.expected &&\n' span_id: 570 ) (Token id:Id.Lit_Chars val:'\ttest_cmp head.expected head.actual\n' span_id:571) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am --scissors cuts the message at the scissors line' span_id: 578 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:582) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:583) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:584) (Token id:Id.Lit_Chars val:'\tgit checkout second &&\n' span_id:585) (Token id:Id.Lit_Chars val:'\tgit am --scissors scissors-patch.eml &&\n' span_id:586) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 587 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code scissors &&\n' span_id:588) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev scissors HEAD\n' span_id:589) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --no-scissors overrides mailinfo.scissors' span_id:596))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:600) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:601) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:602) (Token id:Id.Lit_Chars val:'\tgit checkout second &&\n' span_id:603) (Token id:Id.Lit_Chars val:'\ttest_config mailinfo.scissors true &&\n' span_id:604) (Token id: Id.Lit_Chars val: '\tgit am --no-scissors no-scissors-patch.eml &&\n' span_id: 605 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:606) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code no-scissors &&\n' span_id:607) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev no-scissors HEAD\n' span_id:608) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: new author and committer' span_id:615))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:619) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_NAME="Another Thor" &&\n' span_id:620) (Token id:Id.Lit_Chars val:'\tGIT_AUTHOR_EMAIL="a.thor@example.com" &&\n' span_id:621) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_NAME="Co M Miter" &&\n' span_id:622) (Token id:Id.Lit_Chars val:'\tGIT_COMMITTER_EMAIL="c.miter@example.com" &&\n' span_id:623) (Token id: Id.Lit_Chars val: '\texport GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL\n' span_id: 624 ) ) } ) (command.ShFunction name: compare body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:a) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:637) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(git)} {(cat-file)} {(commit)} {(DQ ($ Id.VSub_Number '$2'))}) (C {(grep)} {(DQ ('^') ($ Id.VSub_Number '$1') (' '))}) ] negated: F ) ] ) ) } spids: [636] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:b) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:663) command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(git)} {(cat-file)} {(commit)} {(DQ ($ Id.VSub_Number '$3'))}) (C {(grep)} {(DQ ('^') ($ Id.VSub_Number '$1') (' '))}) ] negated: F ) ] ) ) } spids: [662] ) ] ) (C {(test)} {(DQ ($ Id.VSub_DollarName '$a'))} {(Id.Lit_Equals '=')} {(DQ ($ Id.VSub_DollarName '$b'))} ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am changes committer and keeps author' span_id:706))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:710) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:711) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:712) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:713) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:714) (Token id:Id.Lit_Chars val:'\tgit am patch2 &&\n' span_id:715) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:716) (Token id: Id.Lit_Chars val: '\ttest "$(git rev-parse master^^)" = "$(git rev-parse HEAD^^)" &&\n' span_id: 717 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code master..HEAD &&\n' span_id:718) (Token id: Id.Lit_Chars val: '\tgit diff --exit-code master^..HEAD^ &&\n' span_id: 719 ) (Token id:Id.Lit_Chars val:'\tcompare author master HEAD &&\n' span_id:720) (Token id:Id.Lit_Chars val:'\tcompare author master^ HEAD^ &&\n' span_id:721) (Token id:Id.Lit_Chars val:'\ttest "$GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" = \\\n' span_id:722) (Token id: Id.Lit_Chars val: '\t "$(git log -1 --pretty=format:"%cn <%ce>" HEAD)"\n' span_id: 723 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --signoff adds Signed-off-by: line' span_id:730))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:734) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:735) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:736) (Token id:Id.Lit_Chars val:'\tgit checkout -b master2 first &&\n' span_id:737) (Token id:Id.Lit_Chars val:'\tgit am --signoff <patch2 &&\n' span_id:738) (Token id: Id.Lit_Chars val: '\tprintf "%s\\n" "$signoff" >expected &&\n' span_id: 739 ) (Token id: Id.Lit_Chars val: '\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >>expected &&\n' span_id: 740 ) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD^ | grep "Signed-off-by:" >actual &&\n' span_id: 741 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:742) (Token id: Id.Lit_Chars val: '\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >expected &&\n' span_id: 743 ) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | grep "Signed-off-by:" >actual &&\n' span_id: 744 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:745) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am stays in branch' span_id:752))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:756) (Token id: Id.Lit_Chars val: '\techo refs/heads/master2 >expected &&\n' span_id: 757 ) (Token id:Id.Lit_Chars val:'\tgit symbolic-ref HEAD >actual &&\n' span_id:758) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:759) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am --signoff does not add Signed-off-by: line if already there' span_id: 766 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:770) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout HEAD^ >patch3 &&\n' span_id: 771 ) (Token id: Id.Lit_Chars val: '\tsed -e "/^Subject/ s,\\[PATCH,Re: Re: Re: & 1/5 v2] [foo," patch3 >patch4 &&\n' span_id: 772 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:773) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:774) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:775) (Token id:Id.Lit_Chars val:'\tgit am --signoff patch4 &&\n' span_id:776) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD >actual &&\n' span_id:777) (Token id: Id.Lit_Chars val: '\ttest $(grep -c "^Signed-off-by:" actual) -eq 1\n' span_id: 778 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am without --keep removes Re: and [PATCH] stuff' span_id:785))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:789) (Token id:Id.Lit_Chars val:'\tgit rev-parse HEAD >expected &&\n' span_id:790) (Token id:Id.Lit_Chars val:'\tgit rev-parse master2 >actual &&\n' span_id:791) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:792) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --keep really keeps the subject' span_id:799))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:803) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:804) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:805) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:806) (Token id:Id.Lit_Chars val:'\tgit am --keep patch4 &&\n' span_id:807) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 808 ) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD >actual &&\n' span_id:809) (Token id: Id.Lit_Chars val: '\tgrep "Re: Re: Re: \\[PATCH 1/5 v2\\] \\[foo\\] third" actual\n' span_id: 810 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am --keep-non-patch really keeps the non-patch part' span_id: 817 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:821) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:822) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:823) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:824) (Token id:Id.Lit_Chars val:'\tgit am --keep-non-patch patch4 &&\n' span_id:825) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 826 ) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD >actual &&\n' span_id:827) (Token id:Id.Lit_Chars val:'\tgrep "^\\[foo\\] third" actual\n' span_id:828) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup am -3' span_id:835))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:839) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:840) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:841) (Token id:Id.Lit_Chars val:'\tgit checkout -b base3way master2 &&\n' span_id:842) (Token id:Id.Lit_Chars val:'\tsed -n -e "3,\\$p" msg >file &&\n' span_id:843) (Token id:Id.Lit_Chars val:'\thead -n 9 msg >>file &&\n' span_id:844) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:845) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:846) (Token id:Id.Lit_Chars val:'\tgit commit -m "copied stuff"\n' span_id:847) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -3 falls back to 3-way merge' span_id:854))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:858) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:859) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:860) (Token id:Id.Lit_Chars val:'\tgit checkout -b lorem2 base3way &&\n' span_id:861) (Token id:Id.Lit_Chars val:'\tgit am -3 lorem-move.patch &&\n' span_id:862) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 863 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code lorem\n' span_id:864) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -3 -p0 can read --no-prefix patch' span_id:871))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:875) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:876) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:877) (Token id:Id.Lit_Chars val:'\tgit checkout -b lorem3 base3way &&\n' span_id:878) (Token id:Id.Lit_Chars val:'\tgit am -3 -p0 lorem-zero.patch &&\n' span_id:879) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 880 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code lorem\n' span_id:881) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am with config am.threeWay falls back to 3-way merge' span_id: 888 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:892) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:893) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:894) (Token id:Id.Lit_Chars val:'\tgit checkout -b lorem4 base3way &&\n' span_id:895) (Token id:Id.Lit_Chars val:'\ttest_config am.threeWay 1 &&\n' span_id:896) (Token id:Id.Lit_Chars val:'\tgit am lorem-move.patch &&\n' span_id:897) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:898) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code lorem\n' span_id:899) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am with config am.threeWay overridden by --no-3way' span_id: 906 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:910) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:911) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:912) (Token id:Id.Lit_Chars val:'\tgit checkout -b lorem5 base3way &&\n' span_id:913) (Token id:Id.Lit_Chars val:'\ttest_config am.threeWay 1 &&\n' span_id:914) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am --no-3way lorem-move.patch &&\n' span_id: 915 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply\n' span_id:916) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am can rename a file' span_id:923))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:927) (Token id:Id.Lit_Chars val:'\tgrep "^rename from" rename.patch &&\n' span_id:928) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:929) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:930) (Token id:Id.Lit_Chars val:'\tgit checkout lorem^0 &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\tgit am rename.patch &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:933) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:934) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code rename\n' span_id:935) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -3 can rename a file' span_id:942))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:946) (Token id:Id.Lit_Chars val:'\tgrep "^rename from" rename.patch &&\n' span_id:947) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:948) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:949) (Token id:Id.Lit_Chars val:'\tgit checkout lorem^0 &&\n' span_id:950) (Token id:Id.Lit_Chars val:'\tgit am -3 rename.patch &&\n' span_id:951) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:952) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:953) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code rename\n' span_id:954) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am -3 can rename a file after falling back to 3-way merge' span_id: 961 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:965) (Token id: Id.Lit_Chars val: '\tgrep "^rename from" rename-add.patch &&\n' span_id: 966 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:967) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:968) (Token id:Id.Lit_Chars val:'\tgit checkout lorem^0 &&\n' span_id:969) (Token id:Id.Lit_Chars val:'\tgit am -3 rename-add.patch &&\n' span_id:970) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:971) (Token id:Id.Lit_Chars val:'\tgit update-index --refresh &&\n' span_id:972) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code rename\n' span_id:973) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -3 -q is quiet' span_id:980))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:984) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:985) (Token id:Id.Lit_Chars val:'\tgit checkout -f lorem2 &&\n' span_id:986) (Token id:Id.Lit_Chars val:'\tgit reset base3way --hard &&\n' span_id:987) (Token id:Id.Lit_Chars val:'\tgit am -3 -q lorem-move.patch >output.out 2>&1 &&\n' span_id:988) (Token id:Id.Lit_Chars val:'\t! test -s output.out\n' span_id:989) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am pauses on conflict' span_id:996))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1000) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1001) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1002) (Token id:Id.Lit_Chars val:'\tgit checkout lorem2^^ &&\n' span_id:1003) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am lorem-move.patch &&\n' span_id:1004) (Token id:Id.Lit_Chars val:'\ttest -d .git/rebase-apply\n' span_id:1005) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --skip works' span_id:1012))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1016) (Token id:Id.Lit_Chars val:'\techo goodbye >expected &&\n' span_id:1017) (Token id:Id.Lit_Chars val:'\tgit am --skip &&\n' span_id:1018) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 1019 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code lorem2^^ -- file &&\n' span_id:1020) (Token id:Id.Lit_Chars val:'\ttest_cmp expected another\n' span_id:1021) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --abort removes a stray directory' span_id:1028))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1032) (Token id:Id.Lit_Chars val:'\tmkdir .git/rebase-apply &&\n' span_id:1033) (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:1034) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply\n' span_id: 1035 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am refuses patches when paused' span_id:1042))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1046) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1047) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1048) (Token id:Id.Lit_Chars val:'\tgit checkout lorem2^^ &&\n' span_id:1049) (Token id:Id.Lit_Chars val:'\n' span_id:1050) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am lorem-move.patch &&\n' span_id: 1051 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:1052) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev lorem2^^ HEAD &&\n' span_id:1053) (Token id:Id.Lit_Chars val:'\n' span_id:1054) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am <lorem-move.patch &&\n' span_id: 1055 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev lorem2^^ HEAD\n' span_id:1057) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --resolved works' span_id:1064))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1068) (Token id:Id.Lit_Chars val:'\techo goodbye >expected &&\n' span_id:1069) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1070) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1071) (Token id:Id.Lit_Chars val:'\tgit checkout lorem2^^ &&\n' span_id:1072) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am lorem-move.patch &&\n' span_id: 1073 ) (Token id:Id.Lit_Chars val:'\ttest -d .git/rebase-apply &&\n' span_id:1074) (Token id:Id.Lit_Chars val:'\techo resolved >>file &&\n' span_id:1075) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1076) (Token id:Id.Lit_Chars val:'\tgit am --resolved &&\n' span_id:1077) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:1078) (Token id:Id.Lit_Chars val:'\ttest_cmp expected another\n' span_id:1079) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --resolved fails if index has no changes' span_id:1086))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1090) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1091) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1092) (Token id:Id.Lit_Chars val:'\tgit checkout lorem2^^ &&\n' span_id:1093) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am lorem-move.patch &&\n' span_id:1094) (Token id: Id.Lit_Chars val: '\ttest_path_is_dir .git/rebase-apply &&\n' span_id: 1095 ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev lorem2^^ HEAD &&\n' span_id:1096) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am --resolved &&\n' span_id: 1097 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:1098) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev lorem2^^ HEAD\n' span_id:1099) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am --resolved fails if index has unmerged entries' span_id: 1106 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1110) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1111) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1112) (Token id:Id.Lit_Chars val:'\tgit checkout second &&\n' span_id:1113) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 lorem-move.patch &&\n' span_id:1114) (Token id: Id.Lit_Chars val: '\ttest_path_is_dir .git/rebase-apply &&\n' span_id: 1115 ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:1116) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am --resolved >err &&\n' span_id: 1117 ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:1118) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev second HEAD &&\n' span_id:1119) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "still have unmerged paths" err\n' span_id:1120) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am takes patches from a Pine mailbox' span_id:1127))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1131) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1132) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1133) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1134) (Token id:Id.Lit_Chars val:'\tcat pine patch1 | git am &&\n' span_id:1135) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 1136 ) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code master^..HEAD\n' span_id:1137) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am fails on mail without patch' span_id:1144))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1148) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1149) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1150) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am <failmail &&\n' span_id:1151) (Token id:Id.Lit_Chars val:'\tgit am --abort &&\n' span_id:1152) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply\n' span_id: 1153 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am fails on empty patch' span_id:1160))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1164) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1165) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1166) (Token id:Id.Lit_Chars val:'\techo "---" >>failmail &&\n' span_id:1167) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am <failmail &&\n' span_id:1168) (Token id:Id.Lit_Chars val:'\tgit am --skip &&\n' span_id:1169) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply\n' span_id:1170) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am works from stdin in subdirectory' span_id:1177))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1181) (Token id:Id.Lit_Chars val:'\trm -fr subdir &&\n' span_id:1182) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1183) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1184) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1185) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1186) (Token id:Id.Lit_Chars val:'\t\tmkdir -p subdir &&\n' span_id:1187) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:1188) (Token id:Id.Lit_Chars val:'\t\tgit am <../patch1\n' span_id:1189) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1190) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second\n' span_id:1191) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am works from file (relative path given) in subdirectory' span_id: 1198 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1202) (Token id:Id.Lit_Chars val:'\trm -fr subdir &&\n' span_id:1203) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1204) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1205) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1206) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1207) (Token id:Id.Lit_Chars val:'\t\tmkdir -p subdir &&\n' span_id:1208) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:1209) (Token id:Id.Lit_Chars val:'\t\tgit am ../patch1\n' span_id:1210) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1211) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second\n' span_id:1212) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'am works from file (absolute path given) in subdirectory' span_id: 1219 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1223) (Token id:Id.Lit_Chars val:'\trm -fr subdir &&\n' span_id:1224) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1225) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1226) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1227) (Token id:Id.Lit_Chars val:'\tP=$(pwd) &&\n' span_id:1228) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1229) (Token id:Id.Lit_Chars val:'\t\tmkdir -p subdir &&\n' span_id:1230) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:1231) (Token id:Id.Lit_Chars val:'\t\tgit am "$P/patch1"\n' span_id:1232) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1233) (Token id:Id.Lit_Chars val:'\tgit diff --exit-code second\n' span_id:1234) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --committer-date-is-author-date' span_id:1241))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1245) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1246) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1247) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1248) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1249) (Token id: Id.Lit_Chars val: '\tgit am --committer-date-is-author-date patch1 &&\n' span_id: 1250 ) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e "/^\\$/q" >head1 &&\n' span_id:1251) (Token id: Id.Lit_Chars val: '\tsed -ne "/^author /s/.*> //p" head1 >at &&\n' span_id: 1252 ) (Token id:Id.Lit_Chars val:'\tsed -ne "/^committer /s/.*> //p" head1 >ct &&\n' span_id:1253) (Token id:Id.Lit_Chars val:'\ttest_cmp at ct\n' span_id:1254) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am without --committer-date-is-author-date' span_id:1261))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1265) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1266) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1267) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1268) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1269) (Token id:Id.Lit_Chars val:'\tgit am patch1 &&\n' span_id:1270) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e "/^\\$/q" >head1 &&\n' span_id:1271) (Token id: Id.Lit_Chars val: '\tsed -ne "/^author /s/.*> //p" head1 >at &&\n' span_id: 1272 ) (Token id:Id.Lit_Chars val:'\tsed -ne "/^committer /s/.*> //p" head1 >ct &&\n' span_id:1273) (Token id:Id.Lit_Chars val:'\t! test_cmp at ct\n' span_id:1274) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --ignore-date' span_id:1293))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1297) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1298) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1299) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1300) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1301) (Token id:Id.Lit_Chars val:'\tgit am --ignore-date patch1 &&\n' span_id:1302) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e "/^\\$/q" >head1 &&\n' span_id:1303) (Token id: Id.Lit_Chars val: '\tsed -ne "/^author /s/.*> //p" head1 >at &&\n' span_id: 1304 ) (Token id:Id.Lit_Chars val:'\tgrep "+0000" at\n' span_id:1305) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am into an unborn branch' span_id:1312))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1316) (Token id: Id.Lit_Chars val: '\tgit rev-parse first^{tree} >expected &&\n' span_id: 1317 ) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1318) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1319) (Token id:Id.Lit_Chars val:'\trm -fr subdir &&\n' span_id:1320) (Token id:Id.Lit_Chars val:'\tmkdir subdir &&\n' span_id:1321) (Token id: Id.Lit_Chars val: '\tgit format-patch --numbered-files -o subdir -1 first &&\n' span_id: 1322 ) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1323) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:1324) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1325) (Token id:Id.Lit_Chars val:'\t\tgit am 1\n' span_id:1326) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1327) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1328) (Token id:Id.Lit_Chars val:'\t\tcd subdir &&\n' span_id:1329) (Token id:Id.Lit_Chars val:'\t\tgit rev-parse HEAD^{tree} >../actual\n' span_id:1330) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1331) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1332) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am newline in subject' span_id:1339))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1343) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1344) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1345) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1346) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1347) (Token id: Id.Lit_Chars val: '\tsed -e "s/second/second \\\\\\n foo/" patch1 >patchnl &&\n' span_id: 1348 ) (Token id:Id.Lit_Chars val:'\tgit am <patchnl >output.out 2>&1 &&\n' span_id:1349) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "^Applying: second \\\\\\n foo$" output.out\n' span_id: 1350 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -q is quiet' span_id:1357))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1361) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1362) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1363) (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:1364) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1365) (Token id: Id.Lit_Chars val: '\tgit am -q <patch1 >output.out 2>&1 &&\n' span_id: 1366 ) (Token id:Id.Lit_Chars val:'\t! test -s output.out\n' span_id:1367) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am empty-file does not infloop' span_id:1374))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1378) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1379) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1380) (Token id:Id.Lit_Chars val:'\ttouch empty-file &&\n' span_id:1381) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:1382) (Token id: Id.Lit_Chars val: '\ttest_must_fail git am empty-file 2>actual &&\n' span_id: 1383 ) (Token id:Id.Lit_Chars val:'\techo Patch format detection failed. >expected &&\n' span_id:1384) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expected actual\n' span_id:1385) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --message-id really adds the message id' span_id:1392))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1396) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1397) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1398) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:1399) (Token id:Id.Lit_Chars val:'\tgit am --message-id patch1.eml &&\n' span_id:1400) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 1401 ) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | tail -n1 >actual &&\n' span_id:1402) (Token id: Id.Lit_Chars val: '\tgrep Message-Id patch1.eml >expected &&\n' span_id: 1403 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1404) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am.messageid really adds the message id' span_id:1411))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1415) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1416) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1417) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:1418) (Token id:Id.Lit_Chars val:'\ttest_config am.messageid true &&\n' span_id:1419) (Token id:Id.Lit_Chars val:'\tgit am patch1.eml &&\n' span_id:1420) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing .git/rebase-apply &&\n' span_id:1421) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | tail -n1 >actual &&\n' span_id: 1422 ) (Token id:Id.Lit_Chars val:'\tgrep Message-Id patch1.eml >expected &&\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: 'am --message-id -s signs off after the message id' span_id: 1431 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1435) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1436) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1437) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:1438) (Token id:Id.Lit_Chars val:'\tgit am -s --message-id patch1.eml &&\n' span_id:1439) (Token id: Id.Lit_Chars val: '\ttest_path_is_missing .git/rebase-apply &&\n' span_id: 1440 ) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | tail -n2 | head -n1 >actual &&\n' span_id: 1441 ) (Token id:Id.Lit_Chars val:'\tgrep Message-Id patch1.eml >expected &&\n' span_id:1442) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1443) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -3 works with rerere' span_id:1450))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1454) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1455) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1456) (Token id:Id.Lit_Chars val:'\n' span_id:1457) (Token id:Id.Lit_Chars val:'\t# make patches one->two and two->three...\n' span_id:1458) (Token id:Id.Lit_Chars val:'\ttest_commit one file &&\n' span_id:1459) (Token id:Id.Lit_Chars val:'\ttest_commit two file &&\n' span_id:1460) (Token id:Id.Lit_Chars val:'\ttest_commit three file &&\n' span_id:1461) (Token id:Id.Lit_Chars val:'\tgit format-patch -2 --stdout >seq.patch &&\n' span_id:1462) (Token id:Id.Lit_Chars val:'\n' span_id:1463) (Token id:Id.Lit_Chars val:'\t# and create a situation that conflicts...\n' span_id:1464) (Token id:Id.Lit_Chars val:'\tgit reset --hard one &&\n' span_id:1465) (Token id:Id.Lit_Chars val:'\ttest_commit other file &&\n' span_id:1466) (Token id:Id.Lit_Chars val:'\n' span_id:1467) (Token id:Id.Lit_Chars val:'\t# enable rerere...\n' span_id:1468) (Token id:Id.Lit_Chars val:'\ttest_config rerere.enabled true &&\n' span_id:1469) (Token id:Id.Lit_Chars val:'\ttest_when_finished "rm -rf .git/rr-cache" &&\n' span_id:1470) (Token id:Id.Lit_Chars val:'\n' span_id:1471) (Token id:Id.Lit_Chars val:'\t# ...and apply. Our resolution is to skip the first\n' span_id:1472) (Token id: Id.Lit_Chars val: '\t# patch, and the rerere the second one.\n' span_id: 1473 ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 seq.patch &&\n' span_id:1474) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am --skip &&\n' span_id:1475) (Token id:Id.Lit_Chars val:'\techo resolved >file &&\n' span_id:1476) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1477) (Token id:Id.Lit_Chars val:'\tgit am --resolved &&\n' span_id:1478) (Token id:Id.Lit_Chars val:'\n' span_id:1479) (Token id: Id.Lit_Chars val: '\t# now apply again, and confirm that rerere engaged (we still\n' span_id: 1480 ) (Token id: Id.Lit_Chars val: '\t# expect failure from am because rerere does not auto-commit\n' span_id: 1481 ) (Token id:Id.Lit_Chars val:'\t# for us).\n' span_id:1482) (Token id:Id.Lit_Chars val:'\tgit reset --hard other &&\n' span_id:1483) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am -3 seq.patch &&\n' span_id:1484) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am --skip &&\n' span_id:1485) (Token id:Id.Lit_Chars val:'\techo resolved >expect &&\n' span_id:1486) (Token id:Id.Lit_Chars val:'\ttest_cmp expect file\n' span_id:1487) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am -s unexpected trailer block' span_id:1494))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1498) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1499) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:1500) (Token id:Id.Lit_Chars val:'\techo signed >file &&\n' span_id:1501) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1502) (Token id:Id.Lit_Chars val:'\tcat >msg <<-EOF &&\n' span_id:1503) (Token id:Id.Lit_Chars val:'\tsubject here\n' span_id:1504) (Token id:Id.Lit_Chars val:'\n' span_id:1505) (Token id: Id.Lit_Chars val: '\tSigned-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>\n' span_id: 1506 ) (Token id:Id.Lit_Chars val:'\t[jc: tweaked log message]\n' span_id:1507) (Token id:Id.Lit_Chars val:'\tSigned-off-by: J C H <j@c.h>\n' span_id:1508) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1509) (Token id:Id.Lit_Chars val:'\tgit commit -F msg &&\n' span_id:1510) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e ' span_id:1511) ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) (SQ (Token id:Id.Lit_Chars val:' >original &&\n' span_id:1520) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout -1 >patch &&\n' span_id: 1521 ) (Token id:Id.Lit_Chars val:'\n' span_id:1522) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:1523) (Token id:Id.Lit_Chars val:'\tgit am -s patch &&\n' span_id:1524) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1525) (Token id:Id.Lit_Chars val:'\t\tcat original &&\n' span_id:1526) (Token id: Id.Lit_Chars val: '\t\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"\n' span_id: 1527 ) (Token id:Id.Lit_Chars val:'\t) >expect &&\n' span_id:1528) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e ' span_id:1529) ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) (SQ (Token id:Id.Lit_Chars val:' >actual &&\n' span_id:1538) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual &&\n' span_id:1539) (Token id:Id.Lit_Chars val:'\n' span_id:1540) (Token id:Id.Lit_Chars val:'\tcat >msg <<-\\EOF &&\n' span_id:1541) (Token id:Id.Lit_Chars val:'\tsubject here\n' span_id:1542) (Token id:Id.Lit_Chars val:'\n' span_id:1543) (Token id: Id.Lit_Chars val: '\tWe make sure that there is a blank line between the log\n' span_id: 1544 ) (Token id:Id.Lit_Chars val:'\tmessage proper and Signed-off-by: line added.\n' span_id:1545) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1546) (Token id:Id.Lit_Chars val:'\tgit reset HEAD^ &&\n' span_id:1547) (Token id:Id.Lit_Chars val:'\tgit commit -F msg file &&\n' span_id:1548) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e ' span_id:1549) ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) (SQ (Token id:Id.Lit_Chars val:' >original &&\n' span_id:1558) (Token id: Id.Lit_Chars val: '\tgit format-patch --stdout -1 >patch &&\n' span_id: 1559 ) (Token id:Id.Lit_Chars val:'\n' span_id:1560) (Token id:Id.Lit_Chars val:'\tgit reset --hard HEAD^ &&\n' span_id:1561) (Token id:Id.Lit_Chars val:'\tgit am -s patch &&\n' span_id:1562) (Token id:Id.Lit_Chars val:'\n' span_id:1563) (Token id:Id.Lit_Chars val:'\t(\n' span_id:1564) (Token id:Id.Lit_Chars val:'\t\tcat original &&\n' span_id:1565) (Token id:Id.Lit_Chars val:'\t\techo &&\n' span_id:1566) (Token id: Id.Lit_Chars val: '\t\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>"\n' span_id: 1567 ) (Token id:Id.Lit_Chars val:'\t) >expect &&\n' span_id:1568) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | sed -e ' span_id:1569) ) (1) (Id.Lit_Comma ',') (/) (Id.Lit_Other '^') (Id.Lit_Other '$') (/d) (SQ (Token id:Id.Lit_Chars val:' >actual &&\n' span_id:1578) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:1579) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am --patch-format=mboxrd handles mboxrd' span_id:1586))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1590) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1591) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:1592) (Token id:Id.Lit_Chars val:'\techo mboxrd >>file &&\n' span_id:1593) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:1594) (Token id:Id.Lit_Chars val:'\tcat >msg <<-\\INPUT_END &&\n' span_id:1595) (Token id:Id.Lit_Chars val:'\tmboxrd should escape the body\n' span_id:1596) (Token id:Id.Lit_Chars val:'\n' span_id:1597) (Token id:Id.Lit_Chars val:'\tFrom could trip up a loose mbox parser\n' span_id:1598) (Token id: Id.Lit_Chars val: '\t>From extra escape for reversibility\n' span_id: 1599 ) (Token id:Id.Lit_Chars val:'\tINPUT_END\n' span_id:1600) (Token id:Id.Lit_Chars val:'\tgit commit -F msg &&\n' span_id:1601) (Token id: Id.Lit_Chars val: '\tgit format-patch --pretty=mboxrd --stdout -1 >mboxrd1 &&\n' span_id: 1602 ) (Token id: Id.Lit_Chars val: '\tgrep "^>From could trip up a loose mbox parser" mboxrd1 &&\n' span_id: 1603 ) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:1604) (Token id: Id.Lit_Chars val: '\tgit am --patch-format=mboxrd mboxrd1 &&\n' span_id: 1605 ) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | tail -n4 >out &&\n' span_id:1606) (Token id:Id.Lit_Chars val:'\ttest_cmp msg out\n' span_id:1607) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'am works with multi-line in-body headers' span_id:1614))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1618) (Token id: Id.Lit_Chars val: '\tFORTY="String that has a length of more than forty characters" &&\n' span_id: 1619 ) (Token id:Id.Lit_Chars val:'\tLONG="$FORTY $FORTY" &&\n' span_id:1620) (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:1621) (Token id:Id.Lit_Chars val:'\tgit checkout -f first &&\n' span_id:1622) (Token id:Id.Lit_Chars val:'\techo one >> file &&\n' span_id:1623) (Token id: Id.Lit_Chars val: '\tgit commit -am "$LONG" --author="$LONG <long@example.com>" &&\n' span_id: 1624 ) (Token id:Id.Lit_Chars val:'\tgit format-patch --stdout -1 >patch &&\n' span_id:1625) (Token id: Id.Lit_Chars val: '\t# bump from, date, and subject down to in-body header\n' span_id: 1626 ) (Token id:Id.Lit_Chars val:'\tperl -lpe "\n' span_id:1627) (Token id:Id.Lit_Chars val:'\t\tif (/^From:/) {\n' span_id:1628) (Token id:Id.Lit_Chars val:'\t\t\tprint \\"From: x <x\\@example.com>\\";\n' span_id:1629) (Token id: Id.Lit_Chars val: '\t\t\tprint \\"Date: Sat, 1 Jan 2000 00:00:00 +0000\\";\n' span_id: 1630 ) (Token id:Id.Lit_Chars val:'\t\t\tprint \\"Subject: x\\n\\";\n' span_id:1631) (Token id:Id.Lit_Chars val:'\t\t}\n' span_id:1632) (Token id:Id.Lit_Chars val:'\t" patch >msg &&\n' span_id:1633) (Token id:Id.Lit_Chars val:'\tgit checkout HEAD^ &&\n' span_id:1634) (Token id:Id.Lit_Chars val:'\tgit am msg &&\n' span_id:1635) (Token id: Id.Lit_Chars val: '\t# Ensure that the author and full message are present\n' span_id: 1636 ) (Token id: Id.Lit_Chars val: '\tgit cat-file commit HEAD | grep "^author.*long@example.com" &&\n' span_id: 1637 ) (Token id:Id.Lit_Chars val:'\tgit cat-file commit HEAD | grep "^$LONG"\n' span_id:1638) ) } ) (C {(test_done)}) ] )