(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: 'Support for diff format verbose submodule difference in git diff\n' span_id: 21 ) (Token id:Id.Lit_Chars val:'\n' span_id:22) (Token id: Id.Lit_Chars val: 'This test tries to verify the sanity of --submodule=diff option of git diff.\n' span_id: 23 ) ) } spids: [19] ) ] ) (C {(.)} {(./test-lib.sh)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:test_encoding) op: assign_op.Equal rhs: {(DQ (ISO8859-1))} spids: [35] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:added) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:48) command_list: (command.CommandList children: [ (C {(printf)} {(DQ (hinzugef) (Id.Lit_Other '\\') (303) (Id.Lit_Other '\\') (274gt))} ) ] ) ) } spids: [47] ) ] ) (command.ShFunction name: add_file body: (command.BraceGroup children: [ (command.Subshell command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(DQ ($ Id.VSub_Number '$1'))}) (C {(shift)}) (command.ForEach iter_name: name do_arg_iter: T body: (command.DoGroup children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (command.Simple words: [{(echo)} {(DQ ($ Id.VSub_DollarName '$name'))}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:100) fd: -1 arg_word: {(DQ ($ Id.VSub_DollarName '$name'))} ) ] ) (C {(git)} {(add)} {(DQ ($ Id.VSub_DollarName '$name'))}) (C {(test_tick)}) (command.Pipeline children: [ (C {(echo)} { (DQ ('Add ') ($ Id.VSub_DollarName '$name') (' (') ($ Id.VSub_DollarName '$added') (' ') ($ Id.VSub_DollarName '$name') (')') ) } ) (C {(iconv)} {(-f)} {(utf-8)} {(-t)} {($ Id.VSub_DollarName '$test_encoding')} ) (C {(git)} {(-c)} { (DQ ('i18n.commitEncoding=') ($ Id.VSub_DollarName '$test_encoding') ) } {(commit)} {(-F)} {(-)} ) ] negated: F ) ] ) ] ) redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:177) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(git)} {(rev-parse)} {(--short)} {(--verify)} {(HEAD)}) ] ) ] ) ) ] ) ) (command.ShFunction name: commit_file body: (command.BraceGroup children: [ (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test_tick)}) (command.Simple words: [ {(git)} {(commit)} {(DQ ($ Id.VSub_At '$@'))} {(-m)} {(DQ ('Commit ') ($ Id.VSub_Star '$*'))} ] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:227) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup repository' span_id:236))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:240) (Token id:Id.Lit_Chars val:'\ttest_create_repo sm1 &&\n' span_id:241) (Token id:Id.Lit_Chars val:'\tadd_file . foo &&\n' span_id:242) (Token id:Id.Lit_Chars val:'\thead1=$(add_file sm1 foo1 foo2) &&\n' span_id:243) (Token id:Id.Lit_Chars val:'\tfullhead1=$(git -C sm1 rev-parse --verify HEAD)\n' span_id:244) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'added submodule' span_id:251))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:255) (Token id:Id.Lit_Chars val:'\tgit add sm1 &&\n' span_id:256) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:257) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:258) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 0000000...$head1 (new submodule)\n' span_id:259) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo1 b/sm1/foo1\n' span_id:260) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:261) (Token id:Id.Lit_Chars val:'\tindex 0000000..1715acd\n' span_id:262) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:263) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo1\n' span_id:264) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:265) (Token id:Id.Lit_Chars val:'\t+foo1\n' span_id:266) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo2 b/sm1/foo2\n' span_id:267) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:268) (Token id:Id.Lit_Chars val:'\tindex 0000000..54b060e\n' span_id:269) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:270) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo2\n' span_id:271) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:272) (Token id:Id.Lit_Chars val:'\t+foo2\n' span_id:273) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:274) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:275) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'added submodule, set diff.submodule' span_id:282))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:286) (Token id:Id.Lit_Chars val:'\ttest_config diff.submodule log &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\tgit add sm1 &&\n' span_id:288) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 289 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:290) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 0000000...$head1 (new submodule)\n' span_id: 291 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo1 b/sm1/foo1\n' span_id:292) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:293) (Token id:Id.Lit_Chars val:'\tindex 0000000..1715acd\n' span_id:294) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:295) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo1\n' span_id:296) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:297) (Token id:Id.Lit_Chars val:'\t+foo1\n' span_id:298) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo2 b/sm1/foo2\n' span_id:299) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:300) (Token id:Id.Lit_Chars val:'\tindex 0000000..54b060e\n' span_id:301) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:302) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo2\n' span_id:303) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:304) (Token id:Id.Lit_Chars val:'\t+foo2\n' span_id:305) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:306) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:307) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--submodule=short overrides diff.submodule' span_id:314))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:318) (Token id:Id.Lit_Chars val:'\ttest_config diff.submodule log &&\n' span_id:319) (Token id:Id.Lit_Chars val:'\tgit add sm1 &&\n' span_id:320) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=short --cached >actual &&\n' span_id: 321 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:322) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:323) (Token id:Id.Lit_Chars val:'\tnew file mode 160000\n' span_id:324) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head1\n' span_id:325) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:326) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:327) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:328) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead1\n' span_id:329) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:330) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:331) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.submodule does not affect plumbing' span_id:338))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:342) (Token id:Id.Lit_Chars val:'\ttest_config diff.submodule log &&\n' span_id:343) (Token id:Id.Lit_Chars val:'\tgit diff-index -p HEAD >actual &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:345) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:346) (Token id:Id.Lit_Chars val:'\tnew file mode 160000\n' span_id:347) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head1\n' span_id:348) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:349) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:350) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:351) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead1\n' span_id:352) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:353) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:354) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(commit_file)} {(sm1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head2) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:365) command_list: (command.CommandList children:[(C {(add_file)} {(sm1)} {(foo3)})]) ) } spids: [364] ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward)' span_id:377))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:381) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 382 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:383) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head1..$head2:\n' span_id:384) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo3 b/sm1/foo3\n' span_id:385) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:386) (Token id:Id.Lit_Chars val:'\tindex 0000000..c1ec6c6\n' span_id:387) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:388) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo3\n' span_id:389) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:390) (Token id:Id.Lit_Chars val:'\t+foo3\n' span_id:391) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:392) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:393) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward)' span_id:400))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:404) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=diff >actual &&\n' span_id: 405 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:406) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head1..$head2:\n' span_id:407) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo3 b/sm1/foo3\n' span_id:408) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:409) (Token id:Id.Lit_Chars val:'\tindex 0000000..c1ec6c6\n' span_id:410) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:411) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo3\n' span_id:412) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:413) (Token id:Id.Lit_Chars val:'\t+foo3\n' span_id:414) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:415) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:416) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward) --submodule' span_id:423))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:427) (Token id:Id.Lit_Chars val:'\tgit diff --submodule >actual &&\n' span_id:428) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:429) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head1..$head2:\n' span_id:430) (Token id:Id.Lit_Chars val:'\t > Add foo3 ($added foo3)\n' span_id:431) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:432) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:433) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullhead2) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:438) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:442) ) (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [437] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward) --submodule=short' span_id:456))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:460) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=short >actual &&\n' span_id: 461 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:462) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:463) (Token id:Id.Lit_Chars val:'\tindex $head1..$head2 160000\n' span_id:464) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:465) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:466) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:467) (Token id:Id.Lit_Chars val:'\t-Subproject commit $fullhead1\n' span_id:468) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead2\n' span_id:469) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:470) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:471) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(commit_file)} {(sm1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head3) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:482) command_list: (command.CommandList children: [ (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(cd)} {(sm1)}) (command.Simple words: [{(git)} {(reset)} {(--hard)} {(HEAD) (Id.Lit_TildeLike '~2')}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:501) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(git)} {(rev-parse)} {(--short)} {(--verify)} {(HEAD)}) ] ) ] ) ) } spids: [481] ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(backward)' span_id:523))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:527) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 528 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:529) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head2..$head3 (rewind):\n' span_id: 530 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo2 b/sm1/foo2\n' span_id:531) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:532) (Token id:Id.Lit_Chars val:'\tindex 54b060e..0000000\n' span_id:533) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo2\n' span_id:534) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:535) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:536) (Token id:Id.Lit_Chars val:'\t-foo2\n' span_id:537) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo3 b/sm1/foo3\n' span_id:538) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:539) (Token id:Id.Lit_Chars val:'\tindex c1ec6c6..0000000\n' span_id:540) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo3\n' span_id:541) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:542) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:543) (Token id:Id.Lit_Chars val:'\t-foo3\n' span_id:544) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:545) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:546) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head4) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:551) command_list: (command.CommandList children: [(C {(add_file)} {(sm1)} {(foo4)} {(foo5)})] ) ) } spids: [550] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(backward and forward)' span_id:564))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:568) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 569 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:570) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head2...$head4:\n' span_id:571) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo2 b/sm1/foo2\n' span_id:572) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:573) (Token id:Id.Lit_Chars val:'\tindex 54b060e..0000000\n' span_id:574) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo2\n' span_id:575) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:576) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:577) (Token id:Id.Lit_Chars val:'\t-foo2\n' span_id:578) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo3 b/sm1/foo3\n' span_id:579) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:580) (Token id:Id.Lit_Chars val:'\tindex c1ec6c6..0000000\n' span_id:581) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo3\n' span_id:582) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:583) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:584) (Token id:Id.Lit_Chars val:'\t-foo3\n' span_id:585) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo4 b/sm1/foo4\n' span_id:586) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:587) (Token id:Id.Lit_Chars val:'\tindex 0000000..a0016db\n' span_id:588) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:589) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo4\n' span_id:590) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:591) (Token id:Id.Lit_Chars val:'\t+foo4\n' span_id:592) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo5 b/sm1/foo5\n' span_id:593) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:594) (Token id:Id.Lit_Chars val:'\tindex 0000000..d6f2413\n' span_id:595) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:596) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo5\n' span_id:597) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:598) (Token id:Id.Lit_Chars val:'\t+foo5\n' span_id:599) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:600) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:601) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp Id.Op_DAmp] children: [ (C {(commit_file)} {(sm1)}) (C {(mv)} {(sm1)} {(sm1-bak)}) (command.Simple words: [{(echo)} {(sm1)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:623) fd: -1 arg_word: {(sm1)} ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head5) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:629) command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(git)} {(hash-object)} {(sm1)}) (C {(cut)} {(-c1-7)})] negated: F ) ] ) ) } spids: [628] ) ] ) (C {(git)} {(add)} {(sm1)}) (C {(rm)} {(-f)} {(sm1)}) (C {(mv)} {(sm1-bak)} {(sm1)}) ] ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'typechanged submodule(submodule->blob), --cached' span_id: 671 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:675) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=diff --cached >actual &&\n' span_id: 676 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:677) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head4...0000000 (submodule deleted)\n' span_id: 678 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo1 b/sm1/foo1\n' span_id:679) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:680) (Token id:Id.Lit_Chars val:'\tindex 1715acd..0000000\n' span_id:681) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo1\n' span_id:682) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:683) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:684) (Token id:Id.Lit_Chars val:'\t-foo1\n' span_id:685) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo4 b/sm1/foo4\n' span_id:686) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:687) (Token id:Id.Lit_Chars val:'\tindex a0016db..0000000\n' span_id:688) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo4\n' span_id:689) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:690) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:691) (Token id:Id.Lit_Chars val:'\t-foo4\n' span_id:692) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo5 b/sm1/foo5\n' span_id:693) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:694) (Token id:Id.Lit_Chars val:'\tindex d6f2413..0000000\n' span_id:695) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo5\n' span_id:696) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:697) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:698) (Token id:Id.Lit_Chars val:'\t-foo5\n' span_id:699) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:700) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:701) (Token id:Id.Lit_Chars val:'\tindex 0000000..9da5fb8\n' span_id:702) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:703) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:704) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:705) (Token id:Id.Lit_Chars val:'\t+sm1\n' span_id:706) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:707) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:708) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'typechanged submodule(submodule->blob)' span_id:715))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:719) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=diff >actual &&\n' span_id: 720 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:721) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:722) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:723) (Token id:Id.Lit_Chars val:'\tindex 9da5fb8..0000000\n' span_id:724) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:725) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:726) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:727) (Token id:Id.Lit_Chars val:'\t-sm1\n' span_id:728) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 0000000...$head4 (new submodule)\n' span_id:729) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo1 b/sm1/foo1\n' span_id:730) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:731) (Token id:Id.Lit_Chars val:'\tindex 0000000..1715acd\n' span_id:732) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:733) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo1\n' span_id:734) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:735) (Token id:Id.Lit_Chars val:'\t+foo1\n' span_id:736) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo4 b/sm1/foo4\n' span_id:737) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:738) (Token id:Id.Lit_Chars val:'\tindex 0000000..a0016db\n' span_id:739) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:740) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo4\n' span_id:741) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:742) (Token id:Id.Lit_Chars val:'\t+foo4\n' span_id:743) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo5 b/sm1/foo5\n' span_id:744) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:745) (Token id:Id.Lit_Chars val:'\tindex 0000000..d6f2413\n' span_id:746) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:747) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo5\n' span_id:748) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:749) (Token id:Id.Lit_Chars val:'\t+foo5\n' span_id:750) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:751) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:752) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [(C {(rm)} {(-rf)} {(sm1)}) (C {(git)} {(checkout-index)} {(sm1)})] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'typechanged submodule(submodule->blob)' span_id:773))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:777) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 778 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:779) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head4...0000000 (submodule deleted)\n' span_id: 780 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:781) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:782) (Token id:Id.Lit_Chars val:'\tindex 0000000..9da5fb8\n' span_id:783) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:784) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:785) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:786) (Token id:Id.Lit_Chars val:'\t+sm1\n' span_id:787) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:788) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:789) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(rm)} {(-f)} {(sm1)}) (C {(test_create_repo)} {(sm1)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head6) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:808) command_list: (command.CommandList children: [(C {(add_file)} {(sm1)} {(foo6)} {(foo7)})] ) ) } spids: [807] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullhead6) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:819) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:823) ) (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [818] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'nonexistent commit' span_id:837))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:841) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 842 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:843) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head4...$head6 (commits not present)\n' span_id: 844 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:845) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:846) ) } ) (C {(commit_file)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'typechanged submodule(blob->submodule)' span_id:855))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:859) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 860 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:861) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:862) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:863) (Token id:Id.Lit_Chars val:'\tindex 9da5fb8..0000000\n' span_id:864) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:865) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:866) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:867) (Token id:Id.Lit_Chars val:'\t-sm1\n' span_id:868) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 0000000...$head6 (new submodule)\n' span_id:869) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:870) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:871) (Token id:Id.Lit_Chars val:'\tindex 0000000..462398b\n' span_id:872) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:873) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:874) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:875) (Token id:Id.Lit_Chars val:'\t+foo6\n' span_id:876) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo7 b/sm1/foo7\n' span_id:877) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:878) (Token id:Id.Lit_Chars val:'\tindex 0000000..6e9262c\n' span_id:879) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:880) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo7\n' span_id:881) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:882) (Token id:Id.Lit_Chars val:'\t+foo7\n' span_id:883) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:884) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:885) ) } ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(commit_file)} {(sm1)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule is up to date' span_id:898))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:902) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 903 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:904) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:905) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:906) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule contains untracked content' span_id:913))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:917) (Token id:Id.Lit_Chars val:'\techo new > sm1/new-file &&\n' span_id:918) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:919) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:920) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:921) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:922) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:923) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked content (untracked ignored)' span_id: 930 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:934) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=diff HEAD >actual &&\n' span_id: 935 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:936) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked content (dirty ignored)' span_id: 943 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:947) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&\n' span_id: 948 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:949) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked content (all ignored)' span_id: 956 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:960) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=all --submodule=diff HEAD >actual &&\n' span_id: 961 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:962) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modified content' span_id: 969 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:973) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:974) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:975) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:976) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:977) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 978 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:979) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:980) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:981) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:982) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:983) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:984) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:985) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:986) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:987) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modified content (untracked ignored)' span_id: 997 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1001) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:1002) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=diff HEAD >actual &&\n' span_id: 1003 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1004) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 1005 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1006) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:1007) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1008) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1009) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1010) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1011) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1012) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1013) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1014) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modified content (dirty ignored)' span_id: 1021 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1025) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:1026) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&\n' span_id: 1027 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:1028) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modified content (all ignored)' span_id: 1035 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1039) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:1040) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules --submodule=diff HEAD >actual &&\n' span_id: 1041 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:1042) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule contains modified content' span_id:1049))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1053) (Token id:Id.Lit_Chars val:'\trm -f sm1/new-file &&\n' span_id:1054) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:1055) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1056) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains modified content\n' span_id:1057) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1058) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:1059) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1060) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1061) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1062) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1063) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1064) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1065) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1066) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (command.Subshell command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1074) ) (command.Simple words: [{(git)} {(commit)} {(-mchange)} {(foo6)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:1084) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head8) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1091) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1095) ) (C {(git)} {(rev-parse)} {(--short)} {(--verify)} {(HEAD)}) ] ) ) } spids: [1090] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule is modified' span_id:1113))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1117) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 1118 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1119) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 17243c9..$head8:\n' span_id: 1120 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1121) (Token id: Id.Lit_Chars val: '\tindex 462398b..3e75765 100644\n' span_id: 1122 ) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1123) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1124) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1125) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1126) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1127) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1128) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1129) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule contains untracked content' span_id:1136))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1140) (Token id:Id.Lit_Chars val:'\techo new > sm1/new-file &&\n' span_id:1141) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:1142) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1143) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:1144) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..$head8:\n' span_id:1145) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1146) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:1147) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1148) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1149) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1150) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1151) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1152) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1153) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1154) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked content (untracked ignored)' span_id: 1161 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1165) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=diff HEAD >actual &&\n' span_id: 1166 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1167) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..$head8:\n' span_id:1168) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1169) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:1170) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1171) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1172) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1173) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1174) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1175) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1176) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1177) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked content (dirty ignored)' span_id: 1184 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1188) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&\n' span_id: 1189 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1190) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..cfce562:\n' span_id:1191) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1192) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:1193) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1194) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1195) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1196) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1197) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1198) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1199) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1200) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked content (all ignored)' span_id: 1207 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1211) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=all --submodule=diff HEAD >actual &&\n' span_id: 1212 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:1213) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modified content' span_id: 1220 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1224) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1225) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:1226) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1227) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:1228) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 1229 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..cfce562:\n' span_id:1230) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1231) (Token id:Id.Lit_Chars val:'\tindex 462398b..dfda541 100644\n' span_id:1232) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1233) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1234) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,2 @@\n' span_id:1235) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1236) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1237) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1238) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1239) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1240) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modified content (untracked ignored)' span_id: 1247 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1251) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1252) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=diff HEAD >actual &&\n' span_id: 1253 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1254) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 1255 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..cfce562:\n' span_id:1256) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1257) (Token id:Id.Lit_Chars val:'\tindex 462398b..e20e2d9 100644\n' span_id:1258) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1259) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1260) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,3 @@\n' span_id:1261) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1262) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1263) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1264) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1265) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1266) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1267) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modified content (dirty ignored)' span_id: 1274 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1278) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1279) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=diff HEAD >actual &&\n' span_id: 1280 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1281) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..cfce562:\n' span_id:1282) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1283) (Token id:Id.Lit_Chars val:'\tindex 462398b..3e75765 100644\n' span_id:1284) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1285) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1286) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:1287) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1288) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1289) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1290) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1291) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modified content (all ignored)' span_id: 1298 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1302) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1303) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules --submodule=diff HEAD >actual &&\n' span_id: 1304 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:1305) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule contains modified content' span_id:1315))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1319) (Token id:Id.Lit_Chars val:'\trm -f sm1/new-file &&\n' span_id:1320) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id:1321) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1322) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains modified content\n' span_id:1323) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 17243c9..cfce562:\n' span_id:1324) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1/foo6 b/sm1/foo6\n' span_id:1325) (Token id:Id.Lit_Chars val:'\tindex 462398b..ac466ca 100644\n' span_id:1326) (Token id:Id.Lit_Chars val:'\t--- a/sm1/foo6\n' span_id:1327) (Token id:Id.Lit_Chars val:'\t+++ b/sm1/foo6\n' span_id:1328) (Token id:Id.Lit_Chars val:'\t@@ -1 +1,5 @@\n' span_id:1329) (Token id:Id.Lit_Chars val:'\t-foo6\n' span_id:1330) (Token id:Id.Lit_Chars val:'\t+new\n' span_id:1331) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1332) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1333) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1334) (Token id:Id.Lit_Chars val:'\t+modification\n' span_id:1335) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1336) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1337) ) } ) (C {(rm)} {(-rf)} {(sm1)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'deleted submodule' span_id:1350))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1354) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 1355 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1356) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 17243c9...0000000 (submodule deleted)\n' span_id: 1357 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1358) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1359) ) } ) (command.AndOr ops: [Id.Op_DAmp Id.Op_DAmp] children: [ (C {(test_create_repo)} {(sm2)}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head7) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1370) command_list: (command.CommandList children: [(C {(add_file)} {(sm2)} {(foo8)} {(foo9)})] ) ) } spids: [1369] ) ] ) (C {(git)} {(add)} {(sm2)}) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'multiple submodules' span_id:1392))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1396) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD >actual &&\n' span_id: 1397 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1398) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 17243c9...0000000 (submodule deleted)\n' span_id: 1399 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...a5a65c9 (new submodule)\n' span_id:1400) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo8 b/sm2/foo8\n' span_id:1401) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1402) (Token id:Id.Lit_Chars val:'\tindex 0000000..db9916b\n' span_id:1403) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1404) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo8\n' span_id:1405) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1406) (Token id:Id.Lit_Chars val:'\t+foo8\n' span_id:1407) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo9 b/sm2/foo9\n' span_id:1408) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1409) (Token id:Id.Lit_Chars val:'\tindex 0000000..9c3b4f6\n' span_id:1410) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1411) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo9\n' span_id:1412) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1413) (Token id:Id.Lit_Chars val:'\t+foo9\n' span_id:1414) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1415) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1416) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path filter' span_id:1423))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1427) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD sm2 >actual &&\n' span_id: 1428 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1429) (Token id: Id.Lit_Chars val: '\tSubmodule sm2 0000000...a5a65c9 (new submodule)\n' span_id: 1430 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo8 b/sm2/foo8\n' span_id:1431) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1432) (Token id:Id.Lit_Chars val:'\tindex 0000000..db9916b\n' span_id:1433) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1434) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo8\n' span_id:1435) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1436) (Token id:Id.Lit_Chars val:'\t+foo8\n' span_id:1437) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo9 b/sm2/foo9\n' span_id:1438) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1439) (Token id:Id.Lit_Chars val:'\tindex 0000000..9c3b4f6\n' span_id:1440) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1441) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo9\n' span_id:1442) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1443) (Token id:Id.Lit_Chars val:'\t+foo9\n' span_id:1444) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1445) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1446) ) } ) (C {(commit_file)} {(sm2)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'given commit' span_id:1457))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1461) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=diff HEAD^ >actual &&\n' span_id: 1462 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1463) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 17243c9...0000000 (submodule deleted)\n' span_id: 1464 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...a5a65c9 (new submodule)\n' span_id:1465) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo8 b/sm2/foo8\n' span_id:1466) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1467) (Token id:Id.Lit_Chars val:'\tindex 0000000..db9916b\n' span_id:1468) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1469) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo8\n' span_id:1470) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1471) (Token id:Id.Lit_Chars val:'\t+foo8\n' span_id:1472) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo9 b/sm2/foo9\n' span_id:1473) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1474) (Token id:Id.Lit_Chars val:'\tindex 0000000..9c3b4f6\n' span_id:1475) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1476) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo9\n' span_id:1477) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1478) (Token id:Id.Lit_Chars val:'\t+foo9\n' span_id:1479) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1480) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1481) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup .git file for sm2' span_id:1488))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1492) (Token id:Id.Lit_Chars val:'\t(cd sm2 &&\n' span_id:1493) (Token id:Id.Lit_Chars val:'\t REAL="$(pwd)/../.real" &&\n' span_id:1494) (Token id:Id.Lit_Chars val:'\t mv .git "$REAL"\n' span_id:1495) (Token id:Id.Lit_Chars val:'\t echo "gitdir: $REAL" >.git)\n' span_id:1496) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff --submodule=diff with .git file' span_id:1503))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1507) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=diff HEAD^ >actual &&\n' span_id: 1508 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1509) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 17243c9...0000000 (submodule deleted)\n' span_id: 1510 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...a5a65c9 (new submodule)\n' span_id:1511) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo8 b/sm2/foo8\n' span_id:1512) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1513) (Token id:Id.Lit_Chars val:'\tindex 0000000..db9916b\n' span_id:1514) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1515) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo8\n' span_id:1516) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1517) (Token id:Id.Lit_Chars val:'\t+foo8\n' span_id:1518) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2/foo9 b/sm2/foo9\n' span_id:1519) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:1520) (Token id:Id.Lit_Chars val:'\tindex 0000000..9c3b4f6\n' span_id:1521) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1522) (Token id:Id.Lit_Chars val:'\t+++ b/sm2/foo9\n' span_id:1523) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1524) (Token id:Id.Lit_Chars val:'\t+foo9\n' span_id:1525) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1526) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1527) ) } ) (C {(test_done)}) ] )