(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 status for submodule' span_id:6))} spids: [4] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShFunction name: test_create_repo_with_commit body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test_create_repo)} {(DQ ($ Id.VSub_Number '$1'))}) (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_Number '$1'))}) (command.Simple words: [{(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:46) fd: -1 arg_word: {(bar)} ) ] ) (C {(git)} {(add)} {(bar)}) (C {(git)} {(commit)} {(-m)} {(DQ (' Add bar'))}) (command.Simple words: [{(Id.Lit_Other ':')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:76) fd: -1 arg_word: {(foo)} ) ] ) (C {(git)} {(add)} {(foo)}) (C {(git)} {(commit)} {(-m)} {(DQ (' Add foo'))}) ] ) ] ) ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:setup span_id:110))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:114) (Token id:Id.Lit_Chars val:'\ttest_create_repo_with_commit sub &&\n' span_id:115) (Token id:Id.Lit_Chars val:'\techo output > .gitignore &&\n' span_id:116) (Token id:Id.Lit_Chars val:'\tgit add sub .gitignore &&\n' span_id:117) (Token id:Id.Lit_Chars val:'\tgit commit -m "Add submodule sub"\n' span_id:118) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status clean' span_id:125))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:129) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:130) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "nothing to commit" output\n' span_id:131) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'commit --dry-run -a clean' span_id:138))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:142) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit --dry-run -a >output &&\n' span_id: 143 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "nothing to commit" output\n' span_id:144) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with modified file in submodule' span_id:151))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:155) (Token id:Id.Lit_Chars val:'\t(cd sub && git reset --hard) &&\n' span_id:156) (Token id:Id.Lit_Chars val:'\techo "changed" >sub/foo &&\n' span_id:157) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:158) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (modified content)" output\n' span_id: 159 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with modified file in submodule (porcelain)' span_id: 166 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:170) (Token id:Id.Lit_Chars val:'\t(cd sub && git reset --hard) &&\n' span_id:171) (Token id:Id.Lit_Chars val:'\techo "changed" >sub/foo &&\n' span_id:172) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:173) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:174) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:175) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:176) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with added file in submodule' span_id:183))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:187) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 188 ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:189) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (modified content)" output\n' span_id: 190 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with added file in submodule (porcelain)' span_id:197))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:201) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 202 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:203) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:204) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:205) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:206) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with untracked file in submodule' span_id:213))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:217) (Token id:Id.Lit_Chars val:'\t(cd sub && git reset --hard) &&\n' span_id:218) (Token id:Id.Lit_Chars val:'\techo "content" >sub/new-file &&\n' span_id:219) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:220) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (untracked content)" output\n' span_id: 221 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -uno with untracked file in submodule' span_id:228))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:232) (Token id:Id.Lit_Chars val:'\tgit status -uno >output &&\n' span_id:233) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "^nothing to commit" output\n' span_id:234) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with untracked file in submodule (porcelain)' span_id: 241 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:245) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:246) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:247) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:248) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:249) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with added and untracked file in submodule' span_id: 256 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:260) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 261 ) (Token id:Id.Lit_Chars val:'\techo "content" >sub/new-file &&\n' span_id:262) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:263) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (modified content, untracked content)" output\n' span_id: 264 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with added and untracked file in submodule (porcelain)' span_id: 271 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:275) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 276 ) (Token id:Id.Lit_Chars val:'\techo "content" >sub/new-file &&\n' span_id:277) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:278) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:279) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:280) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:281) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with modified file in modified submodule' span_id:288))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:292) (Token id:Id.Lit_Chars val:'\t(cd sub && git reset --hard) &&\n' span_id:293) (Token id:Id.Lit_Chars val:'\trm sub/new-file &&\n' span_id:294) (Token id: Id.Lit_Chars val: '\t(cd sub && echo "next change" >foo && git commit -m "next change" foo) &&\n' span_id: 295 ) (Token id:Id.Lit_Chars val:'\techo "changed" >sub/foo &&\n' span_id:296) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:297) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (new commits, modified content)" output\n' span_id: 298 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with modified file in modified submodule (porcelain)' span_id: 305 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:309) (Token id:Id.Lit_Chars val:'\t(cd sub && git reset --hard) &&\n' span_id:310) (Token id:Id.Lit_Chars val:'\techo "changed" >sub/foo &&\n' span_id:311) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:312) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:313) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:314) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:315) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with added file in modified submodule' span_id:322))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:326) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 327 ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:328) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (new commits, modified content)" output\n' span_id: 329 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with added file in modified submodule (porcelain)' span_id: 336 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:340) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 341 ) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:343) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:344) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:345) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with untracked file in modified submodule' span_id: 352 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:356) (Token id:Id.Lit_Chars val:'\t(cd sub && git reset --hard) &&\n' span_id:357) (Token id:Id.Lit_Chars val:'\techo "content" >sub/new-file &&\n' span_id:358) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:359) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (new commits, untracked content)" output\n' span_id: 360 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with untracked file in modified submodule (porcelain)' span_id: 367 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:371) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:372) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:373) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:374) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:375) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with added and untracked file in modified submodule' span_id: 382 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:386) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 387 ) (Token id:Id.Lit_Chars val:'\techo "content" >sub/new-file &&\n' span_id:388) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:389) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (new commits, modified content, untracked content)" output\n' span_id: 390 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with added and untracked file in modified submodule (porcelain)' span_id: 397 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:401) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 402 ) (Token id:Id.Lit_Chars val:'\techo "content" >sub/new-file &&\n' span_id:403) (Token id:Id.Lit_Chars val:'\tgit status --porcelain >output &&\n' span_id:404) (Token id:Id.Lit_Chars val:'\tdiff output - <<-\\EOF\n' span_id:405) (Token id:Id.Lit_Chars val:'\t M sub\n' span_id:406) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:407) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup .git file for sub' span_id:414))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:418) (Token id:Id.Lit_Chars val:'\t(cd sub &&\n' span_id:419) (Token id:Id.Lit_Chars val:'\t rm -f new-file\n' span_id:420) (Token id:Id.Lit_Chars val:'\t REAL="$(pwd)/../.real" &&\n' span_id:421) (Token id:Id.Lit_Chars val:'\t mv .git "$REAL"\n' span_id:422) (Token id:Id.Lit_Chars val:'\t echo "gitdir: $REAL" >.git) &&\n' span_id:423) (Token id:Id.Lit_Chars val:'\t echo .real >>.gitignore &&\n' span_id:424) (Token id: Id.Lit_Chars val: '\t git commit -m "added .real to .gitignore" .gitignore\n' span_id: 425 ) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'status with added file in modified submodule with .git file' span_id: 432 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:436) (Token id: Id.Lit_Chars val: '\t(cd sub && git reset --hard && echo >foo && git add foo) &&\n' span_id: 437 ) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:438) (Token id: Id.Lit_Chars val: '\ttest_i18ngrep "modified: sub (new commits, modified content)" output\n' span_id: 439 ) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'rm submodule contents' span_id:446))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:450) (Token id:Id.Lit_Chars val:'\trm -rf sub/* sub/.git\n' span_id:451) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status clean (empty submodule dir)' span_id:458))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:462) (Token id:Id.Lit_Chars val:'\tgit status >output &&\n' span_id:463) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "nothing to commit" output\n' span_id:464) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status -a clean (empty submodule dir)' span_id:471))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:475) (Token id: Id.Lit_Chars val: '\ttest_must_fail git commit --dry-run -a >output &&\n' span_id: 476 ) (Token id:Id.Lit_Chars val:'\ttest_i18ngrep "nothing to commit" output\n' span_id:477) ) } ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:483) fd: -1 arg_word: {(status_expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:486) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:487)) (OF) } here_end_span_id: 492 stdin_parts: [('AA .gitmodules\n') ('A sub1\n')] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'status with merge conflict in .gitmodules' span_id:497))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:501) (Token id:Id.Lit_Chars val:'\tgit clone . super &&\n' span_id:502) (Token id:Id.Lit_Chars val:'\ttest_create_repo_with_commit sub1 &&\n' span_id:503) (Token id:Id.Lit_Chars val:'\ttest_tick &&\n' span_id:504) (Token id:Id.Lit_Chars val:'\ttest_create_repo_with_commit sub2 &&\n' span_id:505) (Token id:Id.Lit_Chars val:'\t(\n' span_id:506) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:507) (Token id:Id.Lit_Chars val:'\t\tprev=$(git rev-parse HEAD) &&\n' span_id:508) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b add_sub1 &&\n' span_id:509) (Token id:Id.Lit_Chars val:'\t\tgit submodule add ../sub1 &&\n' span_id:510) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "add sub1" &&\n' span_id:511) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b add_sub2 $prev &&\n' span_id:512) (Token id:Id.Lit_Chars val:'\t\tgit submodule add ../sub2 &&\n' span_id:513) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "add sub2" &&\n' span_id:514) (Token id:Id.Lit_Chars val:'\t\tgit checkout -b merge_conflict_gitmodules &&\n' span_id:515) (Token id: Id.Lit_Chars val: '\t\ttest_must_fail git merge add_sub1 &&\n' span_id: 516 ) (Token id:Id.Lit_Chars val:'\t\tgit status -s >../status_actual 2>&1\n' span_id:517) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:518) (Token id:Id.Lit_Chars val:'\ttest_cmp status_actual status_expect\n' span_id:519) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1_merge_sub1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:524) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {(cd)} {(sub1)}) (C {(git)} {(rev-parse)} {(HEAD)})] ) ] ) ) } spids: [523] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:sha1_merge_sub2) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:539) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {(cd)} {(sub2)}) (C {(git)} {(rev-parse)} {(HEAD)})] ) ] ) ) } spids: [538] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_sha1_merge_sub1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:554) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {(cd)} {(sub1)}) (C {(git)} {(rev-parse)} {(--short)} {(HEAD)})] ) ] ) ) } spids: [553] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:short_sha1_merge_sub2) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:571) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp] children: [(C {(cd)} {(sub2)}) (C {(git)} {(rev-parse)} {(--short)} {(HEAD)})] ) ] ) ) } spids: [570] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:589) fd: -1 arg_word: {(diff_expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:592) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:593)) (OF) } here_end_span_id: 610 stdin_parts: [ ('diff --cc .gitmodules\n') ('index badaa4c,44f999a..0000000\n') ('--- a/.gitmodules\n') ('+++ b/.gitmodules\n') ('@@@ -1,3 -1,3 +1,9 @@@\n') ('++<<<<<<< HEAD\n') (' +[submodule "sub2"]\n') (' +\tpath = sub2\n') (' +\turl = ../sub2\n') ('++=======\n') ('+ [submodule "sub1"]\n') ('+ \tpath = sub1\n') ('+ \turl = ../sub1\n') ('++>>>>>>> add_sub1\n') ] ) ] ) (command.Simple words: [{(cat)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:614) fd: -1 arg_word: {(diff_submodule_expect)} ) (redir.HereDoc op: (Token id:Id.Redir_DLess val:'<<' span_id:617) fd: -1 here_begin: {(word_part.EscapedLiteral token:(Token id:Id.Lit_EscapedChar val:'\\E' span_id:618)) (OF) } here_end_span_id: 635 stdin_parts: [ ('diff --cc .gitmodules\n') ('index badaa4c,44f999a..0000000\n') ('--- a/.gitmodules\n') ('+++ b/.gitmodules\n') ('@@@ -1,3 -1,3 +1,9 @@@\n') ('++<<<<<<< HEAD\n') (' +[submodule "sub2"]\n') (' +\tpath = sub2\n') (' +\turl = ../sub2\n') ('++=======\n') ('+ [submodule "sub1"]\n') ('+ \tpath = sub1\n') ('+ \turl = ../sub1\n') ('++>>>>>>> add_sub1\n') ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff with merge conflict in .gitmodules' span_id:640))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:644) (Token id:Id.Lit_Chars val:'\t(\n' span_id:645) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:646) (Token id:Id.Lit_Chars val:'\t\tgit diff >../diff_actual 2>&1\n' span_id:647) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:648) (Token id:Id.Lit_Chars val:'\ttest_cmp diff_actual diff_expect\n' span_id:649) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'diff --submodule with merge conflict in .gitmodules' span_id: 656 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:660) (Token id:Id.Lit_Chars val:'\t(\n' span_id:661) (Token id:Id.Lit_Chars val:'\t\tcd super &&\n' span_id:662) (Token id: Id.Lit_Chars val: '\t\tgit diff --submodule >../diff_submodule_actual 2>&1\n' span_id: 663 ) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:664) (Token id: Id.Lit_Chars val: '\ttest_cmp diff_submodule_actual diff_submodule_expect\n' span_id: 665 ) ) } ) (C {(test_done)}) ] )