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