(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git apply in reverse\n"> <"\n">)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\n"> <"\tfor i in a b c d e f g h i j k l m n; do echo $i; done >file1 &&\n"> 
          <"\tperl -pe \"y/ijk/\\\\000\\\\001\\\\002/\" <file1 >file2 &&\n"> <"\n"> <"\tgit add file1 file2 &&\n"> <"\tgit commit -m initial &&\n"> <"\tgit tag initial &&\n"> <"\n"> 
          <"\tfor i in a b c g h i J K L m o n p q; do echo $i; done >file1 &&\n"> <"\tperl -pe \"y/mon/\\\\000\\\\001\\\\002/\" <file1 >file2 &&\n"> <"\n"> 
          <"\tgit commit -a -m second &&\n"> <"\tgit tag second &&\n"> <"\n"> <"\tgit diff --binary initial second >patch\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply in forward">)} 
      {
        (SQ <"\n"> <"\n"> <"\tT0=$(git rev-parse \"second^{tree}\") &&\n"> 
          <"\tgit reset --hard initial &&\n"> <"\tgit apply --index --binary patch &&\n"> <"\tT1=$(git write-tree) &&\n"> 
          <"\ttest \"$T0\" = \"$T1\"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply in reverse">)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit reset --hard second &&\n"> 
          <"\tgit apply --reverse --binary --index patch &&\n"> <"\tgit diff >diff &&\n"> <"\ttest_cmp /dev/null diff\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"setup separate repository lacking postimage">)} 
      {
        (SQ <"\n"> <"\n"> <"\tgit archive --format=tar --prefix=initial/ initial | $TAR xf - &&\n"> 
          <"\t(\n"> <"\t\tcd initial && git init && git add .\n"> <"\t) &&\n"> <"\n"> 
          <"\tgit archive --format=tar --prefix=second/ second | $TAR xf - &&\n"> <"\t(\n"> <"\t\tcd second && git init && git add .\n"> <"\t)\n"> <"\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply in forward without postimage">)} 
      {
        (SQ <"\n"> <"\n"> <"\tT0=$(git rev-parse \"second^{tree}\") &&\n"> <"\t(\n"> 
          <"\t\tcd initial &&\n"> <"\t\tgit apply --index --binary ../patch &&\n"> <"\t\tT1=$(git write-tree) &&\n"> 
          <"\t\ttest \"$T0\" = \"$T1\"\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply in reverse without postimage">)} 
      {
        (SQ <"\n"> <"\n"> <"\tT0=$(git rev-parse \"initial^{tree}\") &&\n"> <"\t(\n"> 
          <"\t\tcd second &&\n"> <"\t\tgit apply --index --binary --reverse ../patch &&\n"> <"\t\tT1=$(git write-tree) &&\n"> 
          <"\t\ttest \"$T0\" = \"$T1\"\n"> <"\t)\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"reversing a whitespace introduction">)} 
      {
        (SQ <"\n"> <"\tsed \"s/a/a /\" < file1 > file1.new &&\n"> <"\tmv file1.new file1 &&\n"> 
          <"\tgit diff | git apply --reverse --whitespace=error\n">
        )
      }
    )
    (C {(test_done)})
  ]
)