(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 command-line options override saved options'
                  span_id: 6
                )
              )
            }
          spids: [4]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/lib-terminal.sh)})
    (command.ShFunction
      name: format_patch
      body: 
        (command.BraceGroup
          children: [
            (command.Simple
              words: [{(git)} {(format-patch)} {(--stdout)} {(-1)} {(DQ ($ Id.VSub_Number '$1'))}]
              redirects: [
                (redir.Redir
                  op: (Token id:Id.Redir_Great val:'>' span_id:42)
                  fd: -1
                  arg_word: {(DQ ($ Id.VSub_Number '$1')) (.eml)}
                )
              ]
            )
          ]
        )
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:54))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:58) 
          (Token id:Id.Lit_Chars val:'\ttest_commit initial file &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\ttest_commit first file &&\n' span_id:60) 
          (Token id:Id.Lit_Chars val:'\n' span_id:61) (Token id:Id.Lit_Chars val:'\tgit checkout initial &&\n' span_id:62) 
          (Token id:Id.Lit_Chars val:'\tgit mv file file2 &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:64) 
          (Token id:Id.Lit_Chars val:'\tgit commit -m renamed-file &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tgit tag renamed-file &&\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\n' span_id:67) (Token id:Id.Lit_Chars val:'\tgit checkout -b side initial &&\n' span_id:68) 
          (Token id:Id.Lit_Chars val:'\ttest_commit side1 file &&\n' span_id:69) (Token id:Id.Lit_Chars val:'\ttest_commit side2 file &&\n' span_id:70) 
          (Token id:Id.Lit_Chars val:'\n' span_id:71) (Token id:Id.Lit_Chars val:'\tformat_patch side1 &&\n' span_id:72) 
          (Token id:Id.Lit_Chars val:'\tformat_patch side2\n' span_id:73)
        )
      }
    )
    (C {(test_expect_success)} {(TTY)} 
      {(SQ (Token id:Id.Lit_Chars val:'--3way overrides --no-3way' span_id:82))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:86) 
          (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:87) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:88) 
          (Token id:Id.Lit_Chars val:'\tgit checkout renamed-file &&\n' span_id:89) (Token id:Id.Lit_Chars val:'\n' span_id:90) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Applying side1 will fail as the file has been renamed.\n'
            span_id: 91
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am --no-3way side[12].eml &&\n' span_id:92) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir .git/rebase-apply &&\n'
            span_id: 93
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp_rev renamed-file HEAD &&\n' span_id:94) 
          (Token id:Id.Lit_Chars val:'\ttest -z "$(git ls-files -u)" &&\n' span_id:95) (Token id:Id.Lit_Chars val:'\n' span_id:96) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Applying side1 with am --3way will succeed due to the threeway-merge.\n'
            span_id: 97
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\t# Applying side2 will fail as --3way does not apply to it.\n'
            span_id: 98
          ) (Token id:Id.Lit_Chars val:'\ttest_must_fail test_terminal git am --3way </dev/zero &&\n' span_id:99) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir .git/rebase-apply &&\n'
            span_id: 100
          ) (Token id:Id.Lit_Chars val:'\ttest side1 = "$(cat file2)"\n' span_id:101)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--no-quiet overrides --quiet' span_id:108))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:112) 
          (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:113) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:114) 
          (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\n' span_id:116) 
          (Token id:Id.Lit_Chars val:'\t# Applying side1 will be quiet.\n' span_id:117) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am --quiet side[123].eml >out &&\n' span_id:118) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir .git/rebase-apply &&\n'
            span_id: 119
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep ! "^Applying: " out &&\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\techo side1 >file &&\n' span_id:121) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\n' span_id:123) (Token id:Id.Lit_Chars val:'\t# Applying side1 will not be quiet.\n' span_id:124) 
          (Token id:Id.Lit_Chars val:'\t# Applying side2 will be quiet.\n' span_id:125) (Token id:Id.Lit_Chars val:'\tgit am --no-quiet --continue >out &&\n' span_id:126) 
          (Token id:Id.Lit_Chars val:'\techo "Applying: side1" >expected &&\n' span_id:127) (Token id:Id.Lit_Chars val:'\ttest_i18ncmp expected out\n' span_id:128)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'--signoff overrides --no-signoff' span_id:135))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:141) 
          (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:142) (Token id:Id.Lit_Chars val:'\n' span_id:143) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git am --no-signoff side[12].eml &&\n'
            span_id: 144
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:145) 
          (Token id:Id.Lit_Chars val:'\techo side1 >file &&\n' span_id:146) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:147) 
          (Token id:Id.Lit_Chars val:'\tgit am --signoff --continue &&\n' span_id:148) (Token id:Id.Lit_Chars val:'\n' span_id:149) 
          (Token id:Id.Lit_Chars val:'\t# Applied side1 will be signed off\n' span_id:150) 
          (Token
            id: Id.Lit_Chars
            val: '\techo "Signed-off-by: $GIT_COMMITTER_NAME <$GIT_COMMITTER_EMAIL>" >expected &&\n'
            span_id: 151
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit cat-file commit HEAD^ | grep "Signed-off-by:" >actual &&\n'
            span_id: 152
          ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual &&\n' span_id:153) 
          (Token id:Id.Lit_Chars val:'\n' span_id:154) (Token id:Id.Lit_Chars val:'\t# Applied side2 will not be signed off\n' span_id:155) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest $(git cat-file commit HEAD | grep -c "Signed-off-by:") -eq 0\n'
            span_id: 156
          )
        )
      }
    )
    (C {(test_expect_success)} {(TTY)} 
      {(SQ (Token id:Id.Lit_Chars val:'--reject overrides --no-reject' span_id:165))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:169) 
          (Token id:Id.Lit_Chars val:'\trm -fr .git/rebase-apply &&\n' span_id:170) (Token id:Id.Lit_Chars val:'\tgit reset --hard &&\n' span_id:171) 
          (Token id:Id.Lit_Chars val:'\tgit checkout first &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\trm -f file.rej &&\n' span_id:173) 
          (Token id:Id.Lit_Chars val:'\n' span_id:174) (Token id:Id.Lit_Chars val:'\ttest_must_fail git am --no-reject side1.eml &&\n' span_id:175) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_path_is_dir .git/rebase-apply &&\n'
            span_id: 176
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_missing file.rej &&\n' span_id:177) 
          (Token id:Id.Lit_Chars val:'\n' span_id:178) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail test_terminal git am --reject </dev/zero &&\n'
            span_id: 179
          ) (Token id:Id.Lit_Chars val:'\ttest_path_is_dir .git/rebase-apply &&\n' span_id:180) 
          (Token id:Id.Lit_Chars val:'\ttest_path_is_file file.rej\n' span_id:181)
        )
      }
    )
    (C {(test_done)})
  ]
)