(List (FunctionDef test_set_editor [] (List (= scope= flags=0 words=[] bindings=[('FAKE_EDITOR', {[DQ [VarSub 1]]})]) (= scope= flags=1 words=[{[LIT_CHARS FAKE_EDITOR]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('EDITOR', {[SQ ]})]) (= scope= flags=1 words=[{[LIT_CHARS EDITOR]}] bindings=[]) ) ) (FunctionDef test_decode_color [] (Com {[LIT_CHARS awk]} {[SQ \";\n"> ]} ) ) (FunctionDef nul_to_q [] (Com {[DQ [VarSub PERL_PATH]]} {[LIT_CHARS -pe]} {[SQ ]} ) ) (FunctionDef q_to_nul [] (Com {[DQ [VarSub PERL_PATH]]} {[LIT_CHARS -pe]} {[SQ ]} ) ) (FunctionDef q_to_cr [] (Com {[LIT_CHARS tr]} {[LIT_CHARS Q]} {[SQ ]} ) ) (FunctionDef q_to_tab [] (Com {[LIT_CHARS tr]} {[LIT_CHARS Q]} {[SQ ]} ) ) (FunctionDef append_cr [] (Pipeline (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} ) (Com {[LIT_CHARS tr]} {[LIT_CHARS Q]} {[SQ ]} ) ) ) (FunctionDef remove_cr [] (Pipeline (Com {[LIT_CHARS tr]} {[SQ ]} {[LIT_CHARS Q]} ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} ) ) ) (FunctionDef sane_unset [] (List (Com {[LIT_CHARS unset]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (FunctionDef test_tick [] (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub test_tick test_op=VS_TEST_PLUS {[LIT_CHARS set]}]]} ) (= scope= flags=0 words=[] bindings=[('test_tick', {[LIT_CHARS 1112911993]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('test_tick', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_tick]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 60]}}}]})]) ) (= scope= flags=0 words=[] bindings=[('GIT_COMMITTER_DATE', {[DQ [VarSub test_tick][LIT_CHARS " -0700"]]})]) (= scope= flags=0 words=[] bindings=[('GIT_AUTHOR_DATE', {[DQ [VarSub test_tick][LIT_CHARS " -0700"]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_COMMITTER_DATE]}, {[LIT_CHARS GIT_AUTHOR_DATE]}] bindings=[]) ) ) (FunctionDef test_pause [] (If (Com {[LIT_CHARS test]} {[DQ [VarSub verbose]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS t]} ) (Com {[DQ [VarSub SHELL_PATH]]} < (DescriptorRedirectNode target={[LIT_CHARS 6]} 0), (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) (ElseTrue) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "test_pause requires --verbose"]]} < (DescriptorRedirectNode target={[LIT_CHARS 5]} &"> 1), > ) ) ) (FunctionDef test_commit [] (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('notick', {[SQ ]})]) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('signoff', {[SQ ]})]) (AndOr OP_AND_IF (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS --notick]}], [{[LIT_CHARS --signoff]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('notick', {[LIT_CHARS yes]})]) (= scope= flags=0 words=[] bindings=[('signoff', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS break]} ) ) (Com {[LIT_CHARS shift]} ) ) ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('file', {[VarSub 2 test_op=VS_TEST_COLON_HYPHEN {[DQ [VarSub 1][LIT_CHARS .t]]}]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [VarSub 3 test_op=VS_TEST_HYPHEN {[VarSub 1]}]]} < (FilenameRedirectNode filename={[DQ [VarSub file]]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS add]} {[DQ [VarSub file]]} ) (AndOr OP_AND_IF (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub notick]]} ) (Com {[LIT_CHARS test_tick]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS commit]} {[VarSub signoff]} {[LIT_CHARS -m]} {[DQ [VarSub 1]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS tag]} {[DQ [VarSub 1]]} ) ) ) ) ) ) ) ) ) ) (FunctionDef test_merge [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_tick]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS merge]} {[LIT_CHARS -m]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS tag]} {[DQ [VarSub 1]]} ) ) ) ) (FunctionDef test_chmod [] (AndOr OP_AND_IF (Com {[LIT_CHARS chmod]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --add]} {[DQ [LIT_CHARS "--chmod="][VarSub @]]} ) ) ) (FunctionDef test_unconfig [] (List (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --unset-all]} {[DQ [VarSub @]]} ) (= scope= flags=0 words=[] bindings=[('config_status', {[VarSub ?]})]) (Case to_match={[DQ [VarSub config_status]]}, pat_word_list=[[{[LIT_CHARS 5]}]] (= scope= flags=0 words=[] bindings=[('config_status', {[LIT_CHARS 0]})]) ) (Com {[LIT_CHARS return]} {[VarSub config_status]} ) ) ) (FunctionDef test_config [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_when_finished]} {[DQ [LIT_CHARS "test_unconfig '"][VarSub 1][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[DQ [VarSub @]]} ) ) ) (FunctionDef test_config_global [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_when_finished]} {[DQ [LIT_CHARS "test_unconfig --global '"][VarSub 1][LIT_CHARS "'"]]} ) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS --global]} {[DQ [VarSub @]]} ) ) ) (FunctionDef write_script [] (AndOr OP_AND_IF (AndOr OP_AND_IF (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "#!"][VarSub 2 test_op=VS_TEST_HYPHEN {[DQ [VarSub SHELL_PATH]]}]]} ) (Com {[LIT_CHARS cat]} ) ) (Com {[LIT_CHARS chmod]} {[LIT_OTHER "+"] [LIT_CHARS x]} {[DQ [VarSub 1]]} ) ) ) (FunctionDef test_set_prereq [] (= scope= flags=0 words=[] bindings=[('satisfied_prereq', {[DQ [VarSub satisfied_prereq][VarSub 1][LIT_CHARS " "]]})]) ) (= scope= flags=0 words=[] bindings=[('satisfied_prereq', {[DQ [LIT_CHARS " "]]})]) (= scope= flags=0 words=[] bindings=[('lazily_testable_prereq', {[SQ ]}), ('lazily_tested_prereq', {[SQ ]})]) (FunctionDef test_lazy_prereq [] (List (= scope= flags=0 words=[] bindings=[('lazily_testable_prereq', {[DQ [VarSub lazily_testable_prereq][VarSub 1][LIT_CHARS " "]]})]) (Com {[LIT_CHARS eval]} {[LIT_CHARS test_prereq_lazily_] [VarSub 1] [LIT_DBRACKET_LIKE "="] [\ LIT_ESCAPED_CHAR "\\$"] [LIT_CHARS 2]} ) ) ) (FunctionDef test_run_lazy_prereq_ [] (List (= scope= flags=0 words=[] bindings=[('script', {[SQ ] [DQ [VarSub 2]] [SQ ]})]) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "checking prerequisite: "][VarSub 1]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (Com {[LIT_CHARS say]} {[DQ [VarSub script]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (Com {[LIT_CHARS test_eval_]} {[DQ [VarSub script]]} ) (= scope= flags=0 words=[] bindings=[('eval_ret', {[VarSub ?]})]) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [VarSub TRASH_DIRECTORY][LIT_CHARS /prereq-test-dir]]} ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub eval_ret]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "prerequisite "][VarSub 1][LIT_CHARS " ok"]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (ElseTrue) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "prerequisite "][VarSub 1][LIT_CHARS " not satisfied"]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) ) (Com {[LIT_CHARS return]} {[VarSub eval_ret]} ) ) ) (FunctionDef test_have_prereq [] (List (= scope= flags=0 words=[] bindings=[('save_IFS', {[VarSub IFS]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[LIT_COMMA ","]})]) (Com {[LIT_CHARS set]} {[LIT_CHARS --]} {[VarSub *]} ) (= scope= flags=0 words=[] bindings=[('IFS', {[VarSub save_IFS]})]) (= scope= flags=0 words=[] bindings=[('total_prereq', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('ok_prereq', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('missing_prereq', {[SQ ]})]) (For prerequisite do_arg_iter) (List (Case to_match={[DQ [LIT_CHARS " "][VarSub lazily_tested_prereq][LIT_CHARS " "]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub prerequisite][LIT_CHARS " "]] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (Case to_match={[DQ [LIT_CHARS " "][VarSub lazily_testable_prereq][LIT_CHARS " "]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub prerequisite][LIT_CHARS " "]] [LIT_OTHER "*"]}]] (List (AndOr OP_AND_IF (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "script="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS test_prereq_lazily_][VarSub prerequisite]]} ) (If (Com {[LIT_CHARS test_run_lazy_prereq_]} {[DQ [VarSub prerequisite]]} {[DQ [VarSub script]]} ) (Com {[LIT_CHARS test_set_prereq]} {[VarSub prerequisite]} ) ) ) (= scope= flags=0 words=[] bindings=[('lazily_tested_prereq', {[DQ [VarSub lazily_tested_prereq][VarSub prerequisite][LIT_CHARS " "]]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('total_prereq', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub total_prereq]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Case to_match={[DQ [VarSub satisfied_prereq]]}, pat_word_list=[[{[LIT_OTHER "*"] [DQ [LIT_CHARS " "][VarSub prerequisite][LIT_CHARS " "]] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('ok_prereq', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub ok_prereq]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub missing_prereq]]} ) (= scope= flags=0 words=[] bindings=[('missing_prereq', {[VarSub prerequisite]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('missing_prereq', {[DQ [VarSub prerequisite][LIT_CHARS ","][VarSub missing_prereq]]})]) ) ) ) ) (Com {[LIT_CHARS test]} {[VarSub total_prereq]} {[LIT_DBRACKET_LIKE "="]} {[VarSub ok_prereq]} ) ) ) (FunctionDef test_declared_prereq [] (List (Case to_match={[DQ [LIT_CHARS ","][VarSub test_prereq][LIT_CHARS ","]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_COMMA ","] [VarSub 1] [LIT_COMMA ","] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef test_expect_failure [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 3]} ) (AndOr OP_OR_IF (List (= scope= flags=0 words=[] bindings=[('test_prereq', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) ) (= scope= flags=0 words=[] bindings=[('test_prereq', {[SQ ]})]) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 2 or 3 parameters to test-expect-failure"]]} ) ) (= scope= flags=1 words=[{[LIT_CHARS test_prereq]}] bindings=[]) (If (Pipeline! (Com {[LIT_CHARS test_skip]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "checking known breakage: "][VarSub 2]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (If (Com {[LIT_CHARS test_run_]} {[DQ [VarSub 2]]} {[LIT_CHARS expecting_failure]} ) (Com {[LIT_CHARS test_known_broken_ok_]} {[DQ [VarSub 1]]} ) (ElseTrue) (Com {[LIT_CHARS test_known_broken_failure_]} {[DQ [VarSub 1]]} ) ) ) ) (Com {[LIT_CHARS echo]} {[DQ ]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) ) ) (FunctionDef test_expect_success [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 3]} ) (AndOr OP_OR_IF (List (= scope= flags=0 words=[] bindings=[('test_prereq', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) ) (= scope= flags=0 words=[] bindings=[('test_prereq', {[SQ ]})]) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 2 or 3 parameters to test-expect-success"]]} ) ) (= scope= flags=1 words=[{[LIT_CHARS test_prereq]}] bindings=[]) (If (Pipeline! (Com {[LIT_CHARS test_skip]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "expecting success: "][VarSub 2]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (If (Com {[LIT_CHARS test_run_]} {[DQ [VarSub 2]]} ) (Com {[LIT_CHARS test_ok_]} {[DQ [VarSub 1]]} ) (ElseTrue) (Com {[LIT_CHARS test_failure_]} {[DQ [VarSub @]]} ) ) ) ) (Com {[LIT_CHARS echo]} {[DQ ]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) ) ) (FunctionDef test_external [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 4]} ) (AndOr OP_OR_IF (List (= scope= flags=0 words=[] bindings=[('test_prereq', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) ) (= scope= flags=0 words=[] bindings=[('test_prereq', {[SQ ]})]) ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 3]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 3 or 4 parameters to test_external"]]} < (DescriptorRedirectNode target={[LIT_CHARS 5]} &"> 1), > ) ) (= scope= flags=0 words=[] bindings=[('descr', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS shift]} ) (= scope= flags=1 words=[{[LIT_CHARS test_prereq]}] bindings=[]) (If (Pipeline! (Com {[LIT_CHARS test_skip]} {[DQ [VarSub descr]]} {[DQ [VarSub @]]} ) ) (List (Com {[LIT_CHARS say_color]} {[DQ ]} {[DQ [LIT_CHARS "# run "][VarSub test_count][LIT_CHARS ": "][VarSub descr][LIT_CHARS " ("][VarSub *][LIT_CHARS ")"]]} ) (= scope= flags=1 words=[{[LIT_CHARS TEST_DIRECTORY]}, {[LIT_CHARS TRASH_DIRECTORY]}, {[LIT_CHARS GIT_TEST_LONG]}] bindings=[]) (Com {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub ?]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} {[LIT_DBRACKET_LIKE "]"]} ) (If (Com {[LIT_CHARS test]} {[VarSub test_external_has_tap]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test_ok_]} {[DQ [VarSub descr]]} ) (ElseTrue) (List (Com {[LIT_CHARS say_color]} {[DQ ]} {[DQ [LIT_CHARS "# test_external test "][VarSub descr][LIT_CHARS " was ok"]]} ) (= scope= flags=0 words=[] bindings=[('test_success', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_success]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) (ElseTrue) (If (Com {[LIT_CHARS test]} {[VarSub test_external_has_tap]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test_failure_]} {[DQ [VarSub descr]]} {[DQ [VarSub @]]} ) (ElseTrue) (List (Com {[LIT_CHARS say_color]} {[LIT_CHARS error]} {[DQ [LIT_CHARS "# test_external test "][VarSub descr][LIT_CHARS " failed: "][VarSub @]]} ) (= scope= flags=0 words=[] bindings=[('test_failure', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_failure]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) ) ) ) ) (FunctionDef test_external_without_stderr [] (List (= scope= flags=0 words=[] bindings=[('tmp', {[VarSub TMPDIR test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS tmp]}]})]) (= scope= flags=0 words=[] bindings=[('stderr', {[DQ [VarSub tmp][LIT_CHARS /git-external-stderr.][VarSub $][LIT_CHARS .tmp]]})]) (Com {[LIT_CHARS test_external]} {[DQ [VarSub @]]} < (FilenameRedirectNode filename={[DQ [VarSub stderr]]} "> 4), > ) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -f]} {[DQ [VarSub stderr]]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "Internal error: "][VarSub stderr][LIT_CHARS " disappeared."]]} ) ) (= scope= flags=0 words=[] bindings=[('descr', {[DQ [LIT_CHARS "no stderr: "][VarSub 1]]})]) (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "# expecting no stderr from previous command"]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_OTHER "!"]} {[LIT_CHARS -s]} {[DQ [VarSub stderr]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS rm]} {[DQ [VarSub stderr]]} ) (If (Com {[LIT_CHARS test]} {[VarSub test_external_has_tap]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test_ok_]} {[DQ [VarSub descr]]} ) (ElseTrue) (List (Com {[LIT_CHARS say_color]} {[DQ ]} {[DQ [LIT_CHARS "# test_external_without_stderr test "][VarSub descr][LIT_CHARS " was ok"]]} ) (= scope= flags=0 words=[] bindings=[('test_success', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_success]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) (ElseTrue) (List (If (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [VarSub verbose]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS t]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('output', {[ComSub (List (Com {[LIT_CHARS echo]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "# Stderr is:"]]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub stderr]]}) )]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('output', {[SQ ]})]) ) (Com {[LIT_CHARS rm]} {[DQ [VarSub stderr]]} ) (If (Com {[LIT_CHARS test]} {[VarSub test_external_has_tap]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test_failure_]} {[DQ [VarSub descr]]} {[DQ [VarSub @]]} {[DQ [VarSub output]]} ) (ElseTrue) (List (Com {[LIT_CHARS say_color]} {[LIT_CHARS error]} {[DQ [LIT_CHARS "# test_external_without_stderr test "][VarSub descr][LIT_CHARS " failed: "][VarSub @][LIT_CHARS ": "][VarSub output]]} ) (= scope= flags=0 words=[] bindings=[('test_failure', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_failure]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) ) ) ) (FunctionDef test_path_is_file [] (If (Pipeline! (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -f]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "]"]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "File "][VarSub 1][LIT_CHARS " doesn't exist. "][VarSub *]]} ) (Com {[LIT_CHARS false]} ) ) ) ) (FunctionDef test_path_is_dir [] (If (Pipeline! (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -d]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "]"]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Directory "][VarSub 1][LIT_CHARS " doesn't exist. "][VarSub *]]} ) (Com {[LIT_CHARS false]} ) ) ) ) (FunctionDef test_path_is_missing [] (If (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -e]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "]"]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Path exists:"]]} ) (Com {[LIT_CHARS ls]} {[LIT_CHARS -ld]} {[DQ [VarSub 1]]} ) (If (Com {[LIT_DBRACKET_LIKE "["]} {[VarSub #]} {[LIT_CHARS -ge]} {[LIT_CHARS 1]} {[LIT_DBRACKET_LIKE "]"]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub *]]} ) ) (Com {[LIT_CHARS false]} ) ) ) ) (FunctionDef test_line_count [] (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 3]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 3 parameters to test_line_count"]]} ) (Pipeline! (Com {[LIT_CHARS test]} {[ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 3]]} 0)]{[LIT_CHARS wc]} {[LIT_CHARS -l]})]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_line_count: line count for "][VarSub 3][LIT_CHARS " !"][VarSub 1][LIT_CHARS " "][VarSub 2]]} ) (Com {[LIT_CHARS cat]} {[DQ [VarSub 3]]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) ) (FunctionDef test_must_fail [] (List (Com {[DQ [VarSub @]]} ) (= scope= flags=0 words=[] bindings=[('exit_code', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_must_fail: command succeeded: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_CHARS -gt]} {[LIT_CHARS 129]} {[LIT_CHARS -a]} {[VarSub exit_code]} {[LIT_CHARS -le]} {[LIT_CHARS 192]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_must_fail: died by signal: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 127]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_must_fail: command not found: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (FunctionDef test_might_fail [] (List (Com {[DQ [VarSub @]]} ) (= scope= flags=0 words=[] bindings=[('exit_code', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_CHARS -gt]} {[LIT_CHARS 129]} {[LIT_CHARS -a]} {[VarSub exit_code]} {[LIT_CHARS -le]} {[LIT_CHARS 192]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_might_fail: died by signal: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 127]} ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_might_fail: command not found: "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) ) (FunctionDef test_expect_code [] (List (= scope= flags=0 words=[] bindings=[('want_code', {[VarSub 1]})]) (Com {[LIT_CHARS shift]} ) (Com {[DQ [VarSub @]]} ) (= scope= flags=0 words=[] bindings=[('exit_code', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_DBRACKET_LIKE "="]} {[VarSub want_code]} ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]} ) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_expect_code: command exited with "][VarSub exit_code][LIT_CHARS ", we wanted "][VarSub want_code][LIT_CHARS " "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]} ) ) ) (FunctionDef test_cmp [] (Com {[VarSub GIT_TEST_CMP]} {[DQ [VarSub @]]} ) ) (FunctionDef test_seq [] (List (Case to_match={[VarSub #]}, pat_word_list=[[{[LIT_CHARS 1]}], [{[LIT_CHARS 2]}], [{[LIT_OTHER "*"]}]] (Com {[LIT_CHARS set]} {[LIT_CHARS 1]} {[DQ [VarSub @]]} ) (ElseTrue) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 1 or 2 parameters to test_seq"]]} ) ) (Com {[DQ [VarSub PERL_PATH]]} {[LIT_CHARS -le]} {[SQ ]} {[LIT_CHARS --]} {[DQ [VarSub @]]} ) ) ) (FunctionDef test_when_finished [] (= scope= flags=0 words=[] bindings=[('test_cleanup', {[DQ [LIT_CHARS "{ "][VarSub *][LIT_CHARS "\n"][LIT_CHARS "\t\t} && (exit "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS eval_ret][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS "); eval_ret="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "?; "][VarSub test_cleanup]]})]) ) (FunctionDef test_create_repo [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 1]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 1 parameter to test-create-repo"]]} ) ) (= scope= flags=0 words=[] bindings=[('repo', {[DQ [VarSub 1]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub repo]]} ) (AndOr OP_OR_IF (Subshell (List (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub repo]]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "Cannot setup test environment"]]} ) ) (AndOr OP_OR_IF (Com {[DQ [VarSub GIT_EXEC_PATH][LIT_CHARS /git-init]]} {[DQ [LIT_CHARS "--template="][VarSub GIT_BUILD_DIR][LIT_CHARS /templates/blt/]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "cannot run git init -- have you built things yet?"]]} ) ) (Com {[LIT_CHARS mv]} {[LIT_CHARS .git/hooks]} {[LIT_CHARS .git/hooks-disabled]} ) ) ) (Com {[LIT_CHARS exit]} ) ) ) ) )