(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) 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'> ) } spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (C {(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'> ) } ) (FuncDef name: test_incompatible_with_recurse_submodules body: (BraceGroup children: [ (C {(test_expect_success)} {(DQ ('--recurse-submodules and ') ($ VSub_Number '$1') (' are incompatible'))} { (DQ ('\n') ('\t\ttest_must_fail git ls-files --recurse-submodules ') ($ VSub_Number '$1') (' 2>actual &&\n') ("\t\ttest_i18ngrep 'unsupported mode' actual\n") ('\t') ) } ) ] spids: [304] ) spids: [299 303] ) (C {(test_incompatible_with_recurse_submodules)} {(--deleted)}) (C {(test_incompatible_with_recurse_submodules)} {(--modified)}) (C {(test_incompatible_with_recurse_submodules)} {(--others)}) (C {(test_incompatible_with_recurse_submodules)} {(--stage)}) (C {(test_incompatible_with_recurse_submodules)} {(--killed)}) (C {(test_incompatible_with_recurse_submodules)} {(--unmerged)}) (C {(test_done)}) ] )