(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_OTHER "="]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS exit]}) ) ) (= scope= flags=0 words=[] bindings=[('TEST_DIRECTORY', {[ComSub (Com {[LIT_CHARS pwd]})] [LIT_CHARS /..]})]) (= scope= flags=0 words=[] bindings=[('TEST_OUTPUT_DIRECTORY', {[ComSub (Com {[LIT_CHARS pwd]})]})]) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_TEST_INSTALLED]]}) (= scope= flags=0 words=[] bindings=[('perf_results_prefix', {[SQ ]})]) (ElseTrue) (List (= scope= flags=0 words=[] bindings=[('perf_results_prefix', {[ComSub (Pipeline (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [VarSub GIT_TEST_INSTALLED transform_ops=[VS_UNARY_PERCENT {[LIT_SLASH /] [LIT_CHARS bin-wrappers]}]]]}) (Com {[LIT_CHARS tr]} {[LIT_CHARS -c]} {[DQ [LIT_CHARS "[a-zA-Z0-9]"]]} {[DQ [LIT_CHARS "[_*]"]]}) )] [DQ [LIT_CHARS .]]})]) (= scope= flags=0 words=[] bindings=[('GIT_TEST_INSTALLED', {[ComSub (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub GIT_TEST_INSTALLED]]}) (Com {[LIT_CHARS pwd]}) )]})]) ) ) (= scope= flags=0 words=[] bindings=[('TEST_NO_CREATE_REPO', {[LIT_CHARS t]})]) (= scope= flags=0 words=[] bindings=[('TEST_NO_MALLOC_CHECK', {[LIT_CHARS t]})]) (Com {[LIT_CHARS .]} {[LIT_CHARS ../test-lib.sh]}) (= scope= flags=1 words=[{[LIT_CHARS TEST_DIRECTORY]}, {[LIT_CHARS TRASH_DIRECTORY]}, {[LIT_CHARS GIT_BUILD_DIR]}, {[LIT_CHARS GIT_TEST_CMP]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('MODERN_GIT', {[VarSub GIT_BUILD_DIR] [LIT_CHARS /bin-wrappers/git]})]) (= scope= flags=1 words=[{[LIT_CHARS MODERN_GIT]}] bindings=[]) (= scope= flags=0 words=[] bindings=[('perf_results_dir', {[VarSub TEST_OUTPUT_DIRECTORY] [LIT_CHARS /test-results]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub perf_results_dir]]}) (Com {[LIT_CHARS rm]} {[LIT_CHARS -f]} {[DQ [VarSub perf_results_dir]] [LIT_CHARS /] [ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]} {[LIT_CHARS .sh]})] [LIT_CHARS .subtests]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_PERF_REPEAT_COUNT]]}) (= scope= flags=0 words=[] bindings=[('GIT_PERF_REPEAT_COUNT', {[LIT_CHARS 3]})]) ) (FunctionDef die_if_build_dir_not_repo [] (If (Pipeline! (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub TEST_DIRECTORY][LIT_CHARS /..]]}) (Com {[LIT_CHARS git]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --build-dir]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 1), (DescriptorRedirectNode target={[LIT_CHARS 1]} &"> 2), > ) ) ) ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "No "][VarSub 1][LIT_CHARS " defined, and your build directory is not a repo"]]}) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_PERF_REPO]]}) (List (Com {[LIT_CHARS die_if_build_dir_not_repo]} {[SQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_PERF_REPO', {[VarSub TEST_DIRECTORY] [LIT_CHARS /..]})]) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_PERF_LARGE_REPO]]}) (List (Com {[LIT_CHARS die_if_build_dir_not_repo]} {[SQ ]}) (= scope= flags=0 words=[] bindings=[('GIT_PERF_LARGE_REPO', {[VarSub TEST_DIRECTORY] [LIT_CHARS /..]})]) ) ) (FunctionDef test_perf_create_repo_from [] (List (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 parameters to test-create-repo"]]}) ) (= scope= flags=0 words=[] bindings=[('repo', {[DQ [VarSub 1]]})]) (= scope= flags=0 words=[] bindings=[('source', {[DQ [VarSub 2]]})]) (= scope= flags=0 words=[] bindings=[('source_git', {[DQ [ComSub (Com {[LIT_CHARS git]} {[LIT_CHARS -C]} {[DQ [VarSub source]]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-dir]})]]})]) (= scope= flags=0 words=[] bindings=[('objects_dir', {[DQ [ComSub (Com {[DQ [VarSub MODERN_GIT]]} {[LIT_CHARS -C]} {[DQ [VarSub source]]} {[LIT_CHARS rev-parse]} {[LIT_CHARS --git-path]} {[LIT_CHARS objects]})]]})]) (Com {[LIT_CHARS mkdir]} {[LIT_CHARS -p]} {[DQ [VarSub repo][LIT_CHARS /.git]]}) (AndOr OP_AND_IF (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub source]]}) (AndOr OP_AND_IF (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS -Rl]} {[DQ [VarSub objects_dir]]} {[DQ [VarSub repo][LIT_CHARS /.git/]]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[DQ [VarSub objects_dir]]} {[DQ [VarSub repo][LIT_CHARS /.git/]]}) ) (For stuff [{[DQ [VarSub source_git]] [LIT_CHARS /] [LIT_OTHER "*"]}]) (Case to_match={[DQ [VarSub stuff]]}, pat_word_list=[[{[LIT_OTHER "*"] [LIT_CHARS /objects]}, {[LIT_OTHER "*"] [LIT_CHARS /hooks]}, {[LIT_OTHER "*"] [LIT_CHARS /config]}, {[LIT_OTHER "*"] [LIT_CHARS /commondir]}], [{[LIT_OTHER "*"]}]] (ElseTrue) (AndOr OP_OR_IF (Com {[LIT_CHARS cp]} {[LIT_CHARS -R]} {[DQ [VarSub stuff]]} {[DQ [VarSub repo][LIT_CHARS /.git/]]}) (Com {[LIT_CHARS exit]} {[LIT_CHARS 1]}) ) ) ) ) ) ) (AndOr OP_OR_IF (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub repo]]}) (AndOr OP_AND_IF (Com {[LIT_CHARS git]} {[LIT_CHARS init]} {[LIT_CHARS -q]}) (AndOr OP_AND_IF (AndOr OP_OR_IF (Com {[LIT_CHARS test_have_prereq]} {[LIT_CHARS SYMLINKS]}) (Com {[LIT_CHARS git]} {[LIT_CHARS config]} {[LIT_CHARS core.symlinks]} {[LIT_CHARS false]}) ) (Com {[LIT_CHARS mv]} {[LIT_CHARS .git/hooks]} {[LIT_CHARS .git/hooks-disabled]} < (FilenameRedirectNode filename={[LIT_CHARS /dev/null]} "> 2), > ) ) ) ) ) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "failed to copy repository '"][VarSub source][LIT_CHARS "' to '"][VarSub repo][LIT_CHARS "'"]]}) ) ) ) ) (FunctionDef test_perf_default_repo [] (Com {[LIT_CHARS test_perf_create_repo_from]} {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[VarSub TRASH_DIRECTORY]}]]} {[DQ [VarSub GIT_PERF_REPO]]}) ) (FunctionDef test_perf_large_repo [] (List (If (Com {[LIT_CHARS test]} {[DQ [VarSub GIT_PERF_LARGE_REPO]]} {[LIT_OTHER "="]} {[DQ [VarSub GIT_BUILD_DIR]]}) (List (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warning: "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS "GIT_PERF_LARGE_REPO is "][\ LIT_ESCAPED_CHAR "\\$"][LIT_CHARS GIT_BUILD_DIR.]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warning: This will work, but may not be a sufficiently large repo"]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "warning: for representative measurements."]]} < (DescriptorRedirectNode target={[LIT_CHARS 2]} &"> 1), > ) ) ) (Com {[LIT_CHARS test_perf_create_repo_from]} {[DQ [VarSub 1 test_op=VS_TEST_COLON_HYPHEN {[VarSub TRASH_DIRECTORY]}]]} {[DQ [VarSub GIT_PERF_LARGE_REPO]]}) ) ) (FunctionDef test_checkout_worktree [] (AndOr OP_OR_IF (Com {[LIT_CHARS git]} {[LIT_CHARS checkout-index]} {[LIT_CHARS -u]} {[LIT_CHARS -a]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "git checkout-index failed"]]}) ) ) (= scope= flags=0 words=[] bindings=[('immediate', {[LIT_CHARS t]})]) (Case to_match={[DQ [ComSub (Com {[LIT_CHARS uname]} {[LIT_CHARS -s]})]]}, pat_word_list=[[{[LIT_CHARS Darwin]}]] (= scope= flags=0 words=[] bindings=[('GTIME', {[DQ [VarSub GTIME test_op=VS_TEST_COLON_HYPHEN {[LIT_CHARS gtime]}]]})]) ) (= scope= flags=0 words=[] bindings=[('GTIME', {[DQ [VarSub GTIME test_op=VS_TEST_COLON_HYPHEN {[LIT_SLASH /] [LIT_CHARS usr] [LIT_SLASH /] [LIT_CHARS bin] [LIT_SLASH /] [LIT_CHARS time]}]]})]) (FunctionDef test_run_perf_ [] (List (= scope= flags=0 words=[] bindings=[('test_cleanup', {[LIT_OTHER ":"]})]) (= scope= flags=0 words=[] bindings=[('test_export_', {[DQ [LIT_CHARS test_cleanup]]})]) (= scope= flags=1 words=[{[LIT_CHARS test_cleanup]}, {[LIT_CHARS test_export_]}] bindings=[]) (Com {[DQ [VarSub GTIME]]} {[LIT_CHARS -f]} {[DQ [LIT_CHARS "%E %U %S"]]} {[LIT_CHARS -o]} {[LIT_CHARS test_time.] [VarSub i]} {[DQ [VarSub SHELL]]} {[LIT_CHARS -c]} {[SQ ] [DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /test-lib-functions.sh] [SQ ] [DQ [VarSub 1]] [SQ ] [DQ [LIT_CHARS "/'/'"][\ LIT_ESCAPED_CHAR "\\\\"][\ LIT_ESCAPED_CHAR "\\\\"][LIT_CHARS "''/g"]] [SQ ] [DQ [LIT_CHARS "'&'"]] [SQ test_vars\n"> ]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), (DescriptorRedirectNode target={[LIT_CHARS 4]} &"> 2), > ) (= scope= flags=0 words=[] bindings=[('eval_ret', {[VarSub ?]})]) (If (AndOr OP_OR_IF (Com {[LIT_CHARS test]} {[VarSub eval_ret]} {[LIT_OTHER "="]} {[LIT_CHARS 0]}) (Com {[LIT_CHARS test]} {[LIT_CHARS -n]} {[DQ [VarSub expecting_failure]]}) ) (List (Com {[LIT_CHARS test_eval_]} {[DQ [VarSub test_cleanup]]}) (AndOr OP_OR_IF (Com {[LIT_CHARS .]} {[LIT_CHARS ./test_vars]}) (Com {[LIT_CHARS error]} {[DQ [LIT_CHARS "failed to load updated environment"]]}) ) ) ) (If (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[DQ [VarSub verbose]]} {[LIT_OTHER "="]} {[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_perf [] (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"]]}) ) (= scope= flags=1 words=[{[LIT_CHARS test_prereq]}] bindings=[]) (If (Pipeline! (Com {[LIT_CHARS test_skip]} {[DQ [VarSub @]]}) ) (List (= scope= flags=0 words=[] bindings=[('base', {[ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]} {[LIT_CHARS .sh]})]})]) (Com {[LIT_CHARS echo]} {[DQ [VarSub test_count]]} < (FilenameRedirectNode filename={[DQ [VarSub perf_results_dir]] [LIT_CHARS /] [VarSub base] [LIT_CHARS .subtests]} >"> 1), > ) (Com {[LIT_CHARS echo]} {[DQ [VarSub 1]]} < (FilenameRedirectNode filename={[DQ [VarSub perf_results_dir]] [LIT_CHARS /] [VarSub base] [LIT_CHARS .] [VarSub test_count] [LIT_CHARS .descr]} "> 1), > ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub verbose]]}) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS "%s"]]} {[DQ [LIT_CHARS "perf "][VarSub test_count][LIT_CHARS " - "][VarSub 1][LIT_CHARS ":"]]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "perf "][VarSub test_count][LIT_CHARS " - "][VarSub 1][LIT_CHARS ":"]]}) ) (For i [{[ComSub (Com {[LIT_CHARS test_seq]} {[LIT_CHARS 1]} {[VarSub GIT_PERF_REPEAT_COUNT]})]}]) (List (Com {[LIT_CHARS say]} {[DQ [LIT_CHARS "running: "][VarSub 2]]} < (DescriptorRedirectNode target={[LIT_CHARS 3]} &"> 1), > ) (If (Com {[LIT_CHARS test_run_perf_]} {[DQ [VarSub 2]]}) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub verbose]]}) (Com {[LIT_CHARS printf]} {[DQ [LIT_CHARS " %s"]]} {[DQ [VarSub i]]}) (ElseTrue) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS "* timing run "][VarSub i][LIT_CHARS /][VarSub GIT_PERF_REPEAT_COUNT][LIT_CHARS ":"]]}) ) (ElseTrue) (List (AndOr OP_AND_IF (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub verbose]]}) (Com {[LIT_CHARS echo]}) ) (Com {[LIT_CHARS test_failure_]} {[DQ [VarSub @]]}) (Com {[LIT_CHARS break]}) ) ) ) ) (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub verbose]]}) (Com {[LIT_CHARS echo]} {[DQ [LIT_CHARS " ok"]]}) (ElseTrue) (Com {[LIT_CHARS test_ok_]} {[DQ [VarSub 1]]}) ) (= scope= flags=0 words=[] bindings=[('base', {[DQ [VarSub perf_results_dir]] [LIT_CHARS /] [DQ [VarSub perf_results_prefix][ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]} {[LIT_CHARS .sh]})]] [LIT_CHARS .] [DQ [VarSub test_count]]})]) (Com {[DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /perf/min_time.perl]} {[LIT_CHARS test_time.] [LIT_OTHER "*"]} < (FilenameRedirectNode filename={[DQ [VarSub base]] [LIT_CHARS .times]} "> 1), > ) ) ) (Com {[LIT_CHARS test_finish_]}) ) ) (FunctionDef test_at_end_hook_ [] (If (Com {[LIT_CHARS test]} {[LIT_CHARS -z]} {[DQ [VarSub GIT_PERF_AGGREGATING_LATER]]}) (Subshell (AndOr OP_AND_IF (Com {[LIT_CHARS cd]} {[DQ [VarSub TEST_DIRECTORY]] [LIT_CHARS /perf]}) (Com {[LIT_CHARS ./aggregate.perl]} {[ComSub (Com {[LIT_CHARS basename]} {[DQ [VarSub 0]]})]}) ) ) ) ) (FunctionDef test_export [] (= scope= flags=1 words=[{[DQ [VarSub @]]}] bindings=[]) ) )