(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:test_description)
          op: assign_op.Equal
          rhs: {(SQ (Token id:Id.Lit_Chars val:'git apply -p handling.' span_id:15))}
          spids: [13]
        )
      ]
    )
    (C {(.)} {(./test-lib.sh)})
    (C {(test_expect_success)} {(setup)} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:29) 
          (Token id:Id.Lit_Chars val:'\tmkdir sub &&\n' span_id:30) (Token id:Id.Lit_Chars val:'\techo A >sub/file1 &&\n' span_id:31) 
          (Token id:Id.Lit_Chars val:'\tcp sub/file1 file1.saved &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit add sub/file1 &&\n' span_id:33) 
          (Token id:Id.Lit_Chars val:'\techo B >sub/file1 &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit diff >patch.file &&\n' span_id:35) 
          (Token id:Id.Lit_Chars val:'\tgit checkout -- sub/file1 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit mv sub s\xc3\xbcb &&\n' span_id:37) 
          (Token id:Id.Lit_Chars val:'\techo B >s\xc3\xbcb/file1 &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit diff >patch.escaped &&\n' span_id:39) 
          (Token id:Id.Lit_Chars val:'\tgrep "[\\]" patch.escaped &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\trm s\xc3\xbcb/file1 &&\n' span_id:41) 
          (Token id:Id.Lit_Chars val:'\trmdir s\xc3\xbcb\n' span_id:42)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply git diff with -p2' span_id:49))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:53) 
          (Token id:Id.Lit_Chars val:'\tcp file1.saved file1 &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\tgit apply -p2 patch.file\n' span_id:55)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply with too large -p' span_id:62))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:66) 
          (Token id:Id.Lit_Chars val:'\tcp file1.saved file1 &&\n' span_id:67) (Token id:Id.Lit_Chars val:'\ttest_must_fail git apply --stat -p3 patch.file 2>err &&\n' span_id:68) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_i18ngrep "removing 3 leading" err\n'
            span_id: 69
          )
        )
      }
    )
    (C {(test_expect_success)} 
      {
        (SQ 
          (Token
            id: Id.Lit_Chars
            val: 'apply (-p2) traditional diff with funny filenames'
            span_id: 76
          )
        )
      } 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:80) 
          (Token id:Id.Lit_Chars val:'\tcat >patch.quotes <<-\\EOF &&\n' span_id:81) (Token id:Id.Lit_Chars val:'\tdiff -u "a/"sub/file1 "b/"sub/file1\n' span_id:82) 
          (Token id:Id.Lit_Chars val:'\t--- "a/"sub/file1\n' span_id:83) (Token id:Id.Lit_Chars val:'\t+++ "b/"sub/file1\n' span_id:84) 
          (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:85) (Token id:Id.Lit_Chars val:'\t-A\n' span_id:86) (Token id:Id.Lit_Chars val:'\t+B\n' span_id:87) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:88) (Token id:Id.Lit_Chars val:'\techo B >expected &&\n' span_id:89) 
          (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id:Id.Lit_Chars val:'\tcp file1.saved file1 &&\n' span_id:91) 
          (Token id:Id.Lit_Chars val:'\tgit apply -p2 patch.quotes &&\n' span_id:92) (Token id:Id.Lit_Chars val:'\ttest_cmp expected file1\n' span_id:93)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply with too large -p and fancy filename' span_id:100))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:104) 
          (Token id:Id.Lit_Chars val:'\tcp file1.saved file1 &&\n' span_id:105) 
          (Token
            id: Id.Lit_Chars
            val: '\ttest_must_fail git apply --stat -p3 patch.escaped 2>err &&\n'
            span_id: 106
          ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "removing 3 leading" err\n' span_id:107)
        )
      }
    )
    (C {(test_expect_success)} 
      {(SQ (Token id:Id.Lit_Chars val:'apply (-p2) diff, mode change only' span_id:114))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:118) 
          (Token id:Id.Lit_Chars val:'\tcat >patch.chmod <<-\\EOF &&\n' span_id:119) (Token id:Id.Lit_Chars val:'\tdiff --git a/sub/file1 b/sub/file1\n' span_id:120) 
          (Token id:Id.Lit_Chars val:'\told mode 100644\n' span_id:121) (Token id:Id.Lit_Chars val:'\tnew mode 100755\n' span_id:122) 
          (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:123) (Token id:Id.Lit_Chars val:'\ttest_chmod -x file1 &&\n' span_id:124) 
          (Token
            id: Id.Lit_Chars
            val: '\tgit apply --index -p2 patch.chmod &&\n'
            span_id: 125
          ) 
          (Token
            id: Id.Lit_Chars
            val: '\tcase $(git ls-files -s file1) in 100755*) : good;; *) false;; esac\n'
            span_id: 126
          )
        )
      }
    )
    (C {(test_expect_success)} {(FILEMODE)} 
      {(SQ (Token id:Id.Lit_Chars val:'file mode was changed' span_id:135))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) 
          (Token id:Id.Lit_Chars val:'\ttest -x file1\n' span_id:140)
        )
      }
    )
    (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'apply (-p2) diff, rename' span_id:147))} 
      {
        (SQ (Token id:Id.Lit_Chars val:'\n' span_id:151) 
          (Token id:Id.Lit_Chars val:'\tcat >patch.rename <<-\\EOF &&\n' span_id:152) (Token id:Id.Lit_Chars val:'\tdiff --git a/sub/file1 b/sub/file2\n' span_id:153) 
          (Token id:Id.Lit_Chars val:'\tsimilarity index 100%\n' span_id:154) (Token id:Id.Lit_Chars val:'\trename from sub/file1\n' span_id:155) 
          (Token id:Id.Lit_Chars val:'\trename to sub/file2\n' span_id:156) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:157) 
          (Token id:Id.Lit_Chars val:'\techo A >expected &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\n' span_id:159) 
          (Token id:Id.Lit_Chars val:'\tcp file1.saved file1 &&\n' span_id:160) (Token id:Id.Lit_Chars val:'\trm -f file2 &&\n' span_id:161) 
          (Token id:Id.Lit_Chars val:'\tgit apply -p2 patch.rename &&\n' span_id:162) (Token id:Id.Lit_Chars val:'\ttest_cmp expected file2\n' span_id:163)
        )
      }
    )
    (C {(test_done)})
  ]
)