(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)})
  ]
)