(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (LhsName name:test_description)
          op: Equal
          rhs: {(SQ <"git apply -p handling.">)}
          spids: [13]
        )
      ]
      spids: [13]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ <"\n"> <"\tmkdir sub &&\n"> <"\techo A >sub/file1 &&\n"> <"\tcp sub/file1 file1.saved &&\n"> 
          <"\tgit add sub/file1 &&\n"> <"\techo B >sub/file1 &&\n"> <"\tgit diff >patch.file &&\n"> <"\tgit checkout -- sub/file1 &&\n"> 
          <"\tgit mv sub s\u00fcb &&\n"> <"\techo B >s\u00fcb/file1 &&\n"> <"\tgit diff >patch.escaped &&\n"> 
          <"\tgrep \"[\\]\" patch.escaped &&\n"> <"\trm s\u00fcb/file1 &&\n"> <"\trmdir s\u00fcb\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply git diff with -p2">)} 
      {(SQ <"\n"> <"\tcp file1.saved file1 &&\n"> <"\tgit apply -p2 patch.file\n">)}
    )
    (C {(test_expect_success)} {(SQ <"apply with too large -p">)} 
      {
        (SQ <"\n"> <"\tcp file1.saved file1 &&\n"> 
          <"\ttest_must_fail git apply --stat -p3 patch.file 2>err &&\n"> <"\ttest_i18ngrep \"removing 3 leading\" err\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply (-p2) traditional diff with funny filenames">)} 
      {
        (SQ <"\n"> <"\tcat >patch.quotes <<-\\EOF &&\n"> 
          <"\tdiff -u \"a/\"sub/file1 \"b/\"sub/file1\n"> <"\t--- \"a/\"sub/file1\n"> <"\t+++ \"b/\"sub/file1\n"> <"\t@@ -1 +1 @@\n"> <"\t-A\n"> <"\t+B\n"> 
          <"\tEOF\n"> <"\techo B >expected &&\n"> <"\n"> <"\tcp file1.saved file1 &&\n"> <"\tgit apply -p2 patch.quotes &&\n"> 
          <"\ttest_cmp expected file1\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply with too large -p and fancy filename">)} 
      {
        (SQ <"\n"> <"\tcp file1.saved file1 &&\n"> 
          <"\ttest_must_fail git apply --stat -p3 patch.escaped 2>err &&\n"> <"\ttest_i18ngrep \"removing 3 leading\" err\n">
        )
      }
    )
    (C {(test_expect_success)} {(SQ <"apply (-p2) diff, mode change only">)} 
      {
        (SQ <"\n"> <"\tcat >patch.chmod <<-\\EOF &&\n"> <"\tdiff --git a/sub/file1 b/sub/file1\n"> 
          <"\told mode 100644\n"> <"\tnew mode 100755\n"> <"\tEOF\n"> <"\ttest_chmod -x file1 &&\n"> 
          <"\tgit apply --index -p2 patch.chmod &&\n"> <"\tcase $(git ls-files -s file1) in 100755*) : good;; *) false;; esac\n">
        )
      }
    )
    (C {(test_expect_success)} {(FILEMODE)} {(SQ <"file mode was changed">)} 
      {(SQ <"\n"> <"\ttest -x file1\n">)}
    )
    (C {(test_expect_success)} {(SQ <"apply (-p2) diff, rename">)} 
      {
        (SQ <"\n"> <"\tcat >patch.rename <<-\\EOF &&\n"> <"\tdiff --git a/sub/file1 b/sub/file2\n"> 
          <"\tsimilarity index 100%\n"> <"\trename from sub/file1\n"> <"\trename to sub/file2\n"> <"\tEOF\n"> <"\techo A >expected &&\n"> <"\n"> 
          <"\tcp file1.saved file1 &&\n"> <"\trm -f file2 &&\n"> <"\tgit apply -p2 patch.rename &&\n"> <"\ttest_cmp expected file2\n">
        )
      }
    )
    (C {(test_done)})
  ]
)