(command.CommandList
  children: [
    (command.ShAssignment
      left: <Id.Lit_VarLike 'test_description='>
      pairs: [
        (AssignPair
          left: <Id.Lit_VarLike 'test_description='>
          lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'test_description='> name:test_description)
          op: assign_op.Equal
          rhs: {(SQ <'Test built-in diff output engine.\n'> <'\n'>)}
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {(DQ ($ Id.VSub_DollarName TEST_DIRECTORY)) <'/diff-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <echo>
      more_env: []
      words: [{<echo>} {(SQ <'Line 1\n'> <'Line 2\n'> <'line 3'>)}]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<path0>})]
      do_fork: T
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>} {<path0>}]
      redirects: [(Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<path1>})]
      do_fork: T
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<Id.Lit_Other '+'> <x>} {<path1>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'update-index --add two files with and without +x.'>)}
        {(SQ <'\n'> <'\tgit update-index --add path0 path1\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <mv>
      more_env: []
      words: [{<mv>} {<path0>} {<path0->}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <sed>
      more_env: []
      words: [{<sed>} {<-e>} {(SQ <'s/line/Line/'>)}]
      redirects: [
        (Redir op:<Id.Redir_Less '<'> loc:(redir_loc.Fd fd:0) arg:{<path0->})
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<path0>})
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <chmod>
      more_env: []
      words: [{<chmod>} {<Id.Lit_Other '+'> <x>} {<path0>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <rm>
      more_env: []
      words: [{<rm>} {<-f>} {<path1>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'git diff-files -p after editing work tree.'>)}
        {(SQ <'\n'> <'\tgit diff-files -p >actual\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.If
      if_kw: <Id.KW_If if>
      arms: [
        (IfArm
          keyword: <Id.KW_If if>
          cond: 
            (condition.Shell
              commands: [
                (command.Simple
                  blame_tok: <Id.Lit_LBracket '['>
                  more_env: []
                  words: [
                    {<Id.Lit_LBracket '['>}
                    {
                      (DQ 
                        (CommandSub
                          left_token: <Id.Left_DollarParen '$('>
                          child: 
                            (command.Simple
                              blame_tok: <git>
                              more_env: []
                              words: [{<git>} {<config>} {<--get>} {<core.filemode>}]
                              redirects: []
                              do_fork: T
                            )
                          right: <Id.Eof_RParen _>
                        )
                      )
                    }
                    {<Id.Lit_Equals '='>}
                    {<false>}
                    {<Id.Lit_RBracket ']'>}
                  ]
                  redirects: []
                  do_fork: T
                )
              ]
            )
          then_kw: <Id.KW_Then then>
          action: [
            (command.Simple
              blame_tok: <say>
              more_env: []
              words: [{<say>} {(SQ <'filemode disabled on the filesystem'>)}]
              redirects: []
              do_fork: T
            )
            (command.Simple
              blame_tok: <test_done>
              more_env: []
              words: [{<test_done>}]
              redirects: []
              do_fork: T
            )
          ]
          spids: [117 139]
        )
      ]
      else_action: []
      fi_kw: <Id.KW_Fi fi>
      redirects: []
    )
    (command.Simple
      blame_tok: <cat>
      more_env: []
      words: [{<cat>}]
      redirects: [
        (Redir op:<Id.Redir_Great '>'> loc:(redir_loc.Fd fd:1) arg:{<expected>})
        (Redir
          op: <Id.Redir_DLess '<<'>
          loc: (redir_loc.Fd fd:0)
          arg: 
            (redir_param.HereDoc
              here_begin: {(word_part.EscapedLiteral token:<Id.Lit_EscapedChar '\\E'> ch:E) <OF>}
              here_end_tok: <Id.Undefined_Tok ''>
              stdin_parts: [
                <'diff --git a/path0 b/path0\n'>
                <'old mode 100644\n'>
                <'new mode 100755\n'>
                <'--- a/path0\n'>
                <'+++ b/path0\n'>
                <'@@ -1,3 +1,3 @@\n'>
                <' Line 1\n'>
                <' Line 2\n'>
                <'-line 3\n'>
                <'+Line 3\n'>
                <'diff --git a/path1 b/path1\n'>
                <'deleted file mode 100755\n'>
                <'--- a/path1\n'>
                <'+++ /dev/null\n'>
                <'@@ -1,3 +0,0 @@\n'>
                <'-Line 1\n'>
                <'-Line 2\n'>
                <'-line 3\n'>
              ]
            )
        )
      ]
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'validate git diff-files -p output.'>)}
        {(SQ <'\n'> <'\tcompare_diff_patch expected actual\n'>)}
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'git diff-files -s after editing work tree'>)}
        {
          (SQ <'\n'> <'\tgit diff-files -s >actual 2>err &&\n'> <'\ttest_must_be_empty actual &&\n'> 
            <'\ttest_must_be_empty err\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'git diff-files --no-patch as synonym for -s'>)}
        {
          (SQ <'\n'> <'\tgit diff-files --no-patch >actual 2>err &&\n'> 
            <'\ttest_must_be_empty actual &&\n'> <'\ttest_must_be_empty err\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'git diff-files --no-patch --patch shows the patch'>)}
        {
          (SQ <'\n'> <'\tgit diff-files --no-patch --patch >actual &&\n'> 
            <'\tcompare_diff_patch expected actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'git diff-files --no-patch --patch-with-raw shows the patch and raw data'>)}
        {
          (SQ <'\n'> <'\tgit diff-files --no-patch --patch-with-raw >actual &&\n'> 
            <
'\tgrep -q "^:100644 100755 .* 0000000000000000000000000000000000000000 M\tpath0\\$" actual &&\n'
            > <'\ttail -n +4 actual >actual-patch &&\n'> <'\tcompare_diff_patch expected actual-patch\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'git diff-files --patch --no-patch does not show the patch'>)}
        {
          (SQ <'\n'> <'\tgit diff-files --patch --no-patch >actual 2>err &&\n'> 
            <'\ttest_must_be_empty actual &&\n'> <'\ttest_must_be_empty err\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)