(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:'difference in submodules' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(.)} {(DQ ($ Id.VSub_DollarName '$TEST_DIRECTORY')) (/diff-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:27) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:28) (Token id:Id.Lit_Chars val:'\ttest_create_repo sub &&\n' span_id:29) (Token id:Id.Lit_Chars val:'\t(\n' span_id:30) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:31) (Token id:Id.Lit_Chars val:'\t\techo hello >world &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\t\tgit add world &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\t\tgit commit -m submodule\n' span_id:34) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\n' span_id:36) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\techo frotz >nitfol &&\n' span_id:38) (Token id:Id.Lit_Chars val:'\tgit add nitfol sub &&\n' span_id:39) (Token id:Id.Lit_Chars val:'\tgit commit -m superproject &&\n' span_id:40) (Token id:Id.Lit_Chars val:'\n' span_id:41) (Token id:Id.Lit_Chars val:'\t(\n' span_id:42) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\t\techo goodbye >world &&\n' span_id:44) (Token id:Id.Lit_Chars val:'\t\tgit add world &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "submodule #2"\n' span_id:46) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\n' span_id:48) (Token id:Id.Lit_Chars val:'\tset x $(\n' span_id:49) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\t\tgit rev-list HEAD\n' span_id:51) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:52) (Token id:Id.Lit_Chars val:'\techo ":160000 160000 $3 $_z40 M\tsub" >expect &&\n' span_id:53) (Token id:Id.Lit_Chars val:'\tsubtip=$3 subprev=$2\n' span_id:54) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff --raw HEAD' span_id:61))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:65) (Token id: Id.Lit_Chars val: '\tgit diff --raw --abbrev=40 HEAD >actual &&\n' span_id: 66 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual\n' span_id:67) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-index --raw HEAD' span_id:74))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:78) (Token id: Id.Lit_Chars val: '\tgit diff-index --raw HEAD >actual.index &&\n' span_id: 79 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.index\n' span_id:80) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff-files --raw' span_id:87))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:91) (Token id: Id.Lit_Chars val: '\tgit diff-files --raw >actual.files &&\n' span_id: 92 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect actual.files\n' span_id:93) ) } ) (command.ShFunction name: expect_from_to body: (command.BraceGroup children: [ (C {(printf)} { (DQ ('%sSubproject commit %s') (Id.Lit_Other '\\') ('n+Subproject commit %s') (Id.Lit_Other '\\') (n) ) } {(DQ (-))} {(DQ ($ Id.VSub_Number '$1'))} {(DQ ($ Id.VSub_Number '$2'))} ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff HEAD' span_id:135))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:139) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:140) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:141) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 142 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body\n' span_id:143) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff HEAD with dirty submodule (work tree)' span_id:150))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:154) (Token id:Id.Lit_Chars val:'\techo >>sub/world &&\n' span_id:155) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:156) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 157 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subtip $subprev-dirty &&\n' span_id:158) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body\n' span_id:159) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff HEAD with dirty submodule (index)' span_id:166))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\t(\n' span_id:171) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\t\techo >>world &&\n' span_id:174) (Token id:Id.Lit_Chars val:'\t\tgit add world\n' span_id:175) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:176) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:177) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:178) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev-dirty &&\n' span_id: 179 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body\n' span_id:180) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff HEAD with dirty submodule (untracked)' span_id:187))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:191) (Token id:Id.Lit_Chars val:'\t(\n' span_id:192) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard &&\n' span_id:194) (Token id:Id.Lit_Chars val:'\t\tgit clean -qfdx &&\n' span_id:195) (Token id:Id.Lit_Chars val:'\t\t>cruft\n' span_id:196) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:197) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:198) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:199) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev-dirty &&\n' span_id: 200 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body\n' span_id:201) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (work tree, refs match)' span_id: 208 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:212) (Token id:Id.Lit_Chars val:'\tgit commit -m "x" sub &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\techo >>sub/world &&\n' span_id:214) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:216) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id: 217 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:218) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules HEAD >actual2 &&\n' span_id: 219 ) (Token id:Id.Lit_Chars val:'\t! test -s actual2 &&\n' span_id:220) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=untracked HEAD >actual3 &&\n' span_id: 221 ) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual3 >actual3.body &&\n' span_id:222) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id: 223 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual3.body &&\n' span_id:224) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=dirty HEAD >actual4 &&\n' span_id: 225 ) (Token id:Id.Lit_Chars val:'\t! test -s actual4\n' span_id:226) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (work tree, refs match) [.git/config]' span_id: 233 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:237) (Token id: Id.Lit_Chars val: '\tgit config diff.ignoreSubmodules all &&\n' span_id: 238 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:239) (Token id:Id.Lit_Chars val:'\t! test -s actual &&\n' span_id:240) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore none &&\n' span_id:241) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.path sub &&\n' span_id: 242 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:243) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 244 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:246) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore all &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual2 &&\n' span_id:248) (Token id:Id.Lit_Chars val:'\t! test -s actual2 &&\n' span_id:249) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.ignore untracked &&\n' span_id: 250 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual3 &&\n' span_id:251) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual3 >actual3.body &&\n' span_id: 252 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id:253) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.body actual3.body &&\n' span_id: 254 ) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore dirty &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual4 &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\t! test -s actual4 &&\n' span_id:257) (Token id: Id.Lit_Chars val: '\tgit diff HEAD --ignore-submodules=none >actual &&\n' span_id: 258 ) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:259) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id: 260 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:261) (Token id: Id.Lit_Chars val: '\tgit config --remove-section submodule.subname &&\n' span_id: 262 ) (Token id:Id.Lit_Chars val:'\tgit config --unset diff.ignoreSubmodules\n' span_id:263) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (work tree, refs match) [.gitmodules]' span_id: 270 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:274) (Token id: Id.Lit_Chars val: '\tgit config diff.ignoreSubmodules dirty &&\n' span_id: 275 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:276) (Token id:Id.Lit_Chars val:'\t! test -s actual &&\n' span_id:277) (Token id: Id.Lit_Chars val: '\tgit config --add -f .gitmodules submodule.subname.ignore none &&\n' span_id: 278 ) (Token id: Id.Lit_Chars val: '\tgit config --add -f .gitmodules submodule.subname.path sub &&\n' span_id: 279 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:280) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 281 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:283) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.subname.ignore all &&\n' span_id: 284 ) (Token id:Id.Lit_Chars val:'\tgit config -f .gitmodules submodule.subname.path sub &&\n' span_id:285) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual2 &&\n' span_id:286) (Token id:Id.Lit_Chars val:'\t! test -s actual2 &&\n' span_id:287) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.subname.ignore untracked &&\n' span_id: 288 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual3 &&\n' span_id:289) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual3 >actual3.body &&\n' span_id: 290 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id:291) (Token id: Id.Lit_Chars val: '\ttest_cmp expect.body actual3.body &&\n' span_id: 292 ) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.subname.ignore dirty &&\n' span_id: 293 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual4 &&\n' span_id:294) (Token id:Id.Lit_Chars val:'\t! test -s actual4 &&\n' span_id:295) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore none &&\n' span_id:296) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.path sub &&\n' span_id: 297 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:298) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 299 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id:300) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:301) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:302) (Token id: Id.Lit_Chars val: '\tgit config --remove-section -f .gitmodules submodule.subname &&\n' span_id: 303 ) (Token id:Id.Lit_Chars val:'\tgit config --unset diff.ignoreSubmodules &&\n' span_id:304) (Token id:Id.Lit_Chars val:'\trm .gitmodules\n' span_id:305) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (index, refs match)' span_id: 312 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:316) (Token id:Id.Lit_Chars val:'\t(\n' span_id:317) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:318) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard &&\n' span_id:319) (Token id:Id.Lit_Chars val:'\t\techo >>world &&\n' span_id:320) (Token id:Id.Lit_Chars val:'\t\tgit add world\n' span_id:321) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:323) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:324) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id: 325 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body\n' span_id:326) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (untracked, refs match)' span_id: 333 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:337) (Token id:Id.Lit_Chars val:'\t(\n' span_id:338) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:339) (Token id:Id.Lit_Chars val:'\t\tgit reset --hard &&\n' span_id:340) (Token id:Id.Lit_Chars val:'\t\tgit clean -qfdx &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\t\t>cruft\n' span_id:342) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:345) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id: 346 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:347) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=all HEAD >actual2 &&\n' span_id: 348 ) (Token id:Id.Lit_Chars val:'\t! test -s actual2 &&\n' span_id:349) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=untracked HEAD >actual3 &&\n' span_id: 350 ) (Token id:Id.Lit_Chars val:'\t! test -s actual3 &&\n' span_id:351) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=dirty HEAD >actual4 &&\n' span_id: 352 ) (Token id:Id.Lit_Chars val:'\t! test -s actual4\n' span_id:353) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (untracked, refs match) [.git/config]' span_id: 360 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:364) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.ignore all &&\n' span_id: 365 ) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.path sub &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual2 &&\n' span_id:367) (Token id:Id.Lit_Chars val:'\t! test -s actual2 &&\n' span_id:368) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.ignore untracked &&\n' span_id: 369 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual3 &&\n' span_id:370) (Token id:Id.Lit_Chars val:'\t! test -s actual3 &&\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore dirty &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual4 &&\n' span_id:373) (Token id:Id.Lit_Chars val:'\t! test -s actual4 &&\n' span_id:374) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=none HEAD >actual &&\n' span_id: 375 ) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:376) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id: 377 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:378) (Token id: Id.Lit_Chars val: '\tgit config --remove-section submodule.subname\n' span_id: 379 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff HEAD with dirty submodule (untracked, refs match) [.gitmodules]' span_id: 386 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:390) (Token id: Id.Lit_Chars val: '\tgit config --add -f .gitmodules submodule.subname.ignore all &&\n' span_id: 391 ) (Token id: Id.Lit_Chars val: '\tgit config --add -f .gitmodules submodule.subname.path sub &&\n' span_id: 392 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual2 &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\t! test -s actual2 &&\n' span_id:394) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.subname.ignore untracked &&\n' span_id: 395 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual3 &&\n' span_id:396) (Token id:Id.Lit_Chars val:'\t! test -s actual3 &&\n' span_id:397) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.subname.ignore dirty &&\n' span_id: 398 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual4 &&\n' span_id:399) (Token id:Id.Lit_Chars val:'\t! test -s actual4 &&\n' span_id:400) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore none &&\n' span_id:401) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.path sub &&\n' span_id: 402 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD >actual &&\n' span_id:403) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 404 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subprev $subprev-dirty &&\n' span_id:405) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname &&\n' span_id:407) (Token id: Id.Lit_Chars val: '\tgit config --remove-section -f .gitmodules submodule.subname &&\n' span_id: 408 ) (Token id:Id.Lit_Chars val:'\trm .gitmodules\n' span_id:409) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff between submodule commits' span_id:416))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:420) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:421) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:422) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 423 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:424) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=dirty HEAD^..HEAD >actual &&\n' span_id: 425 ) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:426) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 427 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:428) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules HEAD^..HEAD >actual &&\n' span_id: 429 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:430) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff between submodule commits [.git/config]' span_id: 437 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:441) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:442) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:443) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 444 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:445) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.ignore dirty &&\n' span_id: 446 ) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.path sub &&\n' span_id:447) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:448) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:449) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 450 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:451) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.ignore all &&\n' span_id: 452 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:453) (Token id:Id.Lit_Chars val:'\t! test -s actual &&\n' span_id:454) (Token id: Id.Lit_Chars val: '\tgit diff --ignore-submodules=dirty HEAD^..HEAD >actual &&\n' span_id: 455 ) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:456) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 457 ) (Token id:Id.Lit_Chars val:'\tgit config --remove-section submodule.subname\n' span_id:458) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'git diff between submodule commits [.gitmodules]' span_id: 465 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:469) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:470) (Token id:Id.Lit_Chars val:'\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id:471) (Token id: Id.Lit_Chars val: '\texpect_from_to >expect.body $subtip $subprev &&\n' span_id: 472 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:473) (Token id: Id.Lit_Chars val: '\tgit config --add -f .gitmodules submodule.subname.ignore dirty &&\n' span_id: 474 ) (Token id: Id.Lit_Chars val: '\tgit config --add -f .gitmodules submodule.subname.path sub &&\n' span_id: 475 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:476) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 477 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subtip $subprev &&\n' span_id:478) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.body actual.body &&\n' span_id:479) (Token id: Id.Lit_Chars val: '\tgit config -f .gitmodules submodule.subname.ignore all &&\n' span_id: 480 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:481) (Token id:Id.Lit_Chars val:'\t! test -s actual &&\n' span_id:482) (Token id:Id.Lit_Chars val:'\tgit config submodule.subname.ignore dirty &&\n' span_id:483) (Token id: Id.Lit_Chars val: '\tgit config submodule.subname.path sub &&\n' span_id: 484 ) (Token id:Id.Lit_Chars val:'\tgit diff HEAD^..HEAD >actual &&\n' span_id:485) (Token id: Id.Lit_Chars val: '\tsed -e "1,/^@@/d" actual >actual.body &&\n' span_id: 486 ) (Token id:Id.Lit_Chars val:'\texpect_from_to >expect.body $subtip $subprev &&\n' span_id:487) (Token id: Id.Lit_Chars val: '\tgit config --remove-section submodule.subname &&\n' span_id: 488 ) (Token id: Id.Lit_Chars val: '\tgit config --remove-section -f .gitmodules submodule.subname &&\n' span_id: 489 ) (Token id:Id.Lit_Chars val:'\trm .gitmodules\n' span_id:490) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'git diff (empty submodule dir)' span_id:497))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:501) (Token id:Id.Lit_Chars val:'\t: >empty &&\n' span_id:502) (Token id:Id.Lit_Chars val:'\trm -rf sub/* sub/.git &&\n' span_id:503) (Token id:Id.Lit_Chars val:'\tgit diff > actual.empty &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\ttest_cmp empty actual.empty\n' span_id:505) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'conflicted submodule setup' span_id:512))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:516) (Token id:Id.Lit_Chars val:'\n' span_id:517) (Token id:Id.Lit_Chars val:'\t# 39 efs\n' span_id:518) (Token id:Id.Lit_Chars val:'\tc=fffffffffffffffffffffffffffffffffffffff &&\n' span_id:519) (Token id:Id.Lit_Chars val:'\t(\n' span_id:520) (Token id:Id.Lit_Chars val:'\t\techo "000000 $_z40 0\tsub" &&\n' span_id:521) (Token id:Id.Lit_Chars val:'\t\techo "160000 1$c 1\tsub" &&\n' span_id:522) (Token id:Id.Lit_Chars val:'\t\techo "160000 2$c 2\tsub" &&\n' span_id:523) (Token id:Id.Lit_Chars val:'\t\techo "160000 3$c 3\tsub"\n' span_id:524) (Token id:Id.Lit_Chars val:'\t) | git update-index --index-info &&\n' span_id:525) (Token id:Id.Lit_Chars val:'\techo >expect.nosub ' span_id:526) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:528)) (SQ (Token id:Id.Lit_Chars val:'diff --cc sub\n' span_id:530) (Token id:Id.Lit_Chars val:'index 2ffffff,3ffffff..0000000\n' span_id:531) (Token id:Id.Lit_Chars val:'--- a/sub\n' span_id:532) (Token id:Id.Lit_Chars val:'+++ b/sub\n' span_id:533) (Token id:Id.Lit_Chars val:'@@@ -1,1 -1,1 +1,1 @@@\n' span_id:534) (Token id: Id.Lit_Chars val: '- Subproject commit 2fffffffffffffffffffffffffffffffffffffff\n' span_id: 535 ) (Token id: Id.Lit_Chars val: ' -Subproject commit 3fffffffffffffffffffffffffffffffffffffff\n' span_id: 536 ) (Token id: Id.Lit_Chars val: '++Subproject commit 0000000000000000000000000000000000000000' span_id: 537 ) ) (word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:"\\'" span_id:539)) (SQ (Token id:Id.Lit_Chars val:' &&\n' span_id:541) (Token id:Id.Lit_Chars val:'\n' span_id:542) (Token id:Id.Lit_Chars val:'\thh=$(git rev-parse HEAD) &&\n' span_id:543) (Token id: Id.Lit_Chars val: '\tsed -e "s/$_z40/$hh/" expect.nosub >expect.withsub\n' span_id: 544 ) (Token id:Id.Lit_Chars val:'\n' span_id:545) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'combined (empty submodule)' span_id:552))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:556) (Token id:Id.Lit_Chars val:'\trm -fr sub && mkdir sub &&\n' span_id:557) (Token id:Id.Lit_Chars val:'\tgit diff >actual &&\n' span_id:558) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.nosub actual\n' span_id:559) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'combined (with submodule)' span_id:566))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:570) (Token id:Id.Lit_Chars val:'\trm -fr sub &&\n' span_id:571) (Token id:Id.Lit_Chars val:'\tgit clone --no-checkout . sub &&\n' span_id:572) (Token id:Id.Lit_Chars val:'\tgit diff >actual &&\n' span_id:573) (Token id:Id.Lit_Chars val:'\ttest_cmp expect.withsub actual\n' span_id:574) ) } ) (C {(test_done)}) ] )