(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 ls-files recurse-submodules feature\n'> <'\n'> 
                <'This test verifies the recurse-submodules feature correctly lists files from\n'> <'submodules.\n'>
              )
            }
        )
      ]
      redirects: []
    )
    (command.Simple
      blame_tok: <.>
      more_env: []
      words: [{<.>} {<'./test-lib.sh'>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'setup directory structure and submodules'>)}
        {
          (SQ <'\n'> <'\techo a >a &&\n'> <'\tmkdir b &&\n'> <'\techo b >b/b &&\n'> 
            <'\tgit add a b &&\n'> <'\tgit commit -m "add a and b" &&\n'> <'\tgit init submodule &&\n'> <'\techo c >submodule/c &&\n'> 
            <'\tgit -C submodule add c &&\n'> <'\tgit -C submodule commit -m "add c" &&\n'> <'\tgit submodule add ./submodule &&\n'> 
            <'\tgit commit -m "added submodule"\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'ls-files correctly outputs files in submodule'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\t.gitmodules\n'> <'\ta\n'> <'\tb/b\n'> 
            <'\tsubmodule/c\n'> <'\tEOF\n'> <'\n'> <'\tgit ls-files --recurse-submodules >actual &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'ls-files correctly outputs files in submodule with -z'>)}
        {
          (SQ <'\n'> <'\tlf_to_nul >expect <<-\\EOF &&\n'> <'\t.gitmodules\n'> <'\ta\n'> <'\tb/b\n'> 
            <'\tsubmodule/c\n'> <'\tEOF\n'> <'\n'> <'\tgit ls-files --recurse-submodules -z >actual &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'ls-files does not output files not added to a repo'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\t.gitmodules\n'> <'\ta\n'> <'\tb/b\n'> 
            <'\tsubmodule/c\n'> <'\tEOF\n'> <'\n'> <'\techo a >not_added &&\n'> <'\techo b >b/not_added &&\n'> 
            <'\techo c >submodule/not_added &&\n'> <'\tgit ls-files --recurse-submodules >actual &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'ls-files recurses more than 1 level'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\t.gitmodules\n'> <'\ta\n'> <'\tb/b\n'> 
            <'\tsubmodule/.gitmodules\n'> <'\tsubmodule/c\n'> <'\tsubmodule/subsub/d\n'> <'\tEOF\n'> <'\n'> <'\tgit init submodule/subsub &&\n'> 
            <'\techo d >submodule/subsub/d &&\n'> <'\tgit -C submodule/subsub add d &&\n'> <'\tgit -C submodule/subsub commit -m "add d" &&\n'> 
            <'\tgit -C submodule submodule add ./subsub &&\n'> <'\tgit -C submodule commit -m "added subsub" &&\n'> 
            <'\tgit ls-files --recurse-submodules >actual &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules and pathspecs setup'>)}
        {
          (SQ <'\n'> <'\techo e >submodule/subsub/e.txt &&\n'> 
            <'\tgit -C submodule/subsub add e.txt &&\n'> <'\tgit -C submodule/subsub commit -m "adding e.txt" &&\n'> <'\techo f >submodule/f.TXT &&\n'> 
            <'\techo g >submodule/g.txt &&\n'> <'\tgit -C submodule add f.TXT g.txt &&\n'> <'\tgit -C submodule commit -m "add f and g" &&\n'> 
            <'\techo h >h.txt &&\n'> <'\tmkdir sib &&\n'> <'\techo sib >sib/file &&\n'> <'\tgit add h.txt sib/file &&\n'> 
            <'\tgit commit -m "add h and sib/file" &&\n'> <'\tgit init sub &&\n'> <'\techo sub >sub/file &&\n'> <'\tgit -C sub add file &&\n'> 
            <'\tgit -C sub commit -m "add file" &&\n'> <'\tgit submodule add ./sub &&\n'> <'\tgit commit -m "added sub" &&\n'> <'\n'> 
            <'\tcat >expect <<-\\EOF &&\n'> <'\t.gitmodules\n'> <'\ta\n'> <'\tb/b\n'> <'\th.txt\n'> <'\tsib/file\n'> <'\tsub/file\n'> 
            <'\tsubmodule/.gitmodules\n'> <'\tsubmodule/c\n'> <'\tsubmodule/f.TXT\n'> <'\tsubmodule/g.txt\n'> <'\tsubmodule/subsub/d\n'> 
            <'\tsubmodule/subsub/e.txt\n'> <'\tEOF\n'> <'\n'> <'\tgit ls-files --recurse-submodules >actual &&\n'> 
            <'\ttest_cmp expect actual &&\n'> <'\tcat actual &&\n'> <'\tgit ls-files --recurse-submodules "*" >actual &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules and pathspecs'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\th.txt\n'> <'\tsubmodule/g.txt\n'> 
            <'\tsubmodule/subsub/e.txt\n'> <'\tEOF\n'> <'\n'> <'\tgit ls-files --recurse-submodules "*.txt" >actual &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules and pathspecs'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\th.txt\n'> <'\tsubmodule/f.TXT\n'> 
            <'\tsubmodule/g.txt\n'> <'\tsubmodule/subsub/e.txt\n'> <'\tEOF\n'> <'\n'> 
            <'\tgit ls-files --recurse-submodules ":(icase)*.txt" >actual &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules and pathspecs'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\th.txt\n'> <'\tsubmodule/f.TXT\n'> 
            <'\tsubmodule/g.txt\n'> <'\tEOF\n'> <'\n'> 
            <
'\tgit ls-files --recurse-submodules ":(icase)*.txt" ":(exclude)submodule/subsub/*" >actual &&\n'
            > <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules and pathspecs'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tsub/file\n'> <'\tEOF\n'> <'\n'> 
            <'\tgit ls-files --recurse-submodules "sub" >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\tgit ls-files --recurse-submodules "sub/" >actual &&\n'> 
            <'\ttest_cmp expect actual &&\n'> <'\tgit ls-files --recurse-submodules "sub/file" >actual &&\n'> <'\ttest_cmp expect actual &&\n'> 
            <'\tgit ls-files --recurse-submodules "su*/file" >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\tgit ls-files --recurse-submodules "su?/file" >actual &&\n'> 
            <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules and pathspecs'>)}
        {
          (SQ <'\n'> <'\tcat >expect <<-\\EOF &&\n'> <'\tsib/file\n'> <'\tsub/file\n'> <'\tEOF\n'> <'\n'> 
            <'\tgit ls-files --recurse-submodules "s??/file" >actual &&\n'> <'\ttest_cmp expect actual &&\n'> <'\tgit ls-files --recurse-submodules "s???file" >actual &&\n'> 
            <'\ttest_cmp expect actual &&\n'> <'\tgit ls-files --recurse-submodules "s*file" >actual &&\n'> <'\ttest_cmp expect actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_expect_success>
      more_env: []
      words: [
        {<test_expect_success>}
        {(SQ <'--recurse-submodules does not support --error-unmatch'>)}
        {
          (SQ <'\n'> 
            <'\ttest_must_fail git ls-files --recurse-submodules --error-unmatch 2>actual &&\n'> <'\ttest_i18ngrep "does not support --error-unmatch" actual\n'>
          )
        }
      ]
      redirects: []
      do_fork: T
    )
    (command.ShFunction
      name_tok: <test_incompatible_with_recurse_submodules>
      name: test_incompatible_with_recurse_submodules
      body: 
        (BraceGroup
          left: <Id.Lit_LBrace '{'>
          children: [
            (command.Simple
              blame_tok: <test_expect_success>
              more_env: []
              words: [
                {<test_expect_success>}
                {(DQ <'--recurse-submodules and '> ($ Id.VSub_Number 1) <' are incompatible'>)}
                {
                  (DQ <'\n'> <'\t\ttest_must_fail git ls-files --recurse-submodules '> 
                    ($ Id.VSub_Number 1) <' 2>actual &&\n'> <'\t\ttest_i18ngrep \'unsupported mode\' actual\n'> <'\t'>
                  )
                }
              ]
              redirects: []
              do_fork: T
            )
          ]
          redirects: []
          right: <Id.Lit_RBrace '}'>
        )
    )
    (command.Simple
      blame_tok: <test_incompatible_with_recurse_submodules>
      more_env: []
      words: [{<test_incompatible_with_recurse_submodules>} {<--deleted>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_incompatible_with_recurse_submodules>
      more_env: []
      words: [{<test_incompatible_with_recurse_submodules>} {<--modified>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_incompatible_with_recurse_submodules>
      more_env: []
      words: [{<test_incompatible_with_recurse_submodules>} {<--others>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_incompatible_with_recurse_submodules>
      more_env: []
      words: [{<test_incompatible_with_recurse_submodules>} {<--stage>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_incompatible_with_recurse_submodules>
      more_env: []
      words: [{<test_incompatible_with_recurse_submodules>} {<--killed>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_incompatible_with_recurse_submodules>
      more_env: []
      words: [{<test_incompatible_with_recurse_submodules>} {<--unmerged>}]
      redirects: []
      do_fork: T
    )
    (command.Simple
      blame_tok: <test_done>
      more_env: []
      words: [{<test_done>}]
      redirects: []
      do_fork: T
    )
  ]
)