(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: 'Test for submodule diff on non-checked out submodule\n' span_id: 15 ) (Token id:Id.Lit_Chars val:'\n' span_id:16) (Token id: Id.Lit_Chars val: 'This test tries to verify that add_submodule_odb works when the submodule was\n' span_id: 17 ) (Token id: Id.Lit_Chars val: 'initialized previously but the checkout has since been removed.\n' span_id: 18 ) ) } spids: [13] ) ] ) (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: [30] ) ] ) (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:43) command_list: (command.CommandList children: [ (C {(printf)} {(DQ (hinzugef) (Id.Lit_Other '\\') (303) (Id.Lit_Other '\\') (274gt))} ) ] ) ) } spids: [42] ) ] ) (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:95) 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:172) 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)} ) ] ) ] ) ] ) ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup - submodules' span_id:231))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:235) (Token id:Id.Lit_Chars val:'\ttest_create_repo sm2 &&\n' span_id:236) (Token id:Id.Lit_Chars val:'\tadd_file . foo &&\n' span_id:237) (Token id:Id.Lit_Chars val:'\tadd_file sm2 foo1 foo2 &&\n' span_id:238) (Token id:Id.Lit_Chars val:'\tsmhead1=$(git -C sm2 rev-parse --short --verify HEAD)\n' span_id:239) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup - git submodule add' span_id:246))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:250) (Token id:Id.Lit_Chars val:'\tgit submodule add ./sm2 sm1 &&\n' span_id:251) (Token id:Id.Lit_Chars val:'\tcommit_file sm1 .gitmodules &&\n' span_id:252) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --no-commit-id --submodule=log HEAD -- sm1 >actual &&\n' span_id: 253 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:254) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 0000000...$smhead1 (new submodule)\n' span_id: 255 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:256) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:257) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule directory removed' span_id:264))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:268) (Token id:Id.Lit_Chars val:'\trm -rf sm1 &&\n' span_id:269) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --no-commit-id --submodule=log HEAD -- sm1 >actual &&\n' span_id: 270 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:271) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 0000000...$smhead1 (new submodule)\n' span_id: 272 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:273) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:274) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'setup - submodule multiple commits' span_id:281))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:285) (Token id: Id.Lit_Chars val: '\tgit submodule update --checkout sm1 &&\n' span_id: 286 ) (Token id:Id.Lit_Chars val:'\tsmhead2=$(add_file sm1 foo3 foo4) &&\n' span_id:287) (Token id:Id.Lit_Chars val:'\tcommit_file sm1 &&\n' span_id:288) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --no-commit-id --submodule=log 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 $smhead1..$smhead2:\n' span_id:291) (Token id:Id.Lit_Chars val:'\t > Add foo4 ($added foo4)\n' span_id:292) (Token id:Id.Lit_Chars val:'\t > Add foo3 ($added foo3)\n' span_id:293) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:294) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:295) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule removed multiple commits' span_id:302))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:306) (Token id:Id.Lit_Chars val:'\trm -rf sm1 &&\n' span_id:307) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --no-commit-id --submodule=log HEAD >actual &&\n' span_id: 308 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:309) (Token id:Id.Lit_Chars val:'\tSubmodule sm1 $smhead1..$smhead2:\n' span_id:310) (Token id:Id.Lit_Chars val:'\t > Add foo4 ($added foo4)\n' span_id:311) (Token id:Id.Lit_Chars val:'\t > Add foo3 ($added foo3)\n' span_id:312) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:313) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:314) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule not initialized in new clone' span_id:321))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:325) (Token id:Id.Lit_Chars val:'\tgit clone . sm3 &&\n' span_id:326) (Token id: Id.Lit_Chars val: '\tgit -C sm3 diff-tree -p --no-commit-id --submodule=log HEAD >actual &&\n' span_id: 327 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:328) (Token id: Id.Lit_Chars val: '\tSubmodule sm1 $smhead1...$smhead2 (not initialized)\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:'setup submodule moved' span_id:338))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:342) (Token id: Id.Lit_Chars val: '\tgit submodule update --checkout sm1 &&\n' span_id: 343 ) (Token id:Id.Lit_Chars val:'\tgit mv sm1 sm4 &&\n' span_id:344) (Token id:Id.Lit_Chars val:'\tcommit_file sm4 &&\n' span_id:345) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --no-commit-id --submodule=log HEAD >actual &&\n' span_id: 346 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:347) (Token id: Id.Lit_Chars val: '\tSubmodule sm4 0000000...$smhead2 (new submodule)\n' span_id: 348 ) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:349) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:350) ) } ) (C {(test_expect_success)} {(SQ (Token id:Id.Lit_Chars val:'submodule moved then removed' span_id:357))} { (SQ (Token id:Id.Lit_Chars val:'\n' span_id:361) (Token id: Id.Lit_Chars val: '\tsmhead3=$(add_file sm4 foo6 foo7) &&\n' span_id: 362 ) (Token id:Id.Lit_Chars val:'\tcommit_file sm4 &&\n' span_id:363) (Token id:Id.Lit_Chars val:'\trm -rf sm4 &&\n' span_id:364) (Token id: Id.Lit_Chars val: '\tgit diff-tree -p --no-commit-id --submodule=log HEAD >actual &&\n' span_id: 365 ) (Token id:Id.Lit_Chars val:'\tcat >expected <<-EOF &&\n' span_id:366) (Token id:Id.Lit_Chars val:'\tSubmodule sm4 $smhead2..$smhead3:\n' span_id:367) (Token id:Id.Lit_Chars val:'\t > Add foo7 ($added foo7)\n' span_id:368) (Token id:Id.Lit_Chars val:'\t > Add foo6 ($added foo6)\n' span_id:369) (Token id:Id.Lit_Chars val:'\tEOF\n' span_id:370) (Token id:Id.Lit_Chars val:'\ttest_cmp expected actual\n' span_id:371) ) } ) (C {(test_done)}) ] )