(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"am --abort">)}
          spids: [4]
        )
      ]
      spids: [4]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\tfor i in a b c d e f g\n"> <"\tdo\n"> <"\t\techo $i\n"> <"\tdone >file-1 &&\n"> 
          <"\tcp file-1 file-2 &&\n"> <"\ttest_tick &&\n"> <"\tgit add file-1 file-2 &&\n"> <"\tgit commit -m initial &&\n"> 
          <"\tgit tag initial &&\n"> <"\tgit format-patch --stdout --root initial >initial.patch &&\n"> <"\tfor i in 2 3 4 5 6\n"> 
          <"\tdo\n"> <"\t\techo $i >>file-1 &&\n"> <"\t\techo $i >otherfile-$i &&\n"> <"\t\tgit add otherfile-$i &&\n"> 
          <"\t\ttest_tick &&\n"> <"\t\tgit commit -a -m $i || return 1\n"> <"\tdone &&\n"> 
          <"\tgit format-patch --no-numbered initial &&\n"> <"\tgit checkout -b side initial &&\n"> <"\techo local change >file-2-expect\n">
        )
      }
    )
    (ForEach
      iter_name: with3
      iter_words: [{(SQ )} {(SQ <" -3">)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(test_expect_success)} 
              {(DQ (am) ($ VSub_Name "$with3") (" stops at a patch that does not apply"))} 
              {
                (SQ <"\n"> <"\n"> <"\t\tgit reset --hard initial &&\n"> 
                  <"\t\tcp file-2-expect file-2 &&\n"> <"\n"> <"\t\ttest_must_fail git am$with3 000[1245]-*.patch &&\n"> 
                  <"\t\tgit log --pretty=tformat:%s >actual &&\n"> <"\t\tfor i in 3 2 initial\n"> <"\t\tdo\n"> <"\t\t\techo $i\n"> <"\t\tdone >expect &&\n"> 
                  <"\t\ttest_cmp expect actual\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} 
              {
                (DQ (am) ($ VSub_Name "$with3") (" --skip continue after failed am") 
                  ($ VSub_Name "$with3")
                )
              } 
              {
                (SQ <"\n"> <"\t\ttest_must_fail git am$with3 --skip >output &&\n"> 
                  <"\t\ttest_i18ngrep \"^Applying\" output >output.applying &&\n"> <"\t\ttest_i18ngrep \"^Applying: 6$\" output.applying &&\n"> 
                  <"\t\ttest_i18ncmp file-2-expect file-2 &&\n"> <"\t\ttest ! -f .git/MERGE_RR\n"> <"\t">
                )
              }
            )
            (C {(test_expect_success)} 
              {(DQ ("am --abort goes back after failed am") ($ VSub_Name "$with3"))} 
              {
                (SQ <"\n"> <"\t\tgit am --abort &&\n"> <"\t\tgit rev-parse HEAD >actual &&\n"> 
                  <"\t\tgit rev-parse initial >expect &&\n"> <"\t\ttest_cmp expect actual &&\n"> <"\t\ttest_cmp file-2-expect file-2 &&\n"> 
                  <"\t\tgit diff-index --exit-code --cached HEAD &&\n"> <"\t\ttest ! -f .git/MERGE_RR\n"> <"\t">
                )
              }
            )
          ]
          spids: [58 128]
        )
      spids: [50 -1]
    )
    (C {(test_expect_success)} {(SQ <"am -3 --skip removes otherfile-4">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard initial &&\n"> <"\ttest_must_fail git am -3 0003-*.patch &&\n"> 
          <"\ttest 3 -eq $(git ls-files -u | wc -l) &&\n"> <"\ttest 4 = \"$(cat otherfile-4)\" &&\n"> <"\tgit am --skip &&\n"> 
          <"\ttest_cmp_rev initial HEAD &&\n"> <"\ttest -z \"$(git ls-files -u)\" &&\n"> <"\ttest_path_is_missing otherfile-4\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am -3 --abort removes otherfile-4">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard initial &&\n"> <"\ttest_must_fail git am -3 0003-*.patch &&\n"> 
          <"\ttest 3 -eq $(git ls-files -u | wc -l) &&\n"> <"\ttest 4 = \"$(cat otherfile-4)\" &&\n"> <"\tgit am --abort &&\n"> 
          <"\ttest_cmp_rev initial HEAD &&\n"> <"\ttest -z \"$(git ls-files -u)\" &&\n"> <"\ttest_path_is_missing otherfile-4\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am --abort will keep the local commits intact">)} 
      {
        (SQ <"\n"> <"\ttest_must_fail git am 0004-*.patch &&\n"> <"\ttest_commit unrelated &&\n"> 
          <"\tgit rev-parse HEAD >expect &&\n"> <"\tgit am --abort &&\n"> <"\tgit rev-parse HEAD >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am --abort will keep dirty index intact">)} 
      {
        (SQ <"\n"> <"\tgit reset --hard initial &&\n"> <"\techo dirtyfile >dirtyfile &&\n"> 
          <"\tcp dirtyfile dirtyfile.expected &&\n"> <"\tgit add dirtyfile &&\n"> <"\ttest_must_fail git am 0001-*.patch &&\n"> 
          <"\ttest_cmp_rev initial HEAD &&\n"> <"\ttest_path_is_file dirtyfile &&\n"> <"\ttest_cmp dirtyfile.expected dirtyfile &&\n"> 
          <"\tgit am --abort &&\n"> <"\ttest_cmp_rev initial HEAD &&\n"> <"\ttest_path_is_file dirtyfile &&\n"> 
          <"\ttest_cmp dirtyfile.expected dirtyfile\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am -3 stops on conflict on unborn branch">)} 
      {
        (SQ <"\n"> <"\tgit checkout -f --orphan orphan &&\n"> <"\tgit reset &&\n"> 
          <"\trm -f otherfile-4 &&\n"> <"\ttest_must_fail git am -3 0003-*.patch &&\n"> <"\ttest 2 -eq $(git ls-files -u | wc -l) &&\n"> 
          <"\ttest 4 = \"$(cat otherfile-4)\"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am -3 --skip clears index on unborn branch">)} 
      {
        (SQ <"\n"> <"\ttest_path_is_dir .git/rebase-apply &&\n"> <"\techo tmpfile >tmpfile &&\n"> 
          <"\tgit add tmpfile &&\n"> <"\tgit am --skip &&\n"> <"\ttest -z \"$(git ls-files)\" &&\n"> 
          <"\ttest_path_is_missing otherfile-4 &&\n"> <"\ttest_path_is_missing tmpfile\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am -3 --abort removes otherfile-4 on unborn branch">)} 
      {
        (SQ <"\n"> <"\tgit checkout -f --orphan orphan &&\n"> <"\tgit reset &&\n"> 
          <"\trm -f otherfile-4 file-1 &&\n"> <"\ttest_must_fail git am -3 0003-*.patch &&\n"> <"\ttest 2 -eq $(git ls-files -u | wc -l) &&\n"> 
          <"\ttest 4 = \"$(cat otherfile-4)\" &&\n"> <"\tgit am --abort &&\n"> <"\ttest -z \"$(git ls-files -u)\" &&\n"> 
          <"\ttest_path_is_missing otherfile-4\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am -3 --abort on unborn branch removes applied commits">)} 
      {
        (SQ <"\n"> <"\tgit checkout -f --orphan orphan &&\n"> <"\tgit reset &&\n"> 
          <"\trm -f otherfile-4 otherfile-2 file-1 file-2 &&\n"> <"\ttest_must_fail git am -3 initial.patch 0003-*.patch &&\n"> 
          <"\ttest 3 -eq $(git ls-files -u | wc -l) &&\n"> <"\ttest 4 = \"$(cat otherfile-4)\" &&\n"> <"\tgit am --abort &&\n"> 
          <"\ttest -z \"$(git ls-files -u)\" &&\n"> <"\ttest_path_is_missing otherfile-4 &&\n"> <"\ttest_path_is_missing file-1 &&\n"> 
          <"\ttest_path_is_missing file-2 &&\n"> <"\ttest 0 -eq $(git log --oneline 2>/dev/null | wc -l) &&\n"> 
          <"\ttest refs/heads/orphan = \"$(git symbolic-ref HEAD)\"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am --abort on unborn branch will keep local commits intact">)} 
      {
        (SQ <"\n"> <"\tgit checkout -f --orphan orphan &&\n"> <"\tgit reset &&\n"> 
          <"\ttest_must_fail git am 0004-*.patch &&\n"> <"\ttest_commit unrelated2 &&\n"> <"\tgit rev-parse HEAD >expect &&\n"> <"\tgit am --abort &&\n"> 
          <"\tgit rev-parse HEAD >actual &&\n"> <"\ttest_cmp expect actual\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am --skip leaves index stat info alone">)} 
      {
        (SQ <"\n"> <"\tgit checkout -f --orphan skip-stat-info &&\n"> <"\tgit reset &&\n"> 
          <"\ttest_commit skip-should-be-untouched &&\n"> <"\ttest-chmtime =0 skip-should-be-untouched.t &&\n"> <"\tgit update-index --refresh &&\n"> 
          <"\tgit diff-files --exit-code --quiet &&\n"> <"\ttest_must_fail git am 0001-*.patch &&\n"> <"\tgit am --skip &&\n"> 
          <"\tgit diff-files --exit-code --quiet\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"am --abort leaves index stat info alone">)} 
      {
        (SQ <"\n"> <"\tgit checkout -f --orphan abort-stat-info &&\n"> <"\tgit reset &&\n"> 
          <"\ttest_commit abort-should-be-untouched &&\n"> <"\ttest-chmtime =0 abort-should-be-untouched.t &&\n"> <"\tgit update-index --refresh &&\n"> 
          <"\tgit diff-files --exit-code --quiet &&\n"> <"\ttest_must_fail git am 0001-*.patch &&\n"> <"\tgit am --abort &&\n"> 
          <"\tgit diff-files --exit-code --quiet\n">
        )
      }
    )
    (C {(test_done)})
  ]
)