(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <'git-apply notices removal patches generated by GNU diff'>)}
          spids: [10]
        )
      ]
      spids: [10]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <'\n'> <'\tcat <<-EOF >c &&\n'> <'\tdiff -ruN a/file b/file\n'> <'\t--- a/file\tTS0\n'> 
          <'\t+++ b/file\tTS1\n'> <'\t@@ -0,0 +1 @@\n'> <'\t+something\n'> <'\tEOF\n'> <'\n'> <'\tcat <<-EOF >d &&\n'> 
          <'\tdiff -ruN a/file b/file\n'> <'\t--- a/file\tTS0\n'> <'\t+++ b/file\tTS1\n'> <'\t@@ -1 +0,0 @@\n'> <'\t-something\n'> <'\tEOF\n'> 
          <'\n'> <'\ttimeWest="1982-09-16 07:00:00.000000000 -0800" &&\n'> 
          <'\t timeGMT="1982-09-16 15:00:00.000000000 +0000" &&\n'> <'\ttimeEast="1982-09-17 00:00:00.000000000 +0900" &&\n'> <'\n'> 
          <'\tepocWest="1969-12-31 16:00:00.000000000 -0800" &&\n'> <'\t epocGMT="1970-01-01 00:00:00.000000000 +0000" &&\n'> 
          <'\tepocEast="1970-01-01 09:00:00.000000000 +0900" &&\n'> <'\tepocWest2="1969-12-31 16:00:00 -08:00" &&\n'> <'\n'> 
          <'\tsed -e "s/TS0/$epocWest/" -e "s/TS1/$timeWest/" <c >createWest.patch &&\n'> <'\tsed -e "s/TS0/$epocEast/" -e "s/TS1/$timeEast/" <c >createEast.patch &&\n'> 
          <'\tsed -e "s/TS0/$epocGMT/" -e "s/TS1/$timeGMT/" <c >createGMT.patch &&\n'> <'\n'> <'\tsed -e "s/TS0/$timeWest/" -e "s/TS1/$timeWest/" <c >addWest.patch &&\n'> 
          <'\tsed -e "s/TS0/$timeEast/" -e "s/TS1/$timeEast/" <c >addEast.patch &&\n'> <'\tsed -e "s/TS0/$timeGMT/" -e "s/TS1/$timeGMT/" <c >addGMT.patch &&\n'> <'\n'> 
          <'\tsed -e "s/TS0/$timeWest/" -e "s/TS1/$timeWest/" <d >emptyWest.patch &&\n'> <'\tsed -e "s/TS0/$timeEast/" -e "s/TS1/$timeEast/" <d >emptyEast.patch &&\n'> 
          <'\tsed -e "s/TS0/$timeGMT/" -e "s/TS1/$timeGMT/" <d >emptyGMT.patch &&\n'> <'\n'> <'\tsed -e "s/TS0/$timeWest/" -e "s/TS1/$epocWest/" <d >removeWest.patch &&\n'> 
          <'\tsed -e "s/TS0/$timeEast/" -e "s/TS1/$epocEast/" <d >removeEast.patch &&\n'> <'\tsed -e "s/TS0/$timeGMT/" -e "s/TS1/$epocGMT/" <d >removeGMT.patch &&\n'> 
          <'\tsed -e "s/TS0/$timeWest/" -e "s/TS1/$epocWest2/" <d >removeWest2.patch &&\n'> <'\n'> <'\techo something >something &&\n'> <'\t>empty\n'>
        )
      }
    )
    (ForEach
      iter_name: patch
      iter_words: [{(Lit_Other '*') (.patch)}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (C {(test_expect_success)} {(DQ ('test ') ($ VSub_Name '$patch'))} 
              {
                (SQ <'\n'> <'\t\trm -f file .git/index &&\n'> <'\t\tcase "$patch" in\n'> 
                  <'\t\tcreate*)\n'> <'\t\t\t# must be able to create\n'> <'\t\t\tgit apply --index $patch &&\n'> 
                  <'\t\t\ttest_cmp file something &&\n'> <'\t\t\t# must notice the file is already there\n'> <'\t\t\t>file &&\n'> <'\t\t\tgit add file &&\n'> 
                  <'\t\t\ttest_must_fail git apply $patch\n'> <'\t\t\t;;\n'> <'\t\tadd*)\n'> <'\t\t\t# must be able to create or patch\n'> 
                  <'\t\t\tgit apply $patch &&\n'> <'\t\t\ttest_cmp file something &&\n'> <'\t\t\t>file &&\n'> <'\t\t\tgit apply $patch &&\n'> 
                  <'\t\t\ttest_cmp file something\n'> <'\t\t\t;;\n'> <'\t\tempty*)\n'> <'\t\t\t# must leave an empty file\n'> 
                  <'\t\t\tcat something >file &&\n'> <'\t\t\tgit add file &&\n'> <'\t\t\tgit apply --index $patch &&\n'> <'\t\t\ttest -f file &&\n'> 
                  <'\t\t\ttest_cmp empty file\n'> <'\t\t\t;;\n'> <'\t\tremove*)\n'> <'\t\t\t# must remove the file\n'> <'\t\t\tcat something >file &&\n'> 
                  <'\t\t\tgit add file &&\n'> <'\t\t\tgit apply --index $patch &&\n'> <'\t\t\t! test -f file\n'> <'\t\t\t;;\n'> <'\t\tesac\n'> <'\t'>
                )
              }
            )
          ]
          spids: [83 133]
        )
      spids: [79 -1]
    )
    (C {(test_done)})
  ]
)