(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 submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 0000000..."][VarSub head1][LIT_CHARS " (2):\n"][LIT_CHARS " > Add foo2\n"][LIT_CHARS "\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 "\tmkdir sub &&\n"][LIT_CHARS "\t(\n"][LIT_CHARS "\t\tcd sub &&\n"][LIT_CHARS "\t\tgit submodule summary >../actual\n"][LIT_CHARS "\t) &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* ../sm1 0000000..."][VarSub head1][LIT_CHARS " (2):\n"][LIT_CHARS " > Add foo2\n"][LIT_CHARS "\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 "\t(\n"][LIT_CHARS "\t\tcd sub &&\n"][LIT_CHARS "\t\tgit submodule summary . >../actual\n"][LIT_CHARS "\t) &&\n"][LIT_CHARS "\t>expected &&\n"][LIT_CHARS "\ttest_cmp expected actual\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t(\n"][LIT_CHARS "\t\tcd sub &&\n"][LIT_CHARS "\t\tgit submodule summary ../sm1 >../actual\n"][LIT_CHARS "\t) &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* ../sm1 0000000..."][VarSub head1][LIT_CHARS " (2):\n"][LIT_CHARS " > Add foo2\n"][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=[('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 submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head1][LIT_CHARS ...][VarSub head2][LIT_CHARS " (1):\n"][LIT_CHARS " > Add foo3\n"][LIT_CHARS "\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 submodule summary --files >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head1][LIT_CHARS ...][VarSub head2][LIT_CHARS " (1):\n"][LIT_CHARS " > Add foo3\n"][LIT_CHARS "\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 config -f .gitmodules submodule.sm1.path sm1 &&\n"][LIT_CHARS "\tgit config -f .gitmodules submodule.sm1.ignore all &&\n"][LIT_CHARS "\tgit config submodule.sm1.ignore all &&\n"][LIT_CHARS "\tgit config diff.ignoreSubmodules all &&\n"][LIT_CHARS "\tgit submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head1][LIT_CHARS ...][VarSub head2][LIT_CHARS " (1):\n"][LIT_CHARS " > Add foo3\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_cmp expected actual &&\n"][LIT_CHARS "\tgit config --unset diff.ignoreSubmodules &&\n"][LIT_CHARS "\tgit config --remove-section submodule.sm1 &&\n"][LIT_CHARS "\tgit config -f .gitmodules --remove-section submodule.sm1\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 submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head2][LIT_CHARS ...][VarSub head3][LIT_CHARS " (2):\n"][LIT_CHARS " < Add foo3\n"][LIT_CHARS " < Add foo2\n"][LIT_CHARS "\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 submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head2][LIT_CHARS ...][VarSub head4][LIT_CHARS " (4):\n"][LIT_CHARS " > Add foo5\n"][LIT_CHARS " > Add foo4\n"][LIT_CHARS " < Add foo3\n"][LIT_CHARS " < Add foo2\n"][LIT_CHARS "\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 submodule summary -n 3 >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head2][LIT_CHARS ...][VarSub head4][LIT_CHARS " (4):\n"][LIT_CHARS " > Add foo5\n"][LIT_CHARS " > Add foo4\n"][LIT_CHARS " < Add foo3\n"][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]}) (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 submodule summary --cached >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head4][LIT_CHARS "(submodule)->"][VarSub head5][LIT_CHARS "(blob) (3):\n"][LIT_CHARS " < Add foo5\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_i18ncmp actual expected\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[SQ blob), --files">]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit submodule summary --files >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head5][LIT_CHARS "(blob)->"][VarSub head4][LIT_CHARS "(submodule) (3):\n"][LIT_CHARS " > Add foo5\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_i18ncmp actual expected\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 submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head4][LIT_CHARS "(submodule)->"][VarSub head5][LIT_CHARS "(blob):\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_i18ncmp actual expected\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]})]})]) ) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head4][LIT_CHARS ...][VarSub head6][LIT_CHARS ":\n"][LIT_CHARS " Warn: sm1 doesn't contain commit "][VarSub head4_full][LIT_CHARS "\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_i18ncmp actual expected\n"]]}) (Com {[LIT_CHARS commit_file]}) (Com {[LIT_CHARS test_expect_success]} {[SQ submodule)">]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head5][LIT_CHARS "(blob)->"][VarSub head6][LIT_CHARS "(submodule) (2):\n"][LIT_CHARS " > Add foo7\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"][LIT_CHARS "\ttest_i18ncmp expected actual\n"]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS commit_file]} {[LIT_CHARS sm1]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[LIT_CHARS sm1]}) ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head6][LIT_CHARS "...0000000:\n"][LIT_CHARS "\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 submodule summary >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head6][LIT_CHARS "...0000000:\n"][LIT_CHARS "\n"][LIT_CHARS "* sm2 0000000..."][VarSub head7][LIT_CHARS " (2):\n"][LIT_CHARS " > Add foo9\n"][LIT_CHARS "\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 submodule summary sm2 >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm2 0000000..."][VarSub head7][LIT_CHARS " (2):\n"][LIT_CHARS " > Add foo9\n"][LIT_CHARS "\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 submodule summary HEAD^ >actual &&\n"][LIT_CHARS "\tcat >expected <<-EOF &&\n"][LIT_CHARS "* sm1 "][VarSub head6][LIT_CHARS "...0000000:\n"][LIT_CHARS "\n"][LIT_CHARS "* sm2 0000000..."][VarSub head7][LIT_CHARS " (2):\n"][LIT_CHARS " > Add foo9\n"][LIT_CHARS "\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 submodule summary --for-status HEAD^ >actual &&\n"][LIT_CHARS "\ttest_i18ncmp actual - < Add foo9\n"][LIT_CHARS "\n"][LIT_CHARS "EOF\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\ttest_must_fail git submodule summary --files --cached\n"]]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\tgit init xyzzy &&\n"][LIT_CHARS "\tcd xyzzy &&\n"][LIT_CHARS "\tgit submodule summary >output 2>&1 &&\n"][LIT_CHARS "\ttest_cmp output /dev/null\n"]]}) (Com {[LIT_CHARS test_done]}) )