(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_set_index_version [] (List (= scope= flags=0 words=[] bindings=[('GIT_INDEX_VERSION', {[DQ [VarSub 1]]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_INDEX_VERSION]}] bindings=[]) ) ) (FunctionDef test_decode_color [] (Com {[LIT_CHARS awk]} {[SQ \";\n"> ]}) ) (FunctionDef lf_to_nul [] (Com {[LIT_CHARS perl]} {[LIT_CHARS -pe]} {[SQ ]}) ) (FunctionDef nul_to_q [] (Com {[LIT_CHARS perl]} {[LIT_CHARS -pe]} {[SQ ]}) ) (FunctionDef q_to_nul [] (Com {[LIT_CHARS perl]} {[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 qz_to_tab_space [] (Com {[LIT_CHARS tr]} {[LIT_CHARS QZ]} {[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_OTHER "="]} {[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 debug [] (Com {[DQ [VarSub @]]} more_env=[('GIT_TEST_GDB', {[LIT_CHARS 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_OTHER "!"] [LIT_OTHER "="]} {[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 4 test_op=VS_TEST_COLON_HYPHEN {[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 (= scope= flags=0 words=[] bindings=[('config_dir', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[LIT_CHARS -C]}) (List (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('config_dir', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) ) ) (Com {[LIT_CHARS git]} {[VarSub config_dir test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "-C "] [DQ [VarSub config_dir]]}]} {[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 [] (List (= scope= flags=0 words=[] bindings=[('config_dir', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[LIT_CHARS -C]}) (List (Com {[LIT_CHARS shift]}) (= scope= flags=0 words=[] bindings=[('config_dir', {[VarSub 1]})]) (Com {[LIT_CHARS shift]}) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_when_finished]} {[DQ [LIT_CHARS "test_unconfig "][VarSub config_dir test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "-C '"] [VarSub config_dir] [LIT_CHARS "'"]}][LIT_CHARS " '"][VarSub 1][LIT_CHARS "'"]]}) (Com {[LIT_CHARS git]} {[VarSub config_dir test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "-C "] [DQ [VarSub config_dir]]}]} {[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_OTHER "="] [\ 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_OTHER "="]} {[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 [VarSub prerequisite]]}, pat_word_list=[[{[LIT_OTHER "!"] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('negative_prereq', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('prerequisite', {[VarSub prerequisite transform_ops=[VS_UNARY_POUND {[LIT_CHARS "!"]}]]})]) ) (= scope= flags=0 words=[] bindings=[('negative_prereq', {[SQ ]})]) ) (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=[('satisfied_this_prereq', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('satisfied_this_prereq', {[SQ ]})]) ) (Case to_match={[DQ [VarSub satisfied_this_prereq][LIT_CHARS ","][VarSub negative_prereq]]}, pat_word_list=[[{[LIT_CHARS t] [LIT_COMMA ","]}, {[LIT_COMMA ","] [LIT_CHARS t]}], [{[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]}}}]})]) (List (= scope= flags=0 words=[] bindings=[('prerequisite', {[VarSub negative_prereq test_op=VS_TEST_COLON_PLUS {[LIT_CHARS "!"]}] [VarSub prerequisite]})]) (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_OTHER "="]} {[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_verify_prereq [] (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub test_prereq]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS expr]} {[DQ [VarSub test_prereq]]} {[LIT_OTHER ":"]} {[SQ ]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), > ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: '"][VarSub test_prereq][LIT_CHARS "' does not look like a prereq"]]}) ) ) ) (FunctionDef test_expect_failure [] (List (Com {[LIT_CHARS test_start_]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_OTHER "="]} {[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_OTHER "="]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 2 or 3 parameters to test-expect-failure"]]}) ) (Com {[LIT_CHARS test_verify_prereq]}) (= 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 test_finish_]}) ) ) (FunctionDef test_expect_success [] (List (Com {[LIT_CHARS test_start_]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_OTHER "="]} {[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_OTHER "="]} {[LIT_CHARS 2]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in the test script: not 2 or 3 parameters to test-expect-success"]]}) ) (Com {[LIT_CHARS test_verify_prereq]}) (= 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 test_finish_]}) ) ) (FunctionDef test_external [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_OTHER "="]} {[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_OTHER "="]} {[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]}) (Com {[LIT_CHARS test_verify_prereq]}) (= 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_CHARS test]} {[DQ [VarSub ?]]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (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_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub stderr]]}) (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_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -s]} {[DQ [VarSub stderr]]}) (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_CHARS test]} {[DQ [VarSub verbose]]} {[LIT_OTHER "="]} {[LIT_CHARS t]}) (= 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_CHARS test]} {[LIT_CHARS -f]} {[DQ [VarSub 1]]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "File "][VarSub 1][LIT_CHARS " doesn't exist. "][VarSub 2]]}) (Com {[LIT_CHARS false]}) ) ) ) (FunctionDef test_path_is_dir [] (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub 1]]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Directory "][VarSub 1][LIT_CHARS " doesn't exist. "][VarSub 2]]}) (Com {[LIT_CHARS false]}) ) ) ) (FunctionDef test_dir_is_empty [] (AndOr OP_AND_IF (Com {[LIT_CHARS test_path_is_dir]} {[DQ [VarSub 1]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [ComSub (Pipeline (Com {[LIT_CHARS ls]} {[LIT_CHARS -a1]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS egrep]} {[LIT_CHARS -v]} {[SQ ]}) )]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Directory '"][VarSub 1][LIT_CHARS "' is not empty, it contains:"]]}) (Com {[LIT_CHARS ls]} {[LIT_CHARS -la]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) ) ) (FunctionDef test_path_is_missing [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -e]} {[DQ [VarSub 1]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "Path exists:"]]}) (Com {[LIT_CHARS ls]} {[LIT_CHARS -ld]} {[DQ [VarSub 1]]}) (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -ge]} {[LIT_CHARS 1]}) (Com {[LIT_CHARS echo]} {[DQ [VarSub *]]}) ) (Com {[LIT_CHARS false]}) ) ) ) (FunctionDef test_line_count [] (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_OTHER "!"] [LIT_OTHER "="]} {[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 list_contains [] (List (Case to_match={[DQ [LIT_CHARS ","][VarSub 1][LIT_CHARS ","]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_COMMA ","] [VarSub 2] [LIT_COMMA ","] [LIT_OTHER "*"]}]] (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef test_must_fail [] (List (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_VAR_LIKE "ok="] [LIT_OTHER "*"] =}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('_test_ok', {[VarSub 1 transform_ops=[VS_UNARY_POUND {[LIT_CHARS "ok="]}]]})]) (Com {[LIT_CHARS shift]}) ) (= scope= flags=0 words=[] bindings=[('_test_ok', {[SQ ]})]) ) (Com {[DQ [VarSub @]]}) (= scope= flags=0 words=[] bindings=[('exit_code', {[VarSub ?]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]}) (Pipeline! (Com {[LIT_CHARS list_contains]} {[DQ [VarSub _test_ok]]} {[LIT_CHARS success]}) ) ) (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]}) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test_match_signal]} {[LIT_CHARS 13]} {[VarSub exit_code]}) (Com {[LIT_CHARS list_contains]} {[DQ [VarSub _test_ok]]} {[LIT_CHARS sigpipe]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_CHARS -gt]} {[LIT_CHARS 129]}) (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_CHARS -le]} {[LIT_CHARS 192]}) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_must_fail: died by signal "][ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub exit_code]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 128]}}}][LIT_CHARS ": "][VarSub *]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) (Com {[LIT_CHARS test]} {[VarSub exit_code]} {[LIT_CHARS -eq]} {[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 test]} {[VarSub exit_code]} {[LIT_CHARS -eq]} {[LIT_CHARS 126]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "test_must_fail: valgrind error: "][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 [] (Com {[LIT_CHARS test_must_fail]} {[LIT_VAR_LIKE "ok="] [LIT_CHARS success] =} {[DQ [VarSub @]]}) ) (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_OTHER "="]} {[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_cmp_bin [] (Com {[LIT_CHARS cmp]} {[DQ [VarSub @]]}) ) (FunctionDef verbose [] (List (AndOr OP_AND_IF (Com {[DQ [VarSub @]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "command failed: "][ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --sq-quote]} {[DQ [VarSub @]]})]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef test_must_be_empty [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub 1]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "'"][VarSub 1][LIT_CHARS "' is not empty, it contains:"]]}) (Com {[LIT_CHARS cat]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) ) (FunctionDef test_cmp_rev [] (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[LIT_CHARS expect.rev]} "> 1), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --verify]} {[DQ [VarSub 2]]} < (FilenameRedirectNode filename={[LIT_CHARS actual.rev]} "> 1), > ) (Com {[LIT_CHARS test_cmp]} {[LIT_CHARS expect.rev]} {[LIT_CHARS actual.rev]}) ) ) ) (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"]]}) ) (= scope= flags=0 words=[] bindings=[('test_seq_counter__', {[VarSub 1]})]) (While (Com {[LIT_CHARS test]} {[DQ [VarSub test_seq_counter__]]} {[LIT_CHARS -le]} {[DQ [VarSub 2]]}) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub test_seq_counter__]]}) (= scope= flags=0 words=[] bindings=[('test_seq_counter__', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_seq_counter__]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) ) ) ) ) (FunctionDef test_when_finished [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub BASH_SUBSHELL test_op=VS_TEST_HYPHEN {[LIT_CHARS 0]}]]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "bug in test script: test_when_finished does nothing in a subshell"]]}) ) (= 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_OTHER "="]} {[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]}) ) ) ) (FunctionDef test_ln_s_add [] (If (Com {[LIT_CHARS test_have_prereq]} {[LIT_CHARS SYMLINKS]}) (AndOr OP_AND_IF (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --add]} {[DQ [VarSub 2]]}) ) (ElseTrue) (AndOr OP_AND_IF (Com {[LIT_CHARS printf]} {[SQ ]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub 2]]} "> 1), > ) (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('ln_s_obj', {[ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS hash-object]} {[LIT_CHARS -w]} {[DQ [VarSub 2]]})]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[LIT_CHARS --add]} {[LIT_CHARS --cacheinfo]} {[LIT_CHARS 120000]} {[VarSub ln_s_obj]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS update-index]} {[DQ [VarSub 2]]}) ) ) ) ) ) (FunctionDef test_write_lines [] (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"][\ LIT_ESCAPED_CHAR "\\n"]]} {[DQ [VarSub @]]}) ) (FunctionDef perl [] (Com {[LIT_CHARS command]} {[DQ [VarSub PERL_PATH]]} {[DQ [VarSub @]]}) ) (FunctionDef test_normalize_bool [] (Com {[LIT_CHARS git]} {[LIT_CHARS -c]} {[LIT_CHARS magic.variable] [LIT_OTHER "="] [DQ [VarSub 1]]} {[LIT_CHARS config]} {[LIT_CHARS --bool]} {[LIT_CHARS magic.variable]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) (FunctionDef test_tristate [] (If (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "test x"][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{"][VarSub 1][LIT_CHARS "+isset}"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " = xisset"]]}) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "\n"][LIT_CHARS "\t\t\tcase "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " in\n"][LIT_CHARS "\t\t\t'')\t"][VarSub 1][LIT_CHARS "=false ;;\n"][LIT_CHARS "\t\t\tauto)\t;;\n"][LIT_CHARS "\t\t\t*)\t"][VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "(test_normalize_bool "][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][LIT_CHARS " || echo true) ;;\n"][LIT_CHARS "\t\t\tesac\n"][LIT_CHARS "\t\t"]]}) (ElseTrue) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "=auto"]]}) ) ) (FunctionDef test_skip_or_die [] (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS auto]}], [{[LIT_CHARS true]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('skip_all', {[VarSub 2]})]) (Com {[LIT_CHARS test_done]}) ) (Com {[LIT_CHARS error]} {[DQ [VarSub 2]]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "BUG: test tristate is '"][VarSub 1][LIT_CHARS "' (real error: "][VarSub 2][LIT_CHARS ")"]]}) ) ) (FunctionDef mingw_test_cmp [] (List (= scope= flags=0 words=[] bindings=[('test_cmp_a', {[SQ ]}), ('test_cmp_b', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('stdin_for_diff', {[SQ ]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub 2]]}) ) (List (Com {[LIT_CHARS mingw_read_file_strip_cr_]} {[LIT_CHARS test_cmp_a]} < (FilenameRedirectNode filename={[DQ [VarSub 1]]} 0), > ) (Com {[LIT_CHARS mingw_read_file_strip_cr_]} {[LIT_CHARS test_cmp_b]} < (FilenameRedirectNode filename={[DQ [VarSub 2]]} 0), > ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub 1]]}) (Com {[LIT_CHARS test]} {[DQ [VarSub 2]]} {[LIT_OTHER "="]} {[LIT_CHARS -]}) ) (List (Com {[LIT_CHARS mingw_read_file_strip_cr_]} {[LIT_CHARS test_cmp_a]} < (FilenameRedirectNode filename={[DQ [VarSub 1]]} 0), > ) (Com {[LIT_CHARS mingw_read_file_strip_cr_]} {[LIT_CHARS test_cmp_b]}) (= scope= flags=0 words=[] bindings=[('stdin_for_diff', {[SQ ]})]) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_OTHER "="]} {[LIT_CHARS -]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -s]} {[DQ [VarSub 2]]}) ) (List (Com {[LIT_CHARS mingw_read_file_strip_cr_]} {[LIT_CHARS test_cmp_a]}) (Com {[LIT_CHARS mingw_read_file_strip_cr_]} {[LIT_CHARS test_cmp_b]} < (FilenameRedirectNode filename={[DQ [VarSub 2]]} 0), > ) (= scope= flags=0 words=[] bindings=[('stdin_for_diff', {[SQ ]})]) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub test_cmp_a]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub test_cmp_b]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub test_cmp_a]]} {[LIT_OTHER "="]} {[DQ [VarSub test_cmp_b]]}) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "diff -u "][\ LIT_ESCAPED_CHAR "\\\""][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "@"][\ LIT_ESCAPED_CHAR "\\\""][LIT_CHARS " "][VarSub stdin_for_diff]]}) ) ) ) ) ) (FunctionDef mingw_read_file_strip_cr_ [] (List (= scope= flags=0 words=[{[LIT_CHARS line]}] bindings=[]) (While (Com {[LIT_OTHER ":"]}) (List (If (Com {[LIT_CHARS read]} {[LIT_CHARS -r]} {[LIT_CHARS -d]} {[SQ ]} {[LIT_CHARS line]} more_env=[('IFS', {[SQ ]})] ) (= scope= flags=0 words=[] bindings=[('line', {[VarSub line] [SQ ]})]) (ElseTrue) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub line]]}) (Com {[LIT_CHARS break]}) ) ) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\$"][VarSub 1][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS line]]}) ) ) ) ) (FunctionDef test_env [] (Subshell (While (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]}) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_OTHER "="] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS eval]} {[DQ [VarSub 1 transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "=*"]}]][LIT_CHARS "="][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "{1#*=}"]]}) (Com {[LIT_CHARS eval]} {[DQ [LIT_CHARS "export "][VarSub 1 transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "=*"]}]]]}) (Com {[LIT_CHARS shift]}) ) (List (Com {[DQ [VarSub @]]}) (Com {[LIT_CHARS exit]}) ) ) ) ) ) (FunctionDef test_match_signal [] (List (If (Com {[LIT_CHARS test]} {[DQ [VarSub 2]]} {[LIT_OTHER "="]} {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 128]}} {A Atom NODE_ARITH_WORD {[VarSub 1]}}}]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS test]} {[DQ [VarSub 2]]} {[LIT_OTHER "="]} {[DQ [ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 256]}} {A Atom NODE_ARITH_WORD {[VarSub 1]}}}]]}) (Com {[LIT_CHARS return]} {[LIT_CHARS 0]}) ) (Com {[LIT_CHARS return]} {[LIT_CHARS 1]}) ) ) (FunctionDef test_copy_bytes [] (Com {[LIT_CHARS perl]} {[LIT_CHARS -e]} {[SQ 0) {\n"> ]} {[LIT_CHARS -]} {[DQ [VarSub 1]]}) ) )