(List (Case to_match={[DQ [VarSub GIT_TEST_TEE_STARTED][LIT_CHARS ", "][VarSub *][LIT_CHARS " "]]}, pat_word_list=[[{[LIT_CHARS done] [LIT_COMMA ","] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"] [SQ ] [LIT_OTHER "*"]}, {[LIT_OTHER "*"] [SQ ] [LIT_OTHER "*"]}]] (ElseTrue) (List (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[LIT_CHARS test-results]} ) (= scope= flags=0 words=[] bindings=[('BASE', {[LIT_CHARS test-results/] [ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]} {[LIT_CHARS .sh]})]})]) (Pipeline (Subshell (List (Com {[VarSub SHELL test_op=VS_TEST_HYPHEN {[LIT_CHARS sh]}]} {[DQ [VarSub 0]]} {[DQ [VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > more_env=[('GIT_TEST_TEE_STARTED', {[LIT_CHARS done]})] ) (Com {[LIT_CHARS echo]} {[VarSub ?]} < (FilenameRedirectNode filename={[VarSub BASE] [LIT_CHARS .exit]} "> 1), > ) ) ) (Com {[LIT_CHARS tee]} {[VarSub BASE] [LIT_CHARS .out]} ) ) (Com {[LIT_CHARS test]} {[DQ [ComSub (Com {[LIT_CHARS cat]} {[VarSub BASE] [LIT_CHARS .exit]})]]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS exit]} ) ) ) (= scope= flags=0 words=[] bindings=[('ORIGINAL_TERM', {[VarSub TERM]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub TEST_DIRECTORY]]} ) (= scope= flags=0 words=[] bindings=[('TEST_DIRECTORY', {[ComSub (Com {[LIT_CHARS pwd]})]})]) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub TEST_OUTPUT_DIRECTORY]]} ) (= scope= flags=0 words=[] bindings=[('TEST_OUTPUT_DIRECTORY', {[VarSub TEST_DIRECTORY]})]) ) (= scope= flags=0 words=[] bindings=[('GIT_BUILD_DIR', {[DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /..]})]) (Com {[LIT_CHARS .]} {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /GIT-BUILD-OPTIONS]} ) (= scope= flags=1 words=[{[LIT_CHARS PERL_PATH]}, {[LIT_CHARS SHELL_PATH]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('LANG', {[LIT_CHARS C]})]) (= scope= flags=0 words=[] bindings=[('LC_ALL', {[LIT_CHARS C]})]) (= scope= flags=0 words=[] bindings=[('PAGER', {[LIT_CHARS cat]})]) (= scope= flags=0 words=[] bindings=[('TZ', {[LIT_CHARS UTC]})]) (= scope= flags=0 words=[] bindings=[('TERM', {[LIT_CHARS dumb]})]) (= scope= flags=1 words=[{[LIT_CHARS LANG]}, {[LIT_CHARS LC_ALL]}, {[LIT_CHARS PAGER]}, {[LIT_CHARS TERM]}, {[LIT_CHARS TZ]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('EDITOR', {[LIT_OTHER ":"]})]) (Com {[LIT_CHARS unset]} {[LIT_CHARS VISUAL]} {[LIT_CHARS EMAIL]} {[LIT_CHARS LANGUAGE]} {[LIT_CHARS COLUMNS]} {[ComSub (Com {[DQ [VarSub PERL_PATH]]} {[LIT_CHARS -e]} {[SQ ]})]} ) (Com {[LIT_CHARS unset]} {[LIT_CHARS XDG_CONFIG_HOME]} ) (= scope= flags=0 words=[] bindings=[('GIT_AUTHOR_EMAIL', {[LIT_CHARS author] [LIT_OTHER "@"] [LIT_CHARS example.com]})]) (= scope= flags=0 words=[] bindings=[('GIT_AUTHOR_NAME', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('GIT_COMMITTER_EMAIL', {[LIT_CHARS committer] [LIT_OTHER "@"] [LIT_CHARS example.com]})]) (= scope= flags=0 words=[] bindings=[('GIT_COMMITTER_NAME', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('GIT_MERGE_VERBOSITY', {[LIT_CHARS 5]})]) (= scope= flags=0 words=[] bindings=[('GIT_MERGE_AUTOEDIT', {[LIT_CHARS no]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_MERGE_VERBOSITY]}, {[LIT_CHARS GIT_MERGE_AUTOEDIT]}] bindings=[]) (= scope= flags=1 words=[{[LIT_CHARS GIT_AUTHOR_EMAIL]}, {[LIT_CHARS GIT_AUTHOR_NAME]}] bindings=[]) (= scope= flags=1 words=[{[LIT_CHARS GIT_COMMITTER_EMAIL]}, {[LIT_CHARS GIT_COMMITTER_NAME]}] bindings=[]) (= scope= flags=1 words=[{[LIT_CHARS EDITOR]}] bindings=[]) (Com {[LIT_CHARS unset]} {[LIT_CHARS CDPATH]} ) (Com {[LIT_CHARS unset]} {[LIT_CHARS GREP_OPTIONS]} ) (Case to_match={[ComSub (Pipeline (Com {[LIT_CHARS echo]} {[VarSub GIT_TRACE]}) (Com {[LIT_CHARS tr]} {[DQ [LIT_CHARS "[A-Z]"]]} {[DQ [LIT_CHARS "[a-z]"]]}) )]}, pat_word_list=[[{[LIT_CHARS 1]}, {[LIT_CHARS 2]}, {[LIT_CHARS true]}]] (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* warning: Some tests will not work if GIT_TRACE"]]} {[DQ [LIT_CHARS "is set as to trace on STDERR ! *"]]} ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* warning: Please set GIT_TRACE to something"]]} {[DQ [LIT_CHARS "other than 1, 2 or true ! *"]]} ) ) ) (= scope= flags=0 words=[] bindings=[('_x05', {[SQ ]})]) (= scope= flags=0 words=[] bindings=[('_x40', {[DQ [VarSub _x05][VarSub _x05][VarSub _x05][VarSub _x05][VarSub _x05][VarSub _x05][VarSub _x05][VarSub _x05]]})]) (= scope= flags=0 words=[] bindings=[('_z40', {[LIT_CHARS 0000000000000000000000000000000000000000]})]) (= scope= flags=0 words=[] bindings=[('LF', {[SQ ]})]) (= scope= flags=1 words=[{[LIT_CHARS _x05]}, {[LIT_CHARS _x40]}, {[LIT_CHARS _z40]}, {[LIT_CHARS LF]}] bindings=[]) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[DQ [LIT_CHARS x][VarSub ORIGINAL_TERM]]} {[LIT_NEQUAL "!="]} {[DQ [LIT_CHARS xdumb]]} {[LIT_DBRACKET_LIKE "]"]} ) (AndOr OP_AND_IF (Subshell (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('TERM', {[VarSub ORIGINAL_TERM]})]) (AndOr OP_AND_IF (= scope= flags=1 words=[{[LIT_CHARS TERM]}] bindings=[]) (AndOr OP_AND_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -t]} {[LIT_CHARS 1]} {[LIT_DBRACKET_LIKE "]"]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS tput]} {[LIT_CHARS bold]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (AndOr OP_AND_IF (Com {[LIT_CHARS tput]} {[LIT_CHARS setaf]} {[LIT_CHARS 1]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) (Com {[LIT_CHARS tput]} {[LIT_CHARS sgr0]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('color', {[LIT_CHARS t]})]) ) ) (While (Com {[LIT_CHARS test]} {[DQ [VarSub #]]} {[LIT_CHARS -ne]} {[LIT_CHARS 0]} ) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS -d]}, {[LIT_CHARS --d]}, {[LIT_CHARS --de]}, {[LIT_CHARS --deb]}, {[LIT_CHARS --debu]}, {[LIT_CHARS --debug]}], [{[LIT_CHARS -i]}, {[LIT_CHARS --i]}, {[LIT_CHARS --im]}, {[LIT_CHARS --imm]}, {[LIT_CHARS --imme]}, {[LIT_CHARS --immed]}, {[LIT_CHARS --immedi]}, {[LIT_CHARS --immedia]}, {[LIT_CHARS --immediat]}, {[LIT_CHARS --immediate]}], [{[LIT_CHARS -l]}, {[LIT_CHARS --l]}, {[LIT_CHARS --lo]}, {[LIT_CHARS --lon]}, {[LIT_CHARS --long]}, {[LIT_CHARS --long-]}, {[LIT_CHARS --long-t]}, {[LIT_CHARS --long-te]}, {[LIT_CHARS --long-tes]}, {[LIT_CHARS --long-test]}, {[LIT_CHARS --long-tests]}], [{[LIT_CHARS -h]}, {[LIT_CHARS --h]}, {[LIT_CHARS --he]}, {[LIT_CHARS --hel]}, {[LIT_CHARS --help]}], [{[LIT_CHARS -v]}, {[LIT_CHARS --v]}, {[LIT_CHARS --ve]}, {[LIT_CHARS --ver]}, {[LIT_CHARS --verb]}, {[LIT_CHARS --verbo]}, {[LIT_CHARS --verbos]}, {[LIT_CHARS --verbose]}], [{[LIT_CHARS -q]}, {[LIT_CHARS --q]}, {[LIT_CHARS --qu]}, {[LIT_CHARS --qui]}, {[LIT_CHARS --quie]}, {[LIT_CHARS --quiet]}], [{[LIT_CHARS --with-dashes]}], [{[LIT_CHARS --no-color]}], [{[LIT_CHARS --va]}, {[LIT_CHARS --val]}, {[LIT_CHARS --valg]}, {[LIT_CHARS --valgr]}, {[LIT_CHARS --valgri]}, {[LIT_CHARS --valgrin]}, {[LIT_CHARS --valgrind]}], [{[LIT_CHARS --tee]}], [{[LIT_CHARS --root] [LIT_DBRACKET_LIKE "="] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('debug', {[LIT_CHARS t]})]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('immediate', {[LIT_CHARS t]})]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('GIT_TEST_LONG', {[LIT_CHARS t]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_TEST_LONG]}] bindings=[]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('help', {[LIT_CHARS t]})]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('verbose', {[LIT_CHARS t]})]) (Com {[LIT_CHARS shift]} ) ) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub HARNESS_ACTIVE]]} ) (= scope= flags=0 words=[] bindings=[('quiet', {[LIT_CHARS t]})]) ) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('with_dashes', {[LIT_CHARS t]})]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('color', {[SQ ]})]) (Com {[LIT_CHARS shift]} ) ) (List (= scope= flags=0 words=[] bindings=[('valgrind', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('verbose', {[LIT_CHARS t]})]) (Com {[LIT_CHARS shift]} ) ) (Com {[LIT_CHARS shift]} ) (List (= scope= flags=0 words=[] bindings=[('root', {[ComSub (Com {[LIT_CHARS expr]} {[DQ [LIT_CHARS z][VarSub 1]]} {[LIT_OTHER ":"]} {[SQ ]})]})]) (Com {[LIT_CHARS shift]} ) ) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "error: unknown test option '"][VarSub 1][LIT_CHARS "'"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub color]]} ) (FunctionDef say_color [] (Subshell (List (= scope= flags=0 words=[] bindings=[('TERM', {[VarSub ORIGINAL_TERM]})]) (= scope= flags=1 words=[{[LIT_CHARS TERM]}] bindings=[]) (Case to_match={[DQ [VarSub 1]]}, pat_word_list=[[{[LIT_CHARS error]}], [{[LIT_CHARS skip]}], [{[LIT_CHARS pass]}], [{[LIT_CHARS info]}], [{[LIT_OTHER "*"]}]] (List (Com {[LIT_CHARS tput]} {[LIT_CHARS bold]} ) (Com {[LIT_CHARS tput]} {[LIT_CHARS setaf]} {[LIT_CHARS 1]} ) ) (List (Com {[LIT_CHARS tput]} {[LIT_CHARS bold]} ) (Com {[LIT_CHARS tput]} {[LIT_CHARS setaf]} {[LIT_CHARS 2]} ) ) (Com {[LIT_CHARS tput]} {[LIT_CHARS setaf]} {[LIT_CHARS 2]} ) (Com {[LIT_CHARS tput]} {[LIT_CHARS setaf]} {[LIT_CHARS 3]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub quiet]]} ) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub *]]} ) (Com {[LIT_CHARS tput]} {[LIT_CHARS sgr0]} ) (Com {[LIT_CHARS echo]} ) ) ) ) (ElseTrue) (FunctionDef say_color [] (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub 1]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub quiet]]} ) (Com {[LIT_CHARS return]} ) ) ) (Com {[LIT_CHARS shift]} ) (Com {[LIT_CHARS echo]} {[DQ [VarSub *]]} ) ) ) ) (FunctionDef error [] (List (Com {[LIT_CHARS say_color]} {[LIT_CHARS error]} {[DQ [LIT_CHARS "error: "][VarSub *]]} ) (= scope= flags=0 words=[] bindings=[('GIT_EXIT_OK', {[LIT_CHARS t]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (FunctionDef say [] (Com {[LIT_CHARS say_color]} {[LIT_CHARS info]} {[DQ [VarSub *]]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub test_description]]} {[LIT_NEQUAL "!="]} {[DQ ]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "Test script did not set test_description."]]} ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub help]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS t]]} ) (List (Com {[LIT_CHARS echo]} {[DQ [VarSub test_description]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) ) (Com {[LIT_CHARS exec]} < (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 5), > ) (Com {[LIT_CHARS exec]} < (DescriptorRedirectNode target={[LIT_CHARS 0]} 6), > ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub verbose]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS t]]} ) (Com {[LIT_CHARS exec]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 4), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 3), > ) (ElseTrue) (Com {[LIT_CHARS exec]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 4), (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 3), > ) ) (= scope= flags=0 words=[] bindings=[('test_failure', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('test_count', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('test_fixed', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('test_broken', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('test_success', {[LIT_CHARS 0]})]) (= scope= flags=0 words=[] bindings=[('test_external_has_tap', {[LIT_CHARS 0]})]) (FunctionDef die [] (List (= scope= flags=0 words=[] bindings=[('code', {[VarSub ?]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_EXIT_OK]]} ) (Com {[LIT_CHARS exit]} {[VarSub code]} ) (ElseTrue) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "FATAL: Unexpected exit with code "][VarSub code]]} < (DescriptorRedirectNode target={[LIT_CHARS 5]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (= scope= flags=0 words=[] bindings=[('GIT_EXIT_OK', {[SQ ]})]) (Com {[LIT_CHARS trap]} {[SQ ]} {[LIT_CHARS EXIT]} ) (Com {[LIT_CHARS .]} {[DQ [VarSub TEST_DIRECTORY][LIT_CHARS /test-lib-functions.sh]]} ) (FunctionDef test_ok_ [] (List (= 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]}}}]})]) (Com {[LIT_CHARS say_color]} {[DQ ]} {[DQ [LIT_CHARS "ok "][VarSub test_count][LIT_CHARS " - "][VarSub @]]} ) ) ) (FunctionDef test_failure_ [] (List (= 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]}}}]})]) (Com {[LIT_CHARS say_color]} {[LIT_CHARS error]} {[DQ [LIT_CHARS "not ok - "][VarSub test_count][LIT_CHARS " "][VarSub 1]]} ) (Com {[LIT_CHARS shift]} ) (Pipeline (Com {[LIT_CHARS echo]} {[DQ [VarSub @]]} ) (Com {[LIT_CHARS sed]} {[LIT_CHARS -e]} {[SQ ]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub immediate]]} {[LIT_DBRACKET_LIKE "="]} {[DQ ]} ) (List (= scope= flags=0 words=[] bindings=[('GIT_EXIT_OK', {[LIT_CHARS t]})]) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (FunctionDef test_known_broken_ok_ [] (List (= scope= flags=0 words=[] bindings=[('test_fixed', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_fixed]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS say_color]} {[DQ ]} {[DQ [LIT_CHARS "ok "][VarSub test_count][LIT_CHARS " - "][VarSub @][LIT_CHARS " # TODO known breakage"]]} ) ) ) (FunctionDef test_known_broken_failure_ [] (List (= scope= flags=0 words=[] bindings=[('test_broken', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_broken]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (Com {[LIT_CHARS say_color]} {[LIT_CHARS skip]} {[DQ [LIT_CHARS "not ok "][VarSub test_count][LIT_CHARS " - "][VarSub @][LIT_CHARS " # TODO known breakage"]]} ) ) ) (FunctionDef test_debug [] (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub debug]]} {[LIT_DBRACKET_LIKE "="]} {[DQ ]} ) (Com {[LIT_CHARS eval]} {[DQ [VarSub 1]]} ) ) ) (FunctionDef test_eval_ [] (Com {[LIT_CHARS eval]} {[DQ [VarSub *]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} 0), (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) ) (FunctionDef test_run_ [] (List (= scope= flags=0 words=[] bindings=[('test_cleanup', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('expecting_failure', {[VarSub 2]})]) (Com {[LIT_CHARS test_eval_]} {[DQ [VarSub 1]]} ) (= scope= flags=0 words=[] bindings=[('eval_ret', {[VarSub ?]})]) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub immediate]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[VarSub eval_ret]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub expecting_failure]]} ) ) ) (Com {[LIT_CHARS test_eval_]} {[DQ [VarSub test_cleanup]]} ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub verbose]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS t]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub HARNESS_ACTIVE]]} ) ) (Com {[LIT_CHARS echo]} {[DQ ]} ) ) (Com {[LIT_CHARS return]} {[DQ [VarSub eval_ret]]} ) ) ) (FunctionDef test_skip [] (List (= scope= flags=0 words=[] bindings=[('test_count', {[ArithSub {A2 AS_OP_PLUS {A Atom NODE_ARITH_WORD {[VarSub test_count]}} {A Atom NODE_ARITH_WORD {[AS_NUM_LITERAL 1]}}}]})]) (= scope= flags=0 words=[] bindings=[('to_skip', {[SQ ]})]) (For skp [{[VarSub GIT_SKIP_TESTS]}]) (Case to_match={[VarSub this_test] [LIT_CHARS .] [VarSub test_count]}, pat_word_list=[[{[VarSub skp]}]] (List (= scope= flags=0 words=[] bindings=[('to_skip', {[LIT_CHARS t]})]) (Com {[LIT_CHARS break]} ) ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub to_skip]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub test_prereq]]} ) (Pipeline! (Com {[LIT_CHARS test_have_prereq]} {[DQ [VarSub test_prereq]]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('to_skip', {[LIT_CHARS t]})]) ) (Case to_match={[DQ [VarSub to_skip]]}, pat_word_list=[[{[LIT_CHARS t]}], [{[LIT_OTHER "*"]}]] (List (= scope= flags=0 words=[] bindings=[('of_prereq', {[SQ ]})]) (If (Com {[LIT_CHARS test]} {[DQ [VarSub missing_prereq]]} {[LIT_NEQUAL "!="]} {[DQ [VarSub test_prereq]]} ) (= scope= flags=0 words=[] bindings=[('of_prereq', {[DQ [LIT_CHARS " of "][VarSub test_prereq]]})]) ) (Com {[LIT_CHARS say_color]} {[LIT_CHARS skip]} {[DQ [LIT_CHARS "skipping test: "][VarSub @]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (Com {[LIT_CHARS say_color]} {[LIT_CHARS skip]} {[DQ [LIT_CHARS "ok "][VarSub test_count][LIT_CHARS " # skip "][VarSub 1][LIT_CHARS " (missing "][VarSub missing_prereq][VarSub of_prereq][LIT_CHARS ")"]]} ) (Com {[LIT_OTHER ":"]} {[LIT_CHARS true]} ) ) (Com {[LIT_CHARS false]} ) ) ) ) (FunctionDef test_at_end_hook_ [] (Com {[LIT_OTHER ":"]} ) ) (FunctionDef test_done [] (List (= scope= flags=0 words=[] bindings=[('GIT_EXIT_OK', {[LIT_CHARS t]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub HARNESS_ACTIVE]]} ) (List (= scope= flags=0 words=[] bindings=[('test_results_dir', {[DQ [VarSub TEST_OUTPUT_DIRECTORY][LIT_CHARS /test-results]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub test_results_dir]]} ) (= scope= flags=0 words=[] bindings=[('test_results_path', {[DQ [VarSub test_results_dir][LIT_CHARS /][VarSub 0 transform_ops=[VS_UNARY_PERCENT {[LIT_CHARS .sh]}]][LIT_CHARS -][VarSub $][LIT_CHARS .counts]]})]) (Com {[LIT_CHARS cat]} < (FilenameRedirectNode filename={[DQ [VarSub test_results_path]]} >"> 1), (HereDocRedirectNode here_end='EOF' do_expansion=True body_word={[DQ [LIT_CHARS "total "][VarSub test_count][LIT_CHARS "\n"][LIT_CHARS "success "][VarSub test_success][LIT_CHARS "\n"][LIT_CHARS "fixed "][VarSub test_fixed][LIT_CHARS "\n"][LIT_CHARS "broken "][VarSub test_broken][LIT_CHARS "\n"][LIT_CHARS "failed "][VarSub test_failure][LIT_CHARS "\n"][LIT_CHARS "\n"]]} 0), > ) ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub test_fixed]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS say_color]} {[LIT_CHARS pass]} {[DQ [LIT_CHARS "# fixed "][VarSub test_fixed][LIT_CHARS " known breakage(s)"]]} ) ) (If (Com {[LIT_CHARS test]} {[DQ [VarSub test_broken]]} {[LIT_NEQUAL "!="]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS say_color]} {[LIT_CHARS error]} {[DQ [LIT_CHARS "# still have "][VarSub test_broken][LIT_CHARS " known breakage(s)"]]} ) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [LIT_CHARS "remaining "][ArithSub {A2 AS_OP_MINUS {A Atom NODE_ARITH_WORD {[VarSub test_count]}} {A Atom NODE_ARITH_WORD {[VarSub test_broken]}}}][LIT_CHARS " test(s)"]]})]) ) (ElseTrue) (= scope= flags=0 words=[] bindings=[('msg', {[DQ [VarSub test_count][LIT_CHARS " test(s)"]]})]) ) (Case to_match={[DQ [VarSub test_failure]]}, pat_word_list=[[{[LIT_CHARS 0]}], [{[LIT_OTHER "*"]}]] (List (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub skip_all]]} ) (Com {[LIT_CHARS test]} {[VarSub test_count]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "Can't use skip_all after running some tests"]]} ) ) (AndOr OP_OR_IF (Com {[LIT_DBRACKET_LIKE "["]} {[LIT_CHARS -z]} {[DQ [VarSub skip_all]]} {[LIT_DBRACKET_LIKE "]"]} ) (= scope= flags=0 words=[] bindings=[('skip_all', {[DQ [LIT_CHARS " # SKIP "][VarSub skip_all]]})]) ) (If (Com {[LIT_CHARS test]} {[VarSub test_external_has_tap]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} ) (List (If (Com {[LIT_CHARS test]} {[VarSub test_count]} {[LIT_CHARS -gt]} {[LIT_CHARS 0]} ) (Com {[LIT_CHARS say_color]} {[LIT_CHARS pass]} {[DQ [LIT_CHARS "# passed all "][VarSub msg]]} ) ) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS 1..][VarSub test_count][VarSub skip_all]]} ) ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub remove_trash]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [ComSub (Com {[LIT_CHARS dirname]} {[DQ [VarSub remove_trash]]})]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -rf]} {[DQ [ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub remove_trash]]})]]} ) ) ) (Com {[LIT_CHARS test_at_end_hook_]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 0]} ) ) (List (If (Com {[LIT_CHARS test]} {[VarSub test_external_has_tap]} {[LIT_CHARS -eq]} {[LIT_CHARS 0]} ) (List (Com {[LIT_CHARS say_color]} {[LIT_CHARS error]} {[DQ [LIT_CHARS "# failed "][VarSub test_failure][LIT_CHARS " among "][VarSub msg]]} ) (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS 1..][VarSub test_count]]} ) ) ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub valgrind]]} ) (List (FunctionDef make_symlink [] (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -h]} {[DQ [VarSub 2]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [VarSub 1]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [ComSub (Com {[LIT_CHARS readlink]} {[DQ [VarSub 2]]})]]} ) (If (Com {[LIT_CHARS mkdir]} {[DQ [VarSub 2]] [LIT_CHARS .lock]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub 2]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS ln]} {[LIT_CHARS -s]} {[DQ [VarSub 1]]} {[DQ [VarSub 2]]} ) (Com {[LIT_CHARS rm]} {[LIT_CHARS -r]} {[DQ [VarSub 2]] [LIT_CHARS .lock]} ) ) ) (ElseTrue) (While (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub 2]] [LIT_CHARS .lock]} ) (List (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "Waiting for lock on "][VarSub 2][LIT_CHARS .]]} ) (Com {[LIT_CHARS sleep]} {[LIT_CHARS 1]} ) ) ) ) ) ) ) (FunctionDef make_valgrind_symlink [] (List (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub 1]]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS "#!"]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub 1]]} 0)]{[LIT_CHARS head]} {[LIT_CHARS -c]} {[LIT_CHARS 2]})]]} ) (Com {[LIT_CHARS return]} ) ) ) (= scope= flags=0 words=[] bindings=[('base', {[ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 1]]})]})]) (= scope= flags=0 words=[] bindings=[('symlink_target', {[VarSub GIT_BUILD_DIR] [LIT_CHARS /] [VarSub base]})]) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub symlink_target]]} ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -d]} {[DQ [VarSub symlink_target]]} ) (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS "#!"]]} {[LIT_NEQUAL "!="]} {[DQ [ComSub (Com redirects=[(FilenameRedirectNode filename={[DQ [VarSub symlink_target]]} 0)]{[LIT_CHARS head]} {[LIT_CHARS -c]} {[LIT_CHARS 2]})]]} ) ) ) (= scope= flags=0 words=[] bindings=[('symlink_target', {[LIT_CHARS ../valgrind.sh]})]) ) (Case to_match={[DQ [VarSub base]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS .sh]}, {[LIT_OTHER "*"] [LIT_CHARS .perl]}]] (= scope= flags=0 words=[] bindings=[('symlink_target', {[LIT_CHARS ../unprocessed-script]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS make_symlink]} {[DQ [VarSub symlink_target]]} {[DQ [VarSub GIT_VALGRIND][LIT_CHARS /bin/][VarSub base]]} ) (Com {[LIT_CHARS exit]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('GIT_VALGRIND', {[VarSub TEST_DIRECTORY] [LIT_CHARS /valgrind]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub GIT_VALGRIND]] [LIT_CHARS /bin]} ) (For file [{[VarSub GIT_BUILD_DIR] [LIT_CHARS /git] [LIT_OTHER "*"]}, {[VarSub GIT_BUILD_DIR] [LIT_CHARS /test-] [LIT_OTHER "*"]}]) (Com {[LIT_CHARS make_valgrind_symlink]} {[VarSub file]} ) ) (Com {[LIT_CHARS make_symlink]} {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /mergetools]} {[DQ [VarSub GIT_VALGRIND][LIT_CHARS /bin/mergetools]]} ) (= scope= flags=0 words=[] bindings=[('OLDIFS', {[VarSub IFS]})]) (= scope= flags=0 words=[] bindings=[('IFS', {[LIT_OTHER ":"]})]) (For path [{[VarSub PATH]}]) (Pipeline (Com {[LIT_CHARS ls]} {[DQ [VarSub path]] [LIT_CHARS /git-] [LIT_OTHER "*"]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (While (Com {[LIT_CHARS read]} {[LIT_CHARS file]} ) (Com {[LIT_CHARS make_valgrind_symlink]} {[DQ [VarSub file]]} ) ) ) ) (= scope= flags=0 words=[] bindings=[('IFS', {[VarSub OLDIFS]})]) (= scope= flags=0 words=[] bindings=[('PATH', {[VarSub GIT_VALGRIND] [LIT_CHARS /bin] [LIT_OTHER ":"] [VarSub PATH]})]) (= scope= flags=0 words=[] bindings=[('GIT_EXEC_PATH', {[VarSub GIT_VALGRIND] [LIT_CHARS /bin]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_VALGRIND]}] bindings=[]) ) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_TEST_INSTALLED]]} ) (List (AndOr OP_OR_IF (= scope= flags=0 words=[] bindings=[('GIT_EXEC_PATH', {[ComSub (Com {[VarSub GIT_TEST_INSTALLED] [LIT_CHARS /git]} {[LIT_CHARS --exec-path]})]})]) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "Cannot run git from "][VarSub GIT_TEST_INSTALLED][LIT_CHARS .]]} ) ) (= scope= flags=0 words=[] bindings=[('PATH', {[VarSub GIT_TEST_INSTALLED] [LIT_OTHER ":"] [VarSub GIT_BUILD_DIR] [LIT_OTHER ":"] [VarSub PATH]})]) (= scope= flags=0 words=[] bindings=[('GIT_EXEC_PATH', {[VarSub GIT_TEST_EXEC_PATH test_op=VS_TEST_COLON_HYPHEN {[VarSub GIT_EXEC_PATH]}]})]) ) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('git_bin_dir', {[DQ [VarSub GIT_BUILD_DIR][LIT_CHARS /bin-wrappers]]})]) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub git_bin_dir][LIT_CHARS /git]]} ) ) (List (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub with_dashes]]} ) (Com {[LIT_CHARS say]} {[DQ [VarSub git_bin_dir][LIT_CHARS "/git is not executable; using GIT_EXEC_PATH"]]} ) ) (= scope= flags=0 words=[] bindings=[('with_dashes', {[LIT_CHARS t]})]) ) ) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [VarSub git_bin_dir][LIT_CHARS ":"][VarSub PATH]]})]) (= scope= flags=0 words=[] bindings=[('GIT_EXEC_PATH', {[VarSub GIT_BUILD_DIR]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub with_dashes]]} ) (= scope= flags=0 words=[] bindings=[('PATH', {[DQ [VarSub GIT_BUILD_DIR][LIT_CHARS ":"][VarSub PATH]]})]) ) ) ) (= scope= flags=0 words=[] bindings=[('GIT_TEMPLATE_DIR', {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /templates/blt]})]) (Com {[LIT_CHARS unset]} {[LIT_CHARS GIT_CONFIG]} ) (= scope= flags=0 words=[] bindings=[('GIT_CONFIG_NOSYSTEM', {[LIT_CHARS 1]})]) (= scope= flags=0 words=[] bindings=[('GIT_ATTR_NOSYSTEM', {[LIT_CHARS 1]})]) (= scope= flags=1 words=[{[LIT_CHARS PATH]}, {[LIT_CHARS GIT_EXEC_PATH]}, {[LIT_CHARS GIT_TEMPLATE_DIR]}, {[LIT_CHARS GIT_CONFIG_NOSYSTEM]}, {[LIT_CHARS GIT_ATTR_NOSYSTEM]}] bindings=[]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_TEST_CMP]]} ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GIT_TEST_CMP_USE_COPIED_CONTEXT]]} ) (= scope= flags=0 words=[] bindings=[('GIT_TEST_CMP', {[DQ [VarSub DIFF][LIT_CHARS " -c"]]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('GIT_TEST_CMP', {[DQ [VarSub DIFF][LIT_CHARS " -u"]]})]) ) ) (= scope= flags=0 words=[] bindings=[('GITPERLLIB', {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /perl/blib/lib] [LIT_OTHER ":"] [DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /perl/blib/arch/auto/Git]})]) (= scope= flags=1 words=[{[LIT_CHARS GITPERLLIB]}] bindings=[]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /templates/blt]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "You haven't built things yet, have you?"]]} ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_TEST_INSTALLED]]} ) (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub NO_PYTHON]]} ) ) (List (= scope= flags=0 words=[] bindings=[('GITPYTHONLIB', {[DQ [VarSub GIT_BUILD_DIR][LIT_CHARS /git_remote_helpers/build/lib]]})]) (= scope= flags=1 words=[{[LIT_CHARS GITPYTHONLIB]}] bindings=[]) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -d]} {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /git_remote_helpers/build]} ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "You haven't built git_remote_helpers yet, have you?"]]} ) ) ) ) (If (Pipeline! (Com {[LIT_CHARS test]} {[LIT_CHARS -x]} {[DQ [VarSub GIT_BUILD_DIR]] [LIT_CHARS /test-chmtime]} ) ) (List (Com {[LIT_CHARS echo]} {[SQ ]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[SQ ]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('test', {[DQ [LIT_CHARS "trash directory."][ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]} {[LIT_CHARS .sh]})]]})]) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub root]]} ) (= scope= flags=0 words=[] bindings=[('test', {[DQ [VarSub root][LIT_CHARS /][VarSub test]]})]) ) (Case to_match={[DQ [VarSub test]]}, pat_word_list=[[{[LIT_CHARS /] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (= scope= flags=0 words=[] bindings=[('TRASH_DIRECTORY', {[DQ [VarSub test]]})]) (= scope= flags=0 words=[] bindings=[('TRASH_DIRECTORY', {[DQ [VarSub TEST_OUTPUT_DIRECTORY][LIT_CHARS /][VarSub test]]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_OTHER "!"]} {[LIT_CHARS -z]} {[DQ [VarSub debug]]} ) (= scope= flags=0 words=[] bindings=[('remove_trash', {[VarSub TRASH_DIRECTORY]})]) ) (AndOr OP_OR_IF (Com {[LIT_CHARS rm]} {[LIT_CHARS -fr]} {[DQ [VarSub test]]} ) (List (= scope= flags=0 words=[] bindings=[('GIT_EXIT_OK', {[LIT_CHARS t]})]) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "FATAL: Cannot prepare test area"]]} < (DescriptorRedirectNode target={[LIT_CHARS 5]} &"> 1), > ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) ) (= scope= flags=0 words=[] bindings=[('HOME', {[DQ [VarSub TRASH_DIRECTORY]]})]) (= scope= flags=1 words=[{[LIT_CHARS HOME]}] bindings=[]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub TEST_NO_CREATE_REPO]]} ) (Com {[LIT_CHARS test_create_repo]} {[DQ [VarSub test]]} ) (ElseTrue) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub test]]} ) ) (AndOr OP_OR_IF (Com {[LIT_CHARS cd]} {[LIT_CHARS -P]} {[DQ [VarSub test]]} ) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]} ) ) (= scope= flags=0 words=[] bindings=[('this_test', {[VarSub 0 transform_ops=[VS_UNARY_DPOUND {[LIT_CHARS "*"] [LIT_SLASH /]}]]})]) (= scope= flags=0 words=[] bindings=[('this_test', {[VarSub this_test transform_ops=[VS_UNARY_DPERCENT {[LIT_CHARS "-*"]}]]})]) (For skp [{[VarSub GIT_SKIP_TESTS]}]) (Case to_match={[DQ [VarSub this_test]]}, pat_word_list=[[{[VarSub skp]}]] (List (Com {[LIT_CHARS say_color]} {[LIT_CHARS skip]} {[DQ [LIT_CHARS "skipping test "][VarSub this_test][LIT_CHARS " altogether"]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (= scope= flags=0 words=[] bindings=[('skip_all', {[DQ [LIT_CHARS "skip all tests in "][VarSub this_test]]})]) (Com {[LIT_CHARS test_done]} ) ) ) ) (FunctionDef yes [] (List (If (Com {[LIT_CHARS test]} {[VarSub #]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 0]} ) (= scope= flags=0 words=[] bindings=[('y', {[LIT_CHARS y]})]) (ElseTrue) (= scope= flags=0 words=[] bindings=[('y', {[DQ [VarSub *]]})]) ) (While (Com {[LIT_CHARS echo]} {[DQ [VarSub y]]} ) (Com {[LIT_OTHER ":"]} ) ) ) ) (Case to_match={[ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]})]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS MINGW] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"] [LIT_CHARS CYGWIN] [LIT_OTHER "*"]}], [{[LIT_OTHER "*"]}]] (List (FunctionDef sort [] (Com {[LIT_CHARS /usr/bin/sort]} {[DQ [VarSub @]]} ) ) (FunctionDef find [] (Com {[LIT_CHARS /usr/bin/find]} {[DQ [VarSub @]]} ) ) (FunctionDef sum [] (Com {[LIT_CHARS md5sum]} {[DQ [VarSub @]]} ) ) (FunctionDef pwd [] (Com {[LIT_CHARS builtin]} {[LIT_CHARS pwd]} {[LIT_CHARS -W]} ) ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS MINGW]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS SED_STRIPS_CR]} ) ) (List (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS POSIXPERM]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS EXECKEEPSPID]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS NOT_MINGW]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS SED_STRIPS_CR]} ) ) (List (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS POSIXPERM]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS BSLASHPSPEC]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS EXECKEEPSPID]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS NOT_MINGW]} ) ) ) (AndOr OP_AND_IF (Subshell (AndOr OP_AND_IF (= scope= flags=0 words=[] bindings=[('COLUMNS', {[LIT_CHARS 1]})]) (Com {[LIT_CHARS test]} {[VarSub COLUMNS]} {[LIT_DBRACKET_LIKE "="]} {[LIT_CHARS 1]} ) ) ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS COLUMNS_CAN_BE_1]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub NO_PERL]]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS PERL]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub NO_PYTHON]]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS PYTHON]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub USE_LIBPCRE]]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS LIBPCRE]} ) ) (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub NO_GETTEXT]]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS GETTEXT]} ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GETTEXT_POISON]]} ) (List (= scope= flags=0 words=[] bindings=[('GIT_GETTEXT_POISON', {[LIT_CHARS YesPlease]})]) (= scope= flags=1 words=[{[LIT_CHARS GIT_GETTEXT_POISON]}] bindings=[]) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS GETTEXT_POISON]} ) ) (ElseTrue) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS C_LOCALE_OUTPUT]} ) ) (FunctionDef test_i18ncmp [] (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GETTEXT_POISON]]} ) (Com {[LIT_CHARS test_cmp]} {[DQ [VarSub @]]} ) ) ) (FunctionDef test_i18ngrep [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub GETTEXT_POISON]]} ) (Com {[LIT_OTHER ":"]} ) (Com {[LIT_CHARS test]} {[DQ [LIT_CHARS "x!"]]} {[LIT_DBRACKET_LIKE "="]} {[DQ [LIT_CHARS x][VarSub 1]]} ) (List (Com {[LIT_CHARS shift]} ) (Pipeline! (Com {[LIT_CHARS grep]} {[DQ [VarSub @]]} ) ) ) (ElseTrue) (Com {[LIT_CHARS grep]} {[DQ [VarSub @]]} ) ) ) (Com {[LIT_CHARS test_lazy_prereq]} {[LIT_CHARS SYMLINKS]} {[SQ ]} ) (Com {[LIT_CHARS test_lazy_prereq]} {[LIT_CHARS CASE_INSENSITIVE_FS]} {[SQ CamelCase &&\n"> camelcase &&\n"> ]} ) (Com {[LIT_CHARS test_lazy_prereq]} {[LIT_CHARS UTF8_NFD_TO_NFC]} {[SQ \"$auml\" &&\n"> ]} ) (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -w]} {[LIT_CHARS /]} ) (Com {[LIT_CHARS test_set_prereq]} {[LIT_CHARS SANITY]} ) ) )