(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:'Basic subproject functionality' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: create superproject' span_id:17))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:21) (Token id:Id.Lit_Chars val:'\t: >Makefile &&\n' span_id:22) (Token id:Id.Lit_Chars val:'\tgit add Makefile &&\n' span_id:23) (Token id:Id.Lit_Chars val:'\tgit commit -m "Superproject created"\n' span_id:24) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup: create subprojects' span_id:31))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:35) (Token id:Id.Lit_Chars val:'\tmkdir sub1 &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\t( cd sub1 && git init && : >Makefile && git add * &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\tgit commit -q -m "subproject 1" ) &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tmkdir sub2 &&\n' span_id:39) (Token id: Id.Lit_Chars val: '\t( cd sub2 && git init && : >Makefile && git add * &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\tgit commit -q -m "subproject 2" ) &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\tgit update-index --add sub1 &&\n' span_id:42) (Token id:Id.Lit_Chars val:'\tgit add sub2 &&\n' span_id:43) (Token id: Id.Lit_Chars val: '\tgit commit -q -m "subprojects added" &&\n' span_id: 44 ) (Token id: Id.Lit_Chars val: '\tgit diff-tree --abbrev=5 HEAD^ HEAD |cut -d" " -f-3,5- >current &&\n' span_id: 45 ) (Token id:Id.Lit_Chars val:'\tgit branch save HEAD &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\tcat >expected <<-\\EOF &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\t:000000 160000 00000... A\tsub1\n' span_id:48) (Token id:Id.Lit_Chars val:'\t:000000 160000 00000... A\tsub2\n' span_id:49) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:50) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:51) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check if fsck ignores the subprojects' span_id:58))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:62) (Token id:Id.Lit_Chars val:'\tgit fsck --full\n' span_id:63) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check if commit in a subproject detected' span_id:70))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:74) (Token id:Id.Lit_Chars val:'\t( cd sub1 &&\n' span_id:75) (Token id:Id.Lit_Chars val:'\techo "all:" >>Makefile &&\n' span_id:76) (Token id:Id.Lit_Chars val:'\techo "\ttrue" >>Makefile &&\n' span_id:77) (Token id:Id.Lit_Chars val:'\tgit commit -q -a -m "make all" ) &&\n' span_id:78) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-files --exit-code\n' span_id: 79 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'check if a changed subproject HEAD can be committed' span_id: 86 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:90) (Token id: Id.Lit_Chars val: '\tgit commit -q -a -m "sub1 changed" &&\n' span_id: 91 ) (Token id:Id.Lit_Chars val:'\ttest_expect_code 1 git diff-tree --exit-code HEAD^ HEAD\n' span_id:92) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'check if diff-index works for subproject elements' span_id: 99 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:103) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-index --exit-code --cached save -- sub1\n' span_id: 104 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'check if diff-tree works for subproject elements' span_id: 111 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:115) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff-tree --exit-code HEAD^ HEAD -- sub1\n' span_id: 116 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check if git diff works for subproject elements' span_id:123))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:127) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff --exit-code HEAD^ HEAD\n' span_id: 128 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'check if clone works' span_id:135))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit ls-files -s >expected &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\tgit clone -l -s . cloned &&\n' span_id:141) (Token id: Id.Lit_Chars val: '\t( cd cloned && git ls-files -s ) >current &&\n' span_id: 142 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected current\n' span_id:143) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'removing and adding subproject' span_id:150))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) (Token id: Id.Lit_Chars val: '\tgit update-index --force-remove -- sub2 &&\n' span_id: 155 ) (Token id:Id.Lit_Chars val:'\tmv sub2 sub3 &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\tgit add sub3 &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\tgit commit -q -m "renaming a subproject" &&\n' span_id:158) (Token id: Id.Lit_Chars val: '\ttest_expect_code 1 git diff -M --name-status --exit-code HEAD^ HEAD\n' span_id: 159 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'checkout in superproject' span_id:172))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:176) (Token id:Id.Lit_Chars val:'\tgit checkout save &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\tgit diff-index --exit-code --raw --cached save -- sub1\n' span_id:178) ) } ) (C {(test_done)}) ] )