(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:'git submodule sync\n' span_id:15) (Token id:Id.Lit_Chars val:'\n' span_id:16) (Token id:Id.Lit_Chars val:'These tests exercise the "git submodule sync" subcommand.\n' span_id:17) ) } spids: [13] ) ] ) (C {(.)} {(./test-lib.sh)}) (C {(test_expect_success)} {(setup)} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:31) (Token id:Id.Lit_Chars val:'\techo file >file &&\n' span_id:32) (Token id:Id.Lit_Chars val:'\tgit add file &&\n' span_id:33) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:34) (Token id:Id.Lit_Chars val:'\tgit commit -m upstream &&\n' span_id:35) (Token id:Id.Lit_Chars val:'\tgit clone . super &&\n' span_id:36) (Token id:Id.Lit_Chars val:'\tgit clone super submodule &&\n' span_id:37) (Token id:Id.Lit_Chars val:'\t(\n' span_id:38) (Token id:Id.Lit_Chars val:'\t\tcd submodule &&\n' span_id:39) (Token id: Id.Lit_Chars val: '\t\tgit submodule add ../submodule sub-submodule &&\n' span_id: 40 ) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:41) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "sub-submodule"\n' span_id:42) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:43) (Token id:Id.Lit_Chars val:'\t(\n' span_id:44) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:45) (Token id:Id.Lit_Chars val:'\t\tgit submodule add ../submodule submodule &&\n' span_id:46) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:47) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "submodule"\n' span_id:48) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:49) (Token id:Id.Lit_Chars val:'\tgit clone super super-clone &&\n' span_id:50) (Token id:Id.Lit_Chars val:'\t(\n' span_id:51) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:52) (Token id: Id.Lit_Chars val: '\t\tgit submodule update --init --recursive\n' span_id: 53 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:54) (Token id:Id.Lit_Chars val:'\tgit clone super empty-clone &&\n' span_id:55) (Token id:Id.Lit_Chars val:'\t(\n' span_id:56) (Token id:Id.Lit_Chars val:'\t\tcd empty-clone &&\n' span_id:57) (Token id:Id.Lit_Chars val:'\t\tgit submodule init\n' span_id:58) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:59) (Token id:Id.Lit_Chars val:'\tgit clone super top-only-clone &&\n' span_id:60) (Token id:Id.Lit_Chars val:'\tgit clone super relative-clone &&\n' span_id:61) (Token id:Id.Lit_Chars val:'\t(\n' span_id:62) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:63) (Token id:Id.Lit_Chars val:'\t\tgit submodule update --init --recursive\n' span_id:64) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:65) (Token id:Id.Lit_Chars val:'\tgit clone super recursive-clone &&\n' span_id:66) (Token id:Id.Lit_Chars val:'\t(\n' span_id:67) (Token id:Id.Lit_Chars val:'\t\tcd recursive-clone &&\n' span_id:68) (Token id: Id.Lit_Chars val: '\t\tgit submodule update --init --recursive\n' span_id: 69 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:70) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'change submodule' span_id:77))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:81) (Token id:Id.Lit_Chars val:'\t(\n' span_id:82) (Token id:Id.Lit_Chars val:'\t\tcd submodule &&\n' span_id:83) (Token id:Id.Lit_Chars val:'\t\techo second line >>file &&\n' span_id:84) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:85) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m "change submodule"\n' span_id:86) (Token id:Id.Lit_Chars val:'\t)\n' span_id:87) ) } ) (command.ShFunction name: reset_submodule_urls body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:root) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 103 ) command_list: (command.CommandList children:[(C {(pwd)})]) ) } spids: [102] ) ] ) (C {(cd)} {(super-clone/submodule)}) (C {(git)} {(config)} {(remote.origin.url)} {(DQ ($ Id.VSub_DollarName '$root') (/submodule))} ) ] ) ] ) ) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:root) op: assign_op.Equal rhs: { (command_sub left_token: (Token id: Id.Left_DollarParen val: '$(' span_id: 138 ) command_list: (command.CommandList children:[(C {(pwd)})]) ) } spids: [137] ) ] ) (C {(cd)} {(super-clone/submodule/sub-submodule)}) (C {(git)} {(config)} {(remote.origin.url)} {(DQ ($ Id.VSub_DollarName '$root') (/submodule))} ) ] ) ] ) ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'change submodule url' span_id:172))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:176) (Token id:Id.Lit_Chars val:'\t(\n' span_id:177) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:178) (Token id:Id.Lit_Chars val:'\t\tcd submodule &&\n' span_id:179) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:180) (Token id:Id.Lit_Chars val:'\t\tgit pull\n' span_id:181) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:182) (Token id:Id.Lit_Chars val:'\tmv submodule moved-submodule &&\n' span_id:183) (Token id:Id.Lit_Chars val:'\t(\n' span_id:184) (Token id:Id.Lit_Chars val:'\t\tcd moved-submodule &&\n' span_id:185) (Token id: Id.Lit_Chars val: '\t\tgit config -f .gitmodules submodule.sub-submodule.url ../moved-submodule &&\n' span_id: 186 ) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:187) (Token id: Id.Lit_Chars val: '\t\tgit commit -a -m moved-sub-submodule\n' span_id: 188 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:189) (Token id:Id.Lit_Chars val:'\t(\n' span_id:190) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:191) (Token id: Id.Lit_Chars val: '\t\tgit config -f .gitmodules submodule.submodule.url ../moved-submodule &&\n' span_id: 192 ) (Token id:Id.Lit_Chars val:'\t\ttest_tick &&\n' span_id:193) (Token id:Id.Lit_Chars val:'\t\tgit commit -a -m moved-submodule\n' span_id:194) (Token id:Id.Lit_Chars val:'\t)\n' span_id:195) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" should update submodule URLs' span_id: 202 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:206) (Token id:Id.Lit_Chars val:'\t(\n' span_id:207) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:208) (Token id: Id.Lit_Chars val: '\t\tgit pull --no-recurse-submodules &&\n' span_id: 209 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync\n' span_id:210) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:211) (Token id:Id.Lit_Chars val:'\ttest -d "$(\n' span_id:212) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule &&\n' span_id:213) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:214) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:215) (Token id:Id.Lit_Chars val:'\ttest ! -d "$(\n' span_id:216) (Token id: Id.Lit_Chars val: '\t\tcd super-clone/submodule/sub-submodule &&\n' span_id: 217 ) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:218) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\t(\n' span_id:220) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule &&\n' span_id:221) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:222) (Token id:Id.Lit_Chars val:'\t\tgit pull\n' span_id:223) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:224) (Token id:Id.Lit_Chars val:'\t(\n' span_id:225) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:226) (Token id:Id.Lit_Chars val:'\t\ttest -d "$(git config submodule.submodule.url)"\n' span_id:227) (Token id:Id.Lit_Chars val:'\t)\n' span_id:228) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync --recursive" should update all submodule URLs' span_id: 235 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:239) (Token id:Id.Lit_Chars val:'\t(\n' span_id:240) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:242) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:243) (Token id: Id.Lit_Chars val: '\t\t\tgit pull --no-recurse-submodules\n' span_id: 244 ) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:245) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync --recursive\n' span_id:246) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:247) (Token id:Id.Lit_Chars val:'\ttest -d "$(\n' span_id:248) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule &&\n' span_id:249) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:250) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\ttest -d "$(\n' span_id:252) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule/sub-submodule &&\n' span_id:253) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:254) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:255) (Token id:Id.Lit_Chars val:'\t(\n' span_id:256) (Token id: Id.Lit_Chars val: '\t\tcd super-clone/submodule/sub-submodule &&\n' span_id: 257 ) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\t\tgit pull\n' span_id:259) (Token id:Id.Lit_Chars val:'\t)\n' span_id:260) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'reset submodule URLs' span_id:267))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:271) (Token id:Id.Lit_Chars val:'\treset_submodule_urls super-clone\n' span_id:272) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" should update submodule URLs - subdirectory' span_id: 279 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:283) (Token id:Id.Lit_Chars val:'\t(\n' span_id:284) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:285) (Token id: Id.Lit_Chars val: '\t\tgit pull --no-recurse-submodules &&\n' span_id: 286 ) (Token id:Id.Lit_Chars val:'\t\tmkdir -p sub &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:288) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync >../../output\n' span_id:289) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:290) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "\\\\.\\\\./submodule" output &&\n' span_id:291) (Token id:Id.Lit_Chars val:'\ttest -d "$(\n' span_id:292) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:294) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:295) (Token id:Id.Lit_Chars val:'\ttest ! -d "$(\n' span_id:296) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule/sub-submodule &&\n' span_id:297) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:298) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:299) (Token id:Id.Lit_Chars val:'\t(\n' span_id:300) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule &&\n' span_id:301) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:302) (Token id:Id.Lit_Chars val:'\t\tgit pull\n' span_id:303) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:304) (Token id:Id.Lit_Chars val:'\t(\n' span_id:305) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:306) (Token id:Id.Lit_Chars val:'\t\ttest -d "$(git config submodule.submodule.url)"\n' span_id:307) (Token id:Id.Lit_Chars val:'\t)\n' span_id:308) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync --recursive" should update all submodule URLs - subdirectory' span_id: 315 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:319) (Token id:Id.Lit_Chars val:'\t(\n' span_id:320) (Token id:Id.Lit_Chars val:'\t\tcd super-clone &&\n' span_id:321) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:322) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:323) (Token id: Id.Lit_Chars val: '\t\t\tgit pull --no-recurse-submodules\n' span_id: 324 ) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:325) (Token id:Id.Lit_Chars val:'\t\tmkdir -p sub &&\n' span_id:326) (Token id:Id.Lit_Chars val:'\t\tcd sub &&\n' span_id:327) (Token id: Id.Lit_Chars val: '\t\tgit submodule sync --recursive >../../output\n' span_id: 328 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:329) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "\\\\.\\\\./submodule/sub-submodule" output &&\n' span_id: 330 ) (Token id:Id.Lit_Chars val:'\ttest -d "$(\n' span_id:331) (Token id:Id.Lit_Chars val:'\t\tcd super-clone/submodule &&\n' span_id:332) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:333) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:334) (Token id:Id.Lit_Chars val:'\ttest -d "$(\n' span_id:335) (Token id: Id.Lit_Chars val: '\t\tcd super-clone/submodule/sub-submodule &&\n' span_id: 336 ) (Token id:Id.Lit_Chars val:'\t\tgit config remote.origin.url\n' span_id:337) (Token id:Id.Lit_Chars val:'\t)" &&\n' span_id:338) (Token id:Id.Lit_Chars val:'\t(\n' span_id:339) (Token id: Id.Lit_Chars val: '\t\tcd super-clone/submodule/sub-submodule &&\n' span_id: 340 ) (Token id:Id.Lit_Chars val:'\t\tgit checkout master &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\t\tgit pull\n' span_id:342) (Token id:Id.Lit_Chars val:'\t)\n' span_id:343) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" should update known submodule URLs' span_id: 350 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:354) (Token id:Id.Lit_Chars val:'\t(\n' span_id:355) (Token id:Id.Lit_Chars val:'\t\tcd empty-clone &&\n' span_id:356) (Token id:Id.Lit_Chars val:'\t\tgit pull &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:358) (Token id: Id.Lit_Chars val: '\t\ttest -d "$(git config submodule.submodule.url)"\n' span_id: 359 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:360) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" should not vivify uninteresting submodule' span_id: 367 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:371) (Token id:Id.Lit_Chars val:'\t(\n' span_id:372) (Token id:Id.Lit_Chars val:'\t\tcd top-only-clone &&\n' span_id:373) (Token id:Id.Lit_Chars val:'\t\tgit pull &&\n' span_id:374) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:375) (Token id: Id.Lit_Chars val: '\t\ttest -z "$(git config submodule.submodule.url)" &&\n' span_id: 376 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync submodule &&\n' span_id:377) (Token id: Id.Lit_Chars val: '\t\ttest -z "$(git config submodule.submodule.url)"\n' span_id: 378 ) (Token id:Id.Lit_Chars val:'\t)\n' span_id:379) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form foo' span_id: 386 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:390) (Token id:Id.Lit_Chars val:'\t(\n' span_id:391) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:392) (Token id:Id.Lit_Chars val:'\t\tgit remote set-url origin foo &&\n' span_id:393) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:394) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:395) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:396) (Token id: Id.Lit_Chars val: '\t\t\t#actual fails with: "cannot strip off url foo\n' span_id: 397 ) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../submodule"\n' span_id: 398 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:399) (Token id:Id.Lit_Chars val:'\t)\n' span_id:400) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form foo/bar' span_id: 407 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:411) (Token id:Id.Lit_Chars val:'\t(\n' span_id:412) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:413) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin foo/bar &&\n' span_id: 414 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:415) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:416) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:417) (Token id:Id.Lit_Chars val:'\t\t\t#actual foo/submodule\n' span_id:418) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../foo/submodule"\n' span_id: 419 ) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:420) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:421) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule/sub-submodule &&\n' span_id:422) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" != "../../foo/submodule"\n' span_id: 423 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:424) (Token id:Id.Lit_Chars val:'\t)\n' span_id:425) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync --recursive" propagates changes in origin' span_id: 432 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:436) (Token id:Id.Lit_Chars val:'\t(\n' span_id:437) (Token id:Id.Lit_Chars val:'\t\tcd recursive-clone &&\n' span_id:438) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin foo/bar &&\n' span_id: 439 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync --recursive &&\n' span_id:440) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:441) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:442) (Token id:Id.Lit_Chars val:'\t\t\t#actual foo/submodule\n' span_id:443) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../foo/submodule"\n' span_id: 444 ) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:445) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:446) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule/sub-submodule &&\n' span_id:447) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../../foo/submodule"\n' span_id: 448 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:449) (Token id:Id.Lit_Chars val:'\t)\n' span_id:450) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form ./foo' span_id: 457 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:461) (Token id:Id.Lit_Chars val:'\t(\n' span_id:462) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:463) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin ./foo &&\n' span_id: 464 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:465) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:466) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:467) (Token id:Id.Lit_Chars val:'\t\t\t#actual ./submodule\n' span_id:468) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../submodule"\n' span_id: 469 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:470) (Token id:Id.Lit_Chars val:'\t)\n' span_id:471) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form ./foo/bar' span_id: 478 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:482) (Token id:Id.Lit_Chars val:'\t(\n' span_id:483) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:484) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin ./foo/bar &&\n' span_id: 485 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:486) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:487) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:488) (Token id:Id.Lit_Chars val:'\t\t\t#actual ./foo/submodule\n' span_id:489) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../foo/submodule"\n' span_id: 490 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:491) (Token id:Id.Lit_Chars val:'\t)\n' span_id:492) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form ../foo' span_id: 499 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:503) (Token id:Id.Lit_Chars val:'\t(\n' span_id:504) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:505) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin ../foo &&\n' span_id: 506 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:507) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:508) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\t\t\t#actual ../submodule\n' span_id:510) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../../submodule"\n' span_id: 511 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:512) (Token id:Id.Lit_Chars val:'\t)\n' span_id:513) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form ../foo/bar' span_id: 520 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:524) (Token id:Id.Lit_Chars val:'\t(\n' span_id:525) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:526) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin ../foo/bar &&\n' span_id: 527 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:528) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:529) (Token id:Id.Lit_Chars val:'\t\t\tcd submodule &&\n' span_id:530) (Token id:Id.Lit_Chars val:'\t\t\t#actual ../foo/submodule\n' span_id:531) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../../foo/submodule"\n' span_id: 532 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:533) (Token id:Id.Lit_Chars val:'\t)\n' span_id:534) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: '"git submodule sync" handles origin URL of the form ../foo/bar with deeply nested submodule' span_id: 541 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:545) (Token id:Id.Lit_Chars val:'\t(\n' span_id:546) (Token id:Id.Lit_Chars val:'\t\tcd relative-clone &&\n' span_id:547) (Token id: Id.Lit_Chars val: '\t\tgit remote set-url origin ../foo/bar &&\n' span_id: 548 ) (Token id:Id.Lit_Chars val:'\t\tmkdir -p a/b/c &&\n' span_id:549) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:550) (Token id:Id.Lit_Chars val:'\t\t\tcd a/b/c &&\n' span_id:551) (Token id:Id.Lit_Chars val:'\t\t\tgit init &&\n' span_id:552) (Token id:Id.Lit_Chars val:'\t\t\t>.gitignore &&\n' span_id:553) (Token id:Id.Lit_Chars val:'\t\t\tgit add .gitignore &&\n' span_id:554) (Token id:Id.Lit_Chars val:'\t\t\ttest_tick &&\n' span_id:555) (Token id:Id.Lit_Chars val:'\t\t\tgit commit -m "initial commit"\n' span_id:556) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:557) (Token id: Id.Lit_Chars val: '\t\tgit submodule add ../bar/a/b/c ./a/b/c &&\n' span_id: 558 ) (Token id:Id.Lit_Chars val:'\t\tgit submodule sync &&\n' span_id:559) (Token id:Id.Lit_Chars val:'\t\t(\n' span_id:560) (Token id:Id.Lit_Chars val:'\t\t\tcd a/b/c &&\n' span_id:561) (Token id:Id.Lit_Chars val:'\t\t\t#actual ../foo/bar/a/b/c\n' span_id:562) (Token id: Id.Lit_Chars val: '\t\t\ttest "$(git config remote.origin.url)" = "../../../../foo/bar/a/b/c"\n' span_id: 563 ) (Token id:Id.Lit_Chars val:'\t\t)\n' span_id:564) (Token id:Id.Lit_Chars val:'\t)\n' span_id:565) ) } ) (C {(test_done)}) ] )