(CommandList children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_description) op: Equal rhs: {(SQ <"Basic subproject functionality">)} spids: [4] ) ] spids: [4] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ <"setup: create superproject">)} { (SQ <"\n"> <"\t: >Makefile &&\n"> <"\tgit add Makefile &&\n"> <"\tgit commit -m \"Superproject created\"\n"> ) } ) (C {(test_expect_success)} {(SQ <"setup: create subprojects">)} { (SQ <"\n"> <"\tmkdir sub1 &&\n"> <"\t( cd sub1 && git init && : >Makefile && git add * &&\n"> <"\tgit commit -q -m \"subproject 1\" ) &&\n"> <"\tmkdir sub2 &&\n"> <"\t( cd sub2 && git init && : >Makefile && git add * &&\n"> <"\tgit commit -q -m \"subproject 2\" ) &&\n"> <"\tgit update-index --add sub1 &&\n"> <"\tgit add sub2 &&\n"> <"\tgit commit -q -m \"subprojects added\" &&\n"> <"\tgit diff-tree --abbrev=5 HEAD^ HEAD |cut -d\" \" -f-3,5- >current &&\n"> <"\tgit branch save HEAD &&\n"> <"\tcat >expected <<-\\EOF &&\n"> <"\t:000000 160000 00000... A\tsub1\n"> <"\t:000000 160000 00000... A\tsub2\n"> <"\tEOF\n"> <"\ttest_cmp expected current\n"> ) } ) (C {(test_expect_success)} {(SQ <"check if fsck ignores the subprojects">)} {(SQ <"\n"> <"\tgit fsck --full\n">)} ) (C {(test_expect_success)} {(SQ <"check if commit in a subproject detected">)} { (SQ <"\n"> <"\t( cd sub1 &&\n"> <"\techo \"all:\" >>Makefile &&\n"> <"\techo \"\ttrue\" >>Makefile &&\n"> <"\tgit commit -q -a -m \"make all\" ) &&\n"> <"\ttest_expect_code 1 git diff-files --exit-code\n"> ) } ) (C {(test_expect_success)} {(SQ <"check if a changed subproject HEAD can be committed">)} { (SQ <"\n"> <"\tgit commit -q -a -m \"sub1 changed\" &&\n"> <"\ttest_expect_code 1 git diff-tree --exit-code HEAD^ HEAD\n"> ) } ) (C {(test_expect_success)} {(SQ <"check if diff-index works for subproject elements">)} {(SQ <"\n"> <"\ttest_expect_code 1 git diff-index --exit-code --cached save -- sub1\n">)} ) (C {(test_expect_success)} {(SQ <"check if diff-tree works for subproject elements">)} {(SQ <"\n"> <"\ttest_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- sub1\n">)} ) (C {(test_expect_success)} {(SQ <"check if git diff works for subproject elements">)} {(SQ <"\n"> <"\ttest_expect_code 1 git diff --exit-code HEAD^ HEAD\n">)} ) (C {(test_expect_success)} {(SQ <"check if clone works">)} { (SQ <"\n"> <"\tgit ls-files -s >expected &&\n"> <"\tgit clone -l -s . cloned &&\n"> <"\t( cd cloned && git ls-files -s ) >current &&\n"> <"\ttest_cmp expected current\n"> ) } ) (C {(test_expect_success)} {(SQ <"removing and adding subproject">)} { (SQ <"\n"> <"\tgit update-index --force-remove -- sub2 &&\n"> <"\tmv sub2 sub3 &&\n"> <"\tgit add sub3 &&\n"> <"\tgit commit -q -m \"renaming a subproject\" &&\n"> <"\ttest_expect_code 1 git diff -M --name-status --exit-code HEAD^ HEAD\n"> ) } ) (C {(test_expect_success)} {(SQ <"checkout in superproject">)} { (SQ <"\n"> <"\tgit checkout save &&\n"> <"\tgit diff-index --exit-code --raw --cached save -- sub1\n"> ) } ) (C {(test_done)}) ] )