(List (= scope= flags=0 words=[] bindings=[('test_description', {[SQ ]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ./test-lib.sh]}) (= scope= flags=0 words=[] bindings=[('HOOKDIR', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-dir]})][LIT_CHARS /hooks]]})]) (= scope= flags=0 words=[] bindings=[('HOOK', {[DQ [VarSub HOOKDIR][LIT_CHARS /pre-push]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub HOOKDIR]]}) (Com {[LIT_CHARS write_script]} {[DQ [VarSub HOOK]]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "cat >/dev/null\n"][LIT_CHARS "exit 0\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS write_script]} {[DQ [VarSub HOOK]]} < (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "cat >/dev/null\n"][LIT_CHARS "exit 1\n"]]} 0), > ) (= scope= flags=0 words=[] bindings=[('COMMIT1', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]]})]) (= scope= flags=1 words=[{[LIT_CHARS COMMIT1]}] bindings=[]) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (= scope= flags=0 words=[] bindings=[('COMMIT2', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]]})]) (= scope= flags=1 words=[{[LIT_CHARS COMMIT2]}] bindings=[]) (Com {[LIT_CHARS write_script]} {[DQ [VarSub HOOK]]} < (HereDocRedirectNode here_end='EOF' do_expansion=False body_word={[LIT_CHARS "echo \"$1\" >actual\n"] [LIT_CHARS "echo \"$2\" >>actual\n"] [LIT_CHARS "cat >>actual\n"]} 0), > ) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expected]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "parent1\n"][LIT_CHARS "repo1\n"][LIT_CHARS "refs/heads/master "][VarSub COMMIT2][LIT_CHARS " refs/heads/foreign "][VarSub COMMIT1][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (= scope= flags=0 words=[] bindings=[('COMMIT3', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS HEAD]})]]})]) (= scope= flags=1 words=[{[LIT_CHARS COMMIT3]}] bindings=[]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expected]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "parent1\n"][LIT_CHARS "repo1\n"][LIT_CHARS "refs/heads/other "][VarSub COMMIT3][LIT_CHARS " refs/heads/foreign "][VarSub COMMIT2][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expected]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "parent1\n"][LIT_CHARS "repo1\n"][LIT_CHARS "refs/tags/one "][VarSub COMMIT1][LIT_CHARS " refs/tags/tag1 "][VarSub _z40][LIT_CHARS "\n"][LIT_CHARS "HEAD~ "][VarSub COMMIT2][LIT_CHARS " refs/heads/prev "][VarSub _z40][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expected]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "parent1\n"][LIT_CHARS "repo1\n"][LIT_CHARS "(delete) "][VarSub _z40][LIT_CHARS " refs/heads/prev "][VarSub COMMIT2][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[LIT_CHARS expected]} "> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "repo1\n"][LIT_CHARS "repo1\n"][LIT_CHARS "HEAD "][VarSub COMMIT3][LIT_CHARS " refs/heads/other "][VarSub _z40][LIT_CHARS "\n"]]} 0), > ) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_expect_success]} {[SQ ]} {[SQ ]}) (Com {[LIT_CHARS test_done]}) )