(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]} ) (FunctionDef add_file [] (List (= scope= flags=0 words=[] bindings=[('sm', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) (= scope= flags=0 words=[] bindings=[('owd', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (Com {[LIT_CHARS cd]} {[DQ [VarSub sm]]} ) (For name do_arg_iter) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub name]]} < (FilenameRedirectNode filename={[DQ [VarSub name]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[DQ [VarSub name]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "Add "][VarSub name]]} ) ) ) ) ) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]} ) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1-7]} ) ) (Com {[LIT_CHARS cd]} {[DQ [VarSub owd]]} ) ) ) (FunctionDef commit_file [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_tick]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[DQ [VarSub @]]} {[LIT_CHARS -m]} {[DQ [LIT_CHARS "Commit "][VarSub *]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_create_repo]} {[LIT_CHARS sm1]} ) (Com {[LIT_CHARS add_file]} {[LIT_CHARS .]} {[LIT_CHARS foo]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) (= scope= flags=0 words=[] bindings=[('head1', {[ComSub (Com {[LIT_CHARS add_file]} {[LIT_CHARS sm1]} {[LIT_CHARS foo1]} {[LIT_CHARS foo2]})]})]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit add sm1 &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 0000000..."][VarSub head1][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS commit_file]} {[LIT_CHARS sm1]} ) (= scope= flags=0 words=[] bindings=[('head2', {[ComSub (Com {[LIT_CHARS add_file]} {[LIT_CHARS sm1]} {[LIT_CHARS foo3]})]})]) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head1][LIT_CHARS ..][VarSub head2][LIT_CHARS ":\n"][LIT_CHARS " > Add foo3\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff --submodule=log >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head1][LIT_CHARS ..][VarSub head2][LIT_CHARS ":\n"][LIT_CHARS " > Add foo3\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff --submodule >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head1][LIT_CHARS ..][VarSub head2][LIT_CHARS ":\n"][LIT_CHARS " > Add foo3\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (= scope= flags=0 words=[] bindings=[('fullhead1', {[ComSub (List (Com {[LIT_CHARS cd]} {[LIT_CHARS sm1]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --max-count] [LIT_DBRACKET_LIKE "="] [LIT_CHARS 1]} {[VarSub head1]}) )]})]) (= scope= flags=0 words=[] bindings=[('fullhead2', {[ComSub (List (Com {[LIT_CHARS cd]} {[LIT_CHARS sm1]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --max-count] [LIT_DBRACKET_LIKE "="] [LIT_CHARS 1]} {[VarSub head2]}) )]})]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff --submodule=short >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "diff --git a/sm1 b/sm1\n"][LIT_CHARS "index "][VarSub head1][LIT_CHARS ..][VarSub head2][LIT_CHARS " 160000\n"][LIT_CHARS "--- a/sm1\n"][LIT_CHARS "+++ b/sm1\n"][LIT_CHARS "@@ -1 +1 @@\n"][LIT_CHARS "-Subproject commit "][VarSub fullhead1][LIT_CHARS "\n"][LIT_CHARS "+Subproject commit "][VarSub fullhead2][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS commit_file]} {[LIT_CHARS sm1]} ) (= scope= flags=0 words=[] bindings=[('head3', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS sm1]}) (AndOr OP_AND_IF (Com redirects=[(FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1)]{[LIT_CHARS git]} {[LIT_CHARS reset]} {[LIT_CHARS --hard]} {[LIT_CHARS HEAD] [LIT_TILDE "~"] [LIT_CHARS 2]}) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1-7]}) ) ) )]})]) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head2][LIT_CHARS ..][VarSub head3][LIT_CHARS " (rewind):\n"][LIT_CHARS " < Add foo3\n"][LIT_CHARS " < Add foo2\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head4', {[ComSub (Com {[LIT_CHARS add_file]} {[LIT_CHARS sm1]} {[LIT_CHARS foo4]} {[LIT_CHARS foo5]})]})]) (= scope= flags=0 words=[] bindings=[('head4_full', {[ComSub (Com more_env=[('GIT_DIR', {[LIT_CHARS sm1/.git]})] {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]})]})]) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head2][LIT_CHARS ...][VarSub head4][LIT_CHARS ":\n"][LIT_CHARS " > Add foo5\n"][LIT_CHARS " > Add foo4\n"][LIT_CHARS " < Add foo3\n"][LIT_CHARS " < Add foo2\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS commit_file]} {[LIT_CHARS sm1]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS mv]} {[LIT_CHARS sm1]} {[LIT_CHARS sm1-bak]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[LIT_CHARS sm1]} < (FilenameRedirectNode filename={[LIT_CHARS sm1]} "> 1), > ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head5', {[ComSub (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[LIT_CHARS sm1]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1-7]}) )]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[LIT_CHARS sm1]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS sm1]} ) (Com {[LIT_CHARS mv]} {[LIT_CHARS sm1-bak]} {[LIT_CHARS sm1]} ) ) ) ) ) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ blob), --cached">]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff --submodule=log --cached >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 41fbea9...0000000 (submodule deleted)\n"][LIT_CHARS "diff --git a/sm1 b/sm1\n"][LIT_CHARS "new file mode 100644\n"][LIT_CHARS "index 0000000..9da5fb8\n"][LIT_CHARS "--- /dev/null\n"][LIT_CHARS "+++ b/sm1\n"][LIT_CHARS "@@ -0,0 +1 @@\n"][LIT_CHARS "+sm1\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ blob)">]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff --submodule=log >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "diff --git a/sm1 b/sm1\n"][LIT_CHARS "deleted file mode 100644\n"][LIT_CHARS "index 9da5fb8..0000000\n"][LIT_CHARS "--- a/sm1\n"][LIT_CHARS "+++ /dev/null\n"][LIT_CHARS "@@ -1 +0,0 @@\n"][LIT_CHARS "-sm1\n"][LIT_CHARS "Submodule sm1 0000000..."][VarSub head4][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_CHARS sm1]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS checkout-index]} {[LIT_CHARS sm1]} ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ blob)">]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head4][LIT_CHARS "...0000000 (submodule deleted)\n"][LIT_CHARS "diff --git a/sm1 b/sm1\n"][LIT_CHARS "new file mode 100644\n"][LIT_CHARS "index 0000000.."][VarSub head5][LIT_CHARS "\n"][LIT_CHARS "--- /dev/null\n"][LIT_CHARS "+++ b/sm1\n"][LIT_CHARS "@@ -0,0 +1 @@\n"][LIT_CHARS "+sm1\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[LIT_CHARS sm1]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_create_repo]} {[LIT_CHARS sm1]} ) (= scope= flags=0 words=[] bindings=[('head6', {[ComSub (Com {[LIT_CHARS add_file]} {[LIT_CHARS sm1]} {[LIT_CHARS foo6]} {[LIT_CHARS foo7]})]})]) ) ) (= scope= flags=0 words=[] bindings=[('fullhead6', {[ComSub (List (Com {[LIT_CHARS cd]} {[LIT_CHARS sm1]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --max-count] [LIT_DBRACKET_LIKE "="] [LIT_CHARS 1]} {[VarSub head6]}) )]})]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head4][LIT_CHARS ...][VarSub head6][LIT_CHARS " (commits not present)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS commit_file]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ submodule)">]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "diff --git a/sm1 b/sm1\n"][LIT_CHARS "deleted file mode 100644\n"][LIT_CHARS "index "][VarSub head5][LIT_CHARS "..0000000\n"][LIT_CHARS "--- a/sm1\n"][LIT_CHARS "+++ /dev/null\n"][LIT_CHARS "@@ -1 +0,0 @@\n"][LIT_CHARS "-sm1\n"][LIT_CHARS "Submodule sm1 0000000..."][VarSub head6][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS commit_file]} {[LIT_CHARS sm1]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo new > sm1/new-file &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains untracked content\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=all --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo new > sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains untracked content\n"][LIT_CHARS "Submodule sm1 contains modified content\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo new > sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains modified content\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo new > sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo new > sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\trm -f sm1/new-file &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains modified content\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Subshell (List (Com {[LIT_CHARS cd]} {[LIT_CHARS sm1]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[LIT_CHARS -mchange]} {[LIT_CHARS foo6]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head8', {[ComSub (List (Com {[LIT_CHARS cd]} {[LIT_CHARS sm1]}) (Pipeline (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[LIT_CHARS HEAD]}) (Com {[LIT_CHARS cut]} {[LIT_CHARS -c1-7]}) ) )]})]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo new > sm1/new-file &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains untracked content\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=all --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo modification >> sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains untracked content\n"][LIT_CHARS "Submodule sm1 contains modified content\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo modification >> sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=untracked --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains modified content\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo modification >> sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules=dirty --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\techo modification >> sm1/foo6 &&\n"][LIT_CHARS "\tgit diff-index -p --ignore-submodules --submodule=log HEAD >actual &&\n"][LIT_CHARS "\t! test -s actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\trm -f sm1/new-file &&\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 contains modified content\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS ..][VarSub head8][LIT_CHARS ":\n"][LIT_CHARS " > change\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_CHARS sm1]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS "...0000000 (submodule deleted)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_create_repo]} {[LIT_CHARS sm2]} ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('head7', {[ComSub (Com {[LIT_CHARS add_file]} {[LIT_CHARS sm2]} {[LIT_CHARS foo8]} {[LIT_CHARS foo9]})]})]) (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[LIT_CHARS sm2]} ) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS "...0000000 (submodule deleted)\n"][LIT_CHARS "Submodule sm2 0000000..."][VarSub head7][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD sm2 >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm2 0000000..."][VarSub head7][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS commit_file]} {[LIT_CHARS sm2]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=log HEAD^ >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS "...0000000 (submodule deleted)\n"][LIT_CHARS "Submodule sm2 0000000..."][VarSub head7][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule HEAD^ >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "Submodule sm1 "][VarSub head6][LIT_CHARS "...0000000 (submodule deleted)\n"][LIT_CHARS "Submodule sm2 0000000..."][VarSub head7][LIT_CHARS " (new submodule)\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (= scope= flags=0 words=[] bindings=[('fullhead7', {[ComSub (List (Com {[LIT_CHARS cd]} {[LIT_CHARS sm2]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-list]} {[LIT_CHARS --max-count] [LIT_DBRACKET_LIKE "="] [LIT_CHARS 1]} {[VarSub head7]}) )]})]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit diff-index -p --submodule=short HEAD^ >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "diff --git a/sm1 b/sm1\n"][LIT_CHARS "deleted file mode 160000\n"][LIT_CHARS "index "][VarSub head6][LIT_CHARS "..0000000\n"][LIT_CHARS "--- a/sm1\n"][LIT_CHARS "+++ /dev/null\n"][LIT_CHARS "@@ -1 +0,0 @@\n"][LIT_CHARS "-Subproject commit "][VarSub fullhead6][LIT_CHARS "\n"][LIT_CHARS "diff --git a/sm2 b/sm2\n"][LIT_CHARS "new file mode 160000\n"][LIT_CHARS "index 0000000.."][VarSub head7][LIT_CHARS "\n"][LIT_CHARS "--- /dev/null\n"][LIT_CHARS "+++ b/sm2\n"][LIT_CHARS "@@ -0,0 +1 @@\n"][LIT_CHARS "+Subproject commit "][VarSub fullhead7][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ .git)\n">]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ actual &&\n"> expected <<-EOF &&\n"> ]} ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ a &&\n"> b &&\n"> b\" >../expected\n"> ../actual\n"> ]} ) (Com {[LIT_CHARS test_done]} ) )