(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 verbose submodule differences in git diff\n' span_id: 18 ) (Token id:Id.Lit_Chars val:'\n' span_id:19) (Token id: Id.Lit_Chars val: 'This test tries to verify the sanity of the --submodule option of git diff.\n' span_id: 20 ) ) } spids: [16] ) ] ) (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: [32] ) ] ) (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:45) command_list: (command.CommandList children: [ (C {(printf)} {(DQ (hinzugef) (Id.Lit_Other '\\') (303) (Id.Lit_Other '\\') (274gt))} ) ] ) ) } spids: [44] ) ] ) (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:96) 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:173) 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:222) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) ] ) ) (command.AndOr ops: [Id.Op_DAmp] children: [ (C {(test_create_repo)} {(sm1)}) (command.Simple words: [{(add_file)} {(.)} {(foo)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:240) fd: -1 arg_word: {(/dev/null)} ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:head1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:245) command_list: (command.CommandList children: [(C {(add_file)} {(sm1)} {(foo1)} {(foo2)})] ) ) } spids: [244] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullhead1) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:256) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:260) ) (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [255] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'added submodule' span_id:275))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:279) (Token id:Id.Lit_Chars val:'\tgit add sm1 &&\n' span_id:280) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id:281) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:282) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 0000000...$head1 (new submodule)\n' span_id:283) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:284) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:285) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'added submodule, set diff.submodule' span_id:292))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:296) (Token id:Id.Lit_Chars val:'\tgit config diff.submodule log &&\n' span_id:297) (Token id:Id.Lit_Chars val:'\tgit add sm1 &&\n' span_id:298) (Token id:Id.Lit_Chars val:'\tgit diff --cached >actual &&\n' span_id:299) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:300) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 0000000...$head1 (new submodule)\n' span_id: 301 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:302) (Token id: Id.Lit_Chars val: '\tgit config --unset diff.submodule &&\n' span_id: 303 ) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:304) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'--submodule=short overrides diff.submodule' span_id:311))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:315) (Token id:Id.Lit_Chars val:'\ttest_config diff.submodule log &&\n' span_id:316) (Token id:Id.Lit_Chars val:'\tgit add sm1 &&\n' span_id:317) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=short --cached >actual &&\n' span_id: 318 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:319) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:320) (Token id:Id.Lit_Chars val:'\tnew file mode 160000\n' span_id:321) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head1\n' span_id:322) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:323) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:324) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:325) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead1\n' span_id:326) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:327) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:328) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff.submodule does not affect plumbing' span_id:335))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:339) (Token id:Id.Lit_Chars val:'\ttest_config diff.submodule log &&\n' span_id:340) (Token id:Id.Lit_Chars val:'\tgit diff-index -p HEAD >actual &&\n' span_id:341) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:342) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:343) (Token id:Id.Lit_Chars val:'\tnew file mode 160000\n' span_id:344) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head1\n' span_id:345) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:346) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:347) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:348) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead1\n' span_id:349) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:350) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:351) ) } ) (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:362) command_list: (command.CommandList children:[(C {(add_file)} {(sm1)} {(foo3)})]) ) } spids: [361] ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward)' span_id:374))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:378) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 379 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:380) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head1..$head2:\n' span_id:381) (Token id:Id.Lit_Chars val:'\t > Add foo3 ($added foo3)\n' span_id:382) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:383) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:384) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward)' span_id:391))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:395) (Token id:Id.Lit_Chars val:'\tgit diff --submodule=log >actual &&\n' span_id:396) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:397) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head1..$head2:\n' span_id:398) (Token id:Id.Lit_Chars val:'\t > Add foo3 ($added foo3)\n' span_id:399) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:400) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:401) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward) --submodule' span_id:408))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:412) (Token id:Id.Lit_Chars val:'\tgit diff --submodule >actual &&\n' span_id:413) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:414) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head1..$head2:\n' span_id:415) (Token id:Id.Lit_Chars val:'\t > Add foo3 ($added foo3)\n' span_id:416) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:417) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:418) ) } ) (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:423) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:427) ) (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [422] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(forward) --submodule=short' span_id:441))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:445) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=short >actual &&\n' span_id: 446 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:447) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:448) (Token id:Id.Lit_Chars val:'\tindex $head1..$head2 160000\n' span_id:449) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:450) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:451) (Token id:Id.Lit_Chars val:'\t@@ -1 +1 @@\n' span_id:452) (Token id:Id.Lit_Chars val:'\t-Subproject commit $fullhead1\n' span_id:453) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead2\n' span_id:454) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:455) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:456) ) } ) (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:467) 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:486) fd: -1 arg_word: {(/dev/null)} ) ] ) (C {(git)} {(rev-parse)} {(--short)} {(--verify)} {(HEAD)}) ] ) ] ) ) } spids: [466] ) ] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(backward)' span_id:508))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:512) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 513 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:514) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head2..$head3 (rewind):\n' span_id: 515 ) (Token id:Id.Lit_Chars val:'\t < Add foo3 ($added foo3)\n' span_id:516) (Token id:Id.Lit_Chars val:'\t < Add foo2 ($added foo2)\n' span_id:517) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:518) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:519) ) } ) (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:524) command_list: (command.CommandList children: [(C {(add_file)} {(sm1)} {(foo4)} {(foo5)})] ) ) } spids: [523] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule(backward and forward)' span_id:537))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:541) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 542 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:543) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head2...$head4:\n' span_id:544) (Token id:Id.Lit_Chars val:'\t > Add foo5 ($added foo5)\n' span_id:545) (Token id:Id.Lit_Chars val:'\t > Add foo4 ($added foo4)\n' span_id:546) (Token id:Id.Lit_Chars val:'\t < Add foo3 ($added foo3)\n' span_id:547) (Token id:Id.Lit_Chars val:'\t < Add foo2 ($added foo2)\n' span_id:548) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:549) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:550) ) } ) (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:572) 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:578) command_list: (command.CommandList children: [ (command.Pipeline children: [(C {(git)} {(hash-object)} {(sm1)}) (C {(cut)} {(-c1-7)})] negated: F ) ] ) ) } spids: [577] ) ] ) (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: 620 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:624) (Token id: Id.Lit_Chars val: '\tgit diff --submodule=log --cached >actual &&\n' span_id: 625 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:626) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head4...0000000 (submodule deleted)\n' span_id: 627 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:628) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:629) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head5\n' span_id:630) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:631) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:632) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:633) (Token id:Id.Lit_Chars val:'\t+sm1\n' span_id:634) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:635) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:636) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'typechanged submodule(submodule->blob)' span_id:643))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:647) (Token id:Id.Lit_Chars val:'\tgit diff --submodule=log >actual &&\n' span_id:648) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:649) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:650) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:651) (Token id:Id.Lit_Chars val:'\tindex $head5..0000000\n' span_id:652) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:653) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:654) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:655) (Token id:Id.Lit_Chars val:'\t-sm1\n' span_id:656) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 0000000...$head4 (new submodule)\n' span_id:657) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:658) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:659) ) } ) (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:680))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:684) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 685 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:686) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head4...0000000 (submodule deleted)\n' span_id: 687 ) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:688) (Token id:Id.Lit_Chars val:'\tnew file mode 100644\n' span_id:689) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head5\n' span_id:690) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:691) (Token id:Id.Lit_Chars val:'\t+++ b/sm1\n' span_id:692) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:693) (Token id:Id.Lit_Chars val:'\t+sm1\n' span_id:694) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:695) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:696) ) } ) (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:715) command_list: (command.CommandList children: [(C {(add_file)} {(sm1)} {(foo6)} {(foo7)})] ) ) } spids: [714] ) ] ) ] ) (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:726) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:730) ) (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [725] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'nonexistent commit' span_id:744))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:748) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 749 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:750) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head4...$head6 (commits not present)\n' span_id: 751 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:752) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:753) ) } ) (C {(commit_file)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'typechanged submodule(blob->submodule)' span_id:762))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:766) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 767 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:768) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:769) (Token id:Id.Lit_Chars val:'\tdeleted file mode 100644\n' span_id:770) (Token id:Id.Lit_Chars val:'\tindex $head5..0000000\n' span_id:771) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:772) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:773) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:774) (Token id:Id.Lit_Chars val:'\t-sm1\n' span_id:775) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 0000000...$head6 (new submodule)\n' span_id:776) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:777) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:778) ) } ) (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:791))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:795) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 796 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:797) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:798) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:799) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule contains untracked content' span_id:806))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:810) (Token id:Id.Lit_Chars val:'\techo new > sm1/new-file &&\n' span_id:811) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id:812) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:813) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:814) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:815) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:816) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked content (untracked ignored)' span_id: 823 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:827) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n' span_id: 828 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:829) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked content (dirty ignored)' span_id: 836 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:840) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n' span_id: 841 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:842) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked content (all ignored)' span_id: 849 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:853) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=all --submodule=log HEAD >actual &&\n' span_id: 854 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:855) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modifed content' span_id: 862 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:866) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:867) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id:868) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:869) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:870) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 871 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:872) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:873) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modifed content (untracked ignored)' span_id: 880 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:884) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:885) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n' span_id: 886 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:887) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 888 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:889) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:890) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modifed content (dirty ignored)' span_id: 897 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:901) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:902) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n' span_id: 903 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:904) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'submodule contains untracked and modifed content (all ignored)' span_id: 911 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:915) (Token id:Id.Lit_Chars val:'\techo new > sm1/foo6 &&\n' span_id:916) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules --submodule=log HEAD >actual &&\n' span_id: 917 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:918) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule contains modifed content' span_id:925))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:929) (Token id:Id.Lit_Chars val:'\trm -f sm1/new-file &&\n' span_id:930) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id:931) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:932) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains modified content\n' span_id:933) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:934) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:935) ) } ) (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:943) ) (command.Simple words: [{(git)} {(commit)} {(-mchange)} {(foo6)}] redirects: [ (redir.Redir op: (Token id:Id.Redir_Great val:'>' span_id:953) 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:960) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm1)}) terminator: (Token id:Id.Op_Semi val:';' span_id:964) ) (C {(git)} {(rev-parse)} {(--short)} {(--verify)} {(HEAD)}) ] ) ) } spids: [959] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule is modified' span_id:982))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:986) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 987 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:988) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head6..$head8:\n' span_id: 989 ) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:990) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:991) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:992) ) } ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule contains untracked content' span_id:999))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1003) (Token id:Id.Lit_Chars val:'\techo new > sm1/new-file &&\n' span_id:1004) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id:1005) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1006) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:1007) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1008) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1009) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1010) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1011) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked content (untracked ignored)' span_id: 1018 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1022) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n' span_id: 1023 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1024) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1025) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1026) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1027) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1028) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked content (dirty ignored)' span_id: 1035 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1039) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n' span_id: 1040 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1041) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1042) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1043) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1044) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1045) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked content (all ignored)' span_id: 1052 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1056) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=all --submodule=log HEAD >actual &&\n' span_id: 1057 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:1058) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modifed content' span_id: 1065 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1069) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1070) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id:1071) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1072) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 contains untracked content\n' span_id:1073) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 1074 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1075) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1076) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1077) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1078) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modifed content (untracked ignored)' span_id: 1085 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1089) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1090) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n' span_id: 1091 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1092) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 contains modified content\n' span_id: 1093 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1094) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1095) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1096) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1097) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modifed content (dirty ignored)' span_id: 1104 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1108) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1109) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n' span_id: 1110 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1111) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1112) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1113) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1114) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1115) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'modified submodule contains untracked and modifed content (all ignored)' span_id: 1122 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1126) (Token id:Id.Lit_Chars val:'\techo modification >> sm1/foo6 &&\n' span_id:1127) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --ignore-submodules --submodule=log HEAD >actual &&\n' span_id: 1128 ) (Token id:Id.Lit_Chars val:'\t! test -s actual\n' span_id:1129) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'modified submodule contains modifed content' span_id:1136))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1140) (Token id:Id.Lit_Chars val:'\trm -f sm1/new-file &&\n' span_id:1141) (Token id:Id.Lit_Chars val:'\tgit diff-index -p --submodule=log 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 modified content\n' span_id:1144) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $head6..$head8:\n' span_id:1145) (Token id:Id.Lit_Chars val:'\t > change\n' span_id:1146) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1147) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1148) ) } ) (C {(rm)} {(-rf)} {(sm1)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'deleted submodule' span_id:1161))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1165) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log 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 $head6...0000000 (submodule deleted)\n' span_id: 1168 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1169) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1170) ) } ) (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:1181) command_list: (command.CommandList children: [(C {(add_file)} {(sm2)} {(foo8)} {(foo9)})] ) ) } spids: [1180] ) ] ) (C {(git)} {(add)} {(sm2)}) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'multiple submodules' span_id:1203))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1207) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD >actual &&\n' span_id: 1208 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1209) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head6...0000000 (submodule deleted)\n' span_id: 1210 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...$head7 (new submodule)\n' span_id:1211) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1212) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1213) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'path filter' span_id:1220))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1224) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD sm2 >actual &&\n' span_id: 1225 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1226) (Token id: Id.Lit_Chars val: '\tSubmodule sm2 0000000...$head7 (new submodule)\n' span_id: 1227 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1228) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1229) ) } ) (C {(commit_file)} {(sm2)}) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'given commit' span_id:1240))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1244) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=log HEAD^ >actual &&\n' span_id: 1245 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1246) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head6...0000000 (submodule deleted)\n' span_id: 1247 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...$head7 (new submodule)\n' span_id:1248) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1249) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1250) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'given commit --submodule' span_id:1257))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1261) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule HEAD^ >actual &&\n' span_id: 1262 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1263) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head6...0000000 (submodule deleted)\n' span_id: 1264 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...$head7 (new submodule)\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) ) } ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:fullhead7) op: assign_op.Equal rhs: { (command_sub left_token: (Token id:Id.Left_DollarParen val:'$(' span_id:1272) command_list: (command.CommandList children: [ (command.Sentence child: (C {(cd)} {(sm2)}) terminator: (Token id:Id.Op_Semi val:';' span_id:1276) ) (C {(git)} {(rev-parse)} {(--verify)} {(HEAD)}) ] ) ) } spids: [1271] ) ] ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'given commit --submodule=short' span_id:1291))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1295) (Token id: Id.Lit_Chars val: '\tgit diff-index -p --submodule=short HEAD^ >actual &&\n' span_id: 1296 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1297) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm1 b/sm1\n' span_id:1298) (Token id:Id.Lit_Chars val:'\tdeleted file mode 160000\n' span_id:1299) (Token id:Id.Lit_Chars val:'\tindex $head6..0000000\n' span_id:1300) (Token id:Id.Lit_Chars val:'\t--- a/sm1\n' span_id:1301) (Token id:Id.Lit_Chars val:'\t+++ /dev/null\n' span_id:1302) (Token id:Id.Lit_Chars val:'\t@@ -1 +0,0 @@\n' span_id:1303) (Token id:Id.Lit_Chars val:'\t-Subproject commit $fullhead6\n' span_id:1304) (Token id:Id.Lit_Chars val:'\tdiff --git a/sm2 b/sm2\n' span_id:1305) (Token id:Id.Lit_Chars val:'\tnew file mode 160000\n' span_id:1306) (Token id:Id.Lit_Chars val:'\tindex 0000000..$head7\n' span_id:1307) (Token id:Id.Lit_Chars val:'\t--- /dev/null\n' span_id:1308) (Token id:Id.Lit_Chars val:'\t+++ b/sm2\n' span_id:1309) (Token id:Id.Lit_Chars val:'\t@@ -0,0 +1 @@\n' span_id:1310) (Token id:Id.Lit_Chars val:'\t+Subproject commit $fullhead7\n' span_id:1311) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1312) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1313) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup .git file for sm2' span_id:1320))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1324) (Token id:Id.Lit_Chars val:'\t(cd sm2 &&\n' span_id:1325) (Token id:Id.Lit_Chars val:'\t REAL="$(pwd)/../.real" &&\n' span_id:1326) (Token id:Id.Lit_Chars val:'\t mv .git "$REAL"\n' span_id:1327) (Token id:Id.Lit_Chars val:'\t echo "gitdir: $REAL" >.git)\n' span_id:1328) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'diff --submodule with .git file' span_id:1335))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1339) (Token id: Id.Lit_Chars val: '\tgit diff --submodule HEAD^ >actual &&\n' span_id: 1340 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:1341) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $head6...0000000 (submodule deleted)\n' span_id: 1342 ) (Token id:Id.Lit_Chars val:'\tSubmodule sm2 0000000...$head7 (new submodule)\n' span_id:1343) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:1344) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1345) ) } ) (C {(test_expect_success)} { (SQ (Token id: Id.Lit_Chars val: 'diff --submodule with objects referenced by alternates' span_id: 1352 ) ) } { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:1356) (Token id:Id.Lit_Chars val:'\tmkdir sub_alt &&\n' span_id:1357) (Token id:Id.Lit_Chars val:'\t(cd sub_alt &&\n' span_id:1358) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1359) (Token id:Id.Lit_Chars val:'\t\techo a >a &&\n' span_id:1360) (Token id:Id.Lit_Chars val:'\t\tgit add a &&\n' span_id:1361) (Token id:Id.Lit_Chars val:'\t\tgit commit -m a\n' span_id:1362) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1363) (Token id:Id.Lit_Chars val:'\tmkdir super &&\n' span_id:1364) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1365) (Token id:Id.Lit_Chars val:'\t\tgit clone -s ../sub_alt sub &&\n' span_id:1366) (Token id:Id.Lit_Chars val:'\t\tgit init &&\n' span_id:1367) (Token id:Id.Lit_Chars val:'\t\tgit add sub &&\n' span_id:1368) (Token id:Id.Lit_Chars val:'\t\tgit commit -m "sub a"\n' span_id:1369) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1370) (Token id:Id.Lit_Chars val:'\t(cd sub_alt &&\n' span_id:1371) (Token id:Id.Lit_Chars val:'\t\tsha1_before=$(git rev-parse --short HEAD)\n' span_id:1372) (Token id:Id.Lit_Chars val:'\t\techo b >b &&\n' span_id:1373) (Token id:Id.Lit_Chars val:'\t\tgit add b &&\n' span_id:1374) (Token id:Id.Lit_Chars val:'\t\tgit commit -m b &&\n' span_id:1375) (Token id:Id.Lit_Chars val:'\t\tsha1_after=$(git rev-parse --short HEAD) &&\n' span_id:1376) (Token id:Id.Lit_Chars val:'\t\t{\n' span_id:1377) (Token id:Id.Lit_Chars val:'\t\t\techo "Submodule sub $sha1_before..$sha1_after:" &&\n' span_id:1378) (Token id:Id.Lit_Chars val:'\t\t\techo " > b"\n' span_id:1379) (Token id:Id.Lit_Chars val:'\t\t} >../expected\n' span_id:1380) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1381) (Token id:Id.Lit_Chars val:'\t(cd super &&\n' span_id:1382) (Token id:Id.Lit_Chars val:'\t\t(cd sub &&\n' span_id:1383) (Token id:Id.Lit_Chars val:'\t\t\tgit fetch &&\n' span_id:1384) (Token id:Id.Lit_Chars val:'\t\t\tgit checkout origin/master\n' span_id:1385) (Token id:Id.Lit_Chars val:'\t\t) &&\n' span_id:1386) (Token id:Id.Lit_Chars val:'\t\tgit diff --submodule > ../actual\n' span_id:1387) (Token id:Id.Lit_Chars val:'\t) &&\n' span_id:1388) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:1389) ) } ) (C {(test_done)}) ] )