(CommandList children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$TEST_DIRECTORY'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEST_DIRECTORY spids:[80]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(pwd)})]) left_token: <Left_CommandSub '$('> spids: [81 83] ) } spids: [80] ) ] spids: [80] ) ] spids: [16777215 65] ) ] else_action: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEST_DIRECTORY spids:[96]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (AndOr ops: [Op_DAmp] children: [(C {(cd)} {(DQ ($ VSub_Name '$TEST_DIRECTORY'))}) (C {(pwd)})] ) ] ) left_token: <Left_CommandSub '$('> spids: [97 107] ) } spids: [96] ) ] spids: [96] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] spids: [85 115] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$TEST_OUTPUT_DIRECTORY'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TEST_OUTPUT_DIRECTORY spids:[138]) op: Equal rhs: {($ VSub_Name '$TEST_DIRECTORY')} spids: [138] ) ] spids: [138] ) ] spids: [16777215 127] ) ] spids: [16777215 141] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_BUILD_DIR spids:[143]) op: Equal rhs: {(DQ ($ VSub_Name '$TEST_DIRECTORY')) (/..)} spids: [143] ) ] spids: [143] ) (SimpleCommand words: [{(DQ ($ VSub_Name '$GIT_BUILD_DIR') (/git))}] redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_QMark '$?')} {(KW_Bang '!') (Lit_Other '=')} {(1)})] action: [ (SimpleCommand words: [{(echo)} {(SQ <'error: you do not seem to have built git yet.'>)}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 175] ) ] spids: [16777215 192] ) (C {(.)} {(DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/GIT-BUILD-OPTIONS)}) (C {(export)} {(PERL_PATH)} {(SHELL_PATH)}) (Case to_match: {(DQ ($ VSub_Name '$GIT_TEST_TEE_STARTED') (', ') ($ VSub_Star '$*') (' '))} arms: [ (case_arm pat_list: [{(KW_Done done) (Lit_Comma ',') (Lit_Other '*')}] spids: [226 229 236 16777215] ) (case_arm pat_list: [ {(Lit_Other '*') (SQ <' --tee '>) (Lit_Other '*')} {(Lit_Other '*') (SQ <' --va'>) (Lit_Other '*')} {(Lit_Other '*') (SQ <' --verbose-log '>) (Lit_Other '*')} ] action: [ (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$TEST_OUTPUT_DIRECTORY') (/test-results))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BASE spids:[268]) op: Equal rhs: { (DQ ($ VSub_Name '$TEST_OUTPUT_DIRECTORY') (/test-results/) (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Number '$0'))} {(.sh)})] ) left_token: <Left_CommandSub '$('> spids: [272 280] ) ) } spids: [268] ) ] spids: [268] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_TEE_OUTPUT_FILE spids:[293]) op: Equal rhs: {($ VSub_Name '$BASE') (.out)} spids: [293] ) ] spids: [293] ) (C {(export)} {(GIT_TEST_TEE_OUTPUT_FILE)}) (SimpleCommand redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$GIT_TEST_TEE_OUTPUT_FILE'))} ) ] ) (Pipeline children: [ (Subshell child: (CommandList children: [ (Sentence child: (SimpleCommand words: [ {(${ VSub_Name SHELL_PATH)} {(DQ ($ VSub_Number '$0'))} {(DQ ($ VSub_At '$@'))} ] redirects: [(Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] more_env: [ (env_pair name: GIT_TEST_TEE_STARTED val: {(KW_Done done)} spids: [320] ) ] ) terminator: <Op_Semi ';'> ) (SimpleCommand words: [{(echo)} {($ VSub_QMark '$?')}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$BASE') (.exit))} ) ] ) ] ) spids: [319 349] ) (C {(tee)} {(-a)} {(DQ ($ VSub_Name '$GIT_TEST_TEE_OUTPUT_FILE'))}) ] negated: F ) (C {(test)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(cat)} {(DQ ($ VSub_Name '$BASE') (.exit))})] ) left_token: <Left_CommandSub '$('> spids: [365 372] ) ) } {(Lit_Other '=')} {(0)} ) (ControlFlow token:<ControlFlow_Exit exit>) ] spids: [238 255 383 16777215] ) ] spids: [215 224 385] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LANG spids:[394]) op:Equal rhs:{(C)} spids:[394])] spids: [394] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LC_ALL spids:[397]) op:Equal rhs:{(C)} spids:[397])] spids: [397] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:PAGER spids:[400]) op:Equal rhs:{(cat)} spids:[400])] spids: [400] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TZ spids:[403]) op:Equal rhs:{(UTC)} spids:[403])] spids: [403] ) (C {(export)} {(LANG)} {(LC_ALL)} {(PAGER)} {(TZ)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EDITOR spids:[416]) op: Equal rhs: {(Lit_Other ':')} spids: [416] ) ] spids: [416] ) (C {(unset)} {(VISUAL)} {(EMAIL)} {(LANGUAGE)} {(COLUMNS)} { (CommandSubPart command_list: (CommandList children: [ (C {(DQ ($ VSub_Name '$PERL_PATH'))} {(-e)} { (SQ <'\n'> <'\tmy @env = keys %ENV;\n'> <'\tmy $ok = join("|", qw(\n'> <'\t\tTRACE\n'> <'\t\tDEBUG\n'> <'\t\tUSE_LOOKUP\n'> <'\t\tTEST\n'> <'\t\t.*_TEST\n'> <'\t\tPROVE\n'> <'\t\tVALGRIND\n'> <'\t\tUNZIP\n'> <'\t\tPERF_\n'> <'\t\tCURL_VERBOSE\n'> <'\t\tTRACE_CURL\n'> <'\t));\n'> <'\tmy @vars = grep(/^GIT_/ && !/^GIT_($ok)/o, @env);\n'> <'\tprint join("\\n", @vars);\n'> ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [441 467] ) } ) (C {(unset)} {(XDG_CONFIG_HOME)}) (C {(unset)} {(GITPERLLIB)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_AUTHOR_EMAIL spids:[477]) op: Equal rhs: {(author) (Lit_Other '@') (example.com)} spids: [477] ) ] spids: [477] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_AUTHOR_NAME spids:[482]) op: Equal rhs: {(SQ <'A U Thor'>)} spids: [482] ) ] spids: [482] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_COMMITTER_EMAIL spids:[487]) op: Equal rhs: {(committer) (Lit_Other '@') (example.com)} spids: [487] ) ] spids: [487] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_COMMITTER_NAME spids:[492]) op: Equal rhs: {(SQ <'C O Mitter'>)} spids: [492] ) ] spids: [492] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_MERGE_VERBOSITY spids:[497]) op: Equal rhs: {(5)} spids: [497] ) ] spids: [497] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_MERGE_AUTOEDIT spids:[500]) op: Equal rhs: {(no)} spids: [500] ) ] spids: [500] ) (C {(export)} {(GIT_MERGE_VERBOSITY)} {(GIT_MERGE_AUTOEDIT)}) (C {(export)} {(GIT_AUTHOR_EMAIL)} {(GIT_AUTHOR_NAME)}) (C {(export)} {(GIT_COMMITTER_EMAIL)} {(GIT_COMMITTER_NAME)}) (C {(export)} {(EDITOR)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TRACE_BARE spids:[529]) op: Equal rhs: {(1)} spids: [529] ) ] spids: [529] ) (C {(export)} {(GIT_TRACE_BARE)}) (If arms: [ (if_arm cond: [ (C {(test)} {(-n)} { (DQ (BracedVarSub token: <VSub_Name TEST_GIT_INDEX_VERSION> suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{(isset)}) spids: [544 548] ) ) } ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_INDEX_VERSION spids:[554]) op: Equal rhs: {(DQ ($ VSub_Name '$TEST_GIT_INDEX_VERSION'))} spids: [554] ) ] spids: [554] ) (C {(export)} {(GIT_INDEX_VERSION)}) ] spids: [16777215 551] ) ] spids: [16777215 564] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DPipe] children: [ (SimpleCommand words: [ {(expr)} {(DQ (' ') ($ VSub_Name '$GIT_TEST_OPTS') (' '))} {(Lit_Other ':')} {(DQ ('.* --valgrind '))} ] redirects: [(Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$TEST_NO_MALLOC_CHECK'))}) ] ) ] action: [ (FuncDef name: setup_malloc_check body: (BraceGroup children:[(C {(Lit_Other ':')} {(nothing)})] spids:[611]) spids: [606 610] ) (FuncDef name: teardown_malloc_check body: (BraceGroup children:[(C {(Lit_Other ':')} {(nothing)})] spids:[627]) spids: [622 626] ) ] spids: [16777215 603] ) ] else_action: [ (FuncDef name: setup_malloc_check body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:MALLOC_CHECK_ spids:[648]) op: Equal rhs: {(3)} spids: [648] ) (assign_pair lhs: (LhsName name:MALLOC_PERTURB_ spids:[651]) op: Equal rhs: {(165)} spids: [651] ) ] spids: [648] ) (C {(export)} {(MALLOC_CHECK_)} {(MALLOC_PERTURB_)}) ] spids: [645] ) spids: [640 644] ) (FuncDef name: teardown_malloc_check body: (BraceGroup children: [(C {(unset)} {(MALLOC_CHECK_)} {(MALLOC_PERTURB_)})] spids: [670] ) spids: [665 669] ) ] spids: [637 682] ) (C {(Lit_Other ':')} { (BracedVarSub token: <VSub_Name ASAN_OPTIONS> suffix_op: (StringUnary op_id:VTest_Equals arg_word:{('detect_leaks=0')}) spids: [687 691] ) } ) (C {(export)} {(ASAN_OPTIONS)}) (C {(unset)} {(CDPATH)}) (C {(unset)} {(GREP_OPTIONS)}) (C {(unset)} {(UNZIP)}) (Case to_match: { (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(echo)} {($ VSub_Name '$GIT_TRACE')}) (C {(tr)} {(DQ ('[A-Z]'))} {(DQ ('[a-z]'))}) ] negated: F ) ] ) left_token: <Left_CommandSub '$('> spids: [720 735] ) } arms: [ (case_arm pat_list: [{(1)} {(2)} {(true)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TRACE spids:[747]) op: Equal rhs: {(4)} spids: [747] ) ] spids: [747] ) ] spids: [739 744 751 16777215] ) ] spids: [718 737 753] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_x05 spids:[765]) op: Equal rhs: {(SQ <'[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]'>)} spids: [765] ) ] spids: [765] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_x40 spids:[770]) op: Equal rhs: { (DQ ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ($ VSub_Name '$_x05') ) } spids: [770] ) ] spids: [770] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_z40 spids:[786]) op: Equal rhs: {(0000000000000000000000000000000000000000)} spids: [786] ) ] spids: [786] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EMPTY_TREE spids:[790]) op: Equal rhs: {(4b825dc642cb6eb9a060e54bf8d69288fbee4904)} spids: [790] ) ] spids: [790] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EMPTY_BLOB spids:[793]) op: Equal rhs: {(e69de29bb2d1d6434b8b29ae775ad8c2e48c5391)} spids: [793] ) ] spids: [793] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:LF spids:[800]) op:Equal rhs:{(SQ <'\n'>)} spids:[800])] spids: [800] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:u200c spids:[812]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(printf)} {(SQ <'\\342\\200\\214'>)})]) left_token: <Left_CommandSub '$('> spids: [813 819] ) } spids: [812] ) ] spids: [812] ) (C {(export)} {(_x05)} {(_x40)} {(_z40)} {(LF)} {(u200c)} {(EMPTY_TREE)} {(EMPTY_BLOB)}) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(DQ (x) ($ VSub_Name '$TERM'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (xdumb))}) (Subshell child: (AndOr ops: [Op_DAmp Op_DAmp Op_DAmp] children: [ (C {(test)} {(-t)} {(1)}) (SimpleCommand words: [{(tput)} {(bold)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) (SimpleCommand words: [{(tput)} {(setaf)} {(1)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) (SimpleCommand words: [{(tput)} {(sgr0)}] redirects: [ (Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) ] ) spids: [873 924] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:color spids:[929]) op:Equal rhs:{(t)} spids:[929])] spids: [929] ) ] ) (WhileUntil keyword: <KW_While while> cond: [(C {(test)} {(DQ ($ VSub_Pound '$#'))} {(-ne)} {(0)})] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(-d)} {(--d)} {(--de)} {(--deb)} {(--debu)} {(--debug)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:debug spids:[971]) op: Equal rhs: {(t)} spids: [971] ) ] spids: [971] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [957 968 977 16777215] ) (case_arm pat_list: [ {(-i)} {(--i)} {(--im)} {(--imm)} {(--imme)} {(--immed)} {(--immedi)} {(--immedia)} {(--immediat)} {(--immediate)} ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:immediate spids:[1002]) op: Equal rhs: {(t)} spids: [1002] ) ] spids: [1002] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [980 999 1008 16777215] ) (case_arm pat_list: [ {(-l)} {(--l)} {(--lo)} {(--lon)} {(--long)} {(--long-)} {(--long-t)} {(--long-te)} {(--long-tes)} {(--long-test)} {(--long-tests)} ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_LONG spids:[1035]) op: Equal rhs: {(t)} spids: [1035] ) ] spids: [1035] ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(export)} {(GIT_TEST_LONG)}) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1011 1032 1046 16777215] ) (case_arm pat_list: [{(-r)}] action: [ (Sentence child:(C {(shift)}) terminator:<Op_Semi ';'>) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(-ne)} {(0)}) (BraceGroup children: [ (Sentence child: (SimpleCommand words: [{(echo)} {(SQ <'error: -r requires an argument'>)}] redirects: [ (Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [1068] ) ] ) (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:run_list spids:[1091]) op: Equal rhs: {($ VSub_Number '$1')} spids: [1091] ) ] spids: [1091] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1049 1050 1097 16777215] ) (case_arm pat_list: [{(--run) (Lit_Other '=') (Lit_Other '*')}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:run_list spids:[1106]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('--*=')}) spids: [1107 1111] ) } spids: [1106] ) ] spids: [1106] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1100 1103 1116 16777215] ) (case_arm pat_list: [{(-h)} {(--h)} {(--he)} {(--hel)} {(--help)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:help spids:[1131]) op: Equal rhs: {(t)} spids: [1131] ) ] spids: [1131] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1119 1128 1137 16777215] ) (case_arm pat_list: [ {(-v)} {(--v)} {(--ve)} {(--ver)} {(--verb)} {(--verbo)} {(--verbos)} {(--verbose)} ] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose spids:[1158]) op: Equal rhs: {(t)} spids: [1158] ) ] spids: [1158] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1140 1155 1164 16777215] ) (case_arm pat_list: [{(--verbose-only) (Lit_Other '=') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose_only spids:[1173]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('--*=')}) spids: [1174 1178] ) } spids: [1173] ) ] spids: [1173] ) (C {(shift)}) ] spids: [1167 1170 1183 16777215] ) (case_arm pat_list: [{(-q)} {(--q)} {(--qu)} {(--qui)} {(--quie)} {(--quiet)}] action: [ (Sentence child: (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$HARNESS_ACTIVE'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:quiet spids:[1218]) op: Equal rhs: {(t)} spids: [1218] ) ] spids: [1218] ) ] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1186 1197 1224 16777215] ) (case_arm pat_list: [{(--with-dashes)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:with_dashes spids:[1231]) op: Equal rhs: {(t)} spids: [1231] ) ] spids: [1231] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1227 1228 1237 16777215] ) (case_arm pat_list: [{(--no-color)}] action: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:color spids:[1244]) op: Equal rhs: (EmptyWord) spids: [1244] ) ] spids: [1244] ) terminator: <Op_Semi ';'> ) (C {(shift)}) ] spids: [1240 1241 1249 16777215] ) (case_arm pat_list: [ {(--va)} {(--val)} {(--valg)} {(--valgr)} {(--valgri)} {(--valgrin)} {(--valgrind)} ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:valgrind spids:[1268]) op: Equal rhs: {(memcheck)} spids: [1268] ) ] spids: [1268] ) (C {(shift)}) ] spids: [1252 1265 1274 16777215] ) (case_arm pat_list: [{(--valgrind) (Lit_Other '=') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:valgrind spids:[1283]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('--*=')}) spids: [1284 1288] ) } spids: [1283] ) ] spids: [1283] ) (C {(shift)}) ] spids: [1277 1280 1293 16777215] ) (case_arm pat_list: [{(--valgrind-only) (Lit_Other '=') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:valgrind_only spids:[1302]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('--*=')}) spids: [1303 1307] ) } spids: [1302] ) ] spids: [1302] ) (C {(shift)}) ] spids: [1296 1299 1312 16777215] ) (case_arm pat_list: [{(--tee)}] action: [(C {(shift)})] spids: [1315 1316 1321 16777215] ) (case_arm pat_list: [{(--root) (Lit_Other '=') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:root spids:[1333]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('--*=')}) spids: [1334 1338] ) } spids: [1333] ) ] spids: [1333] ) (C {(shift)}) ] spids: [1327 1330 1343 16777215] ) (case_arm pat_list: [{(--chain-lint)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_CHAIN_LINT spids:[1350]) op: Equal rhs: {(1)} spids: [1350] ) ] spids: [1350] ) (C {(shift)}) ] spids: [1346 1347 1356 16777215] ) (case_arm pat_list: [{(--no-chain-lint)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_CHAIN_LINT spids:[1363]) op: Equal rhs: {(0)} spids: [1363] ) ] spids: [1363] ) (C {(shift)}) ] spids: [1359 1360 1369 16777215] ) (case_arm pat_list: [{(-x)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:trace spids:[1376]) op: Equal rhs: {(t)} spids: [1376] ) ] spids: [1376] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose spids:[1380]) op: Equal rhs: {(t)} spids: [1380] ) ] spids: [1380] ) (C {(shift)}) ] spids: [1372 1373 1386 16777215] ) (case_arm pat_list: [{(--verbose-log)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose_log spids:[1393]) op: Equal rhs: {(t)} spids: [1393] ) ] spids: [1393] ) (C {(shift)}) ] spids: [1389 1390 1399 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Sentence child: (SimpleCommand words: [ {(echo)} {(DQ ("error: unknown test option '") ($ VSub_Number '$1') ("'"))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) terminator: <Op_Semi ';'> ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [1402 1403 1422 16777215] ) ] spids: [948 954 1425] ) ] spids: [945 1427] ) ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$valgrind_only'))})] action: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$valgrind'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:valgrind spids:[1453]) op: Equal rhs: {(memcheck)} spids: [1453] ) ] spids: [1453] ) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$verbose'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose_only spids:[1467]) op: Equal rhs: {(DQ ($ VSub_Name '$valgrind_only'))} spids: [1467] ) ] spids: [1467] ) ] ) ] spids: [16777215 1440] ) (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$valgrind'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose spids:[1485]) op: Equal rhs: {(t)} spids: [1485] ) ] spids: [1485] ) ] spids: [1472 1482] ) ] spids: [16777215 1488] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$color'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_error spids:[1552]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (C {(tput)} {(bold)}) terminator: <Op_Semi ';'> ) (C {(tput)} {(setaf)} {(1)}) ] ) left_token: <Left_CommandSub '$('> spids: [1553 1564] ) } spids: [1552] ) ] spids: [1552] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_skip spids:[1570]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(4)})]) left_token: <Left_CommandSub '$('> spids: [1571 1577] ) } spids: [1570] ) ] spids: [1570] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_warn spids:[1583]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(3)})]) left_token: <Left_CommandSub '$('> spids: [1584 1590] ) } spids: [1583] ) ] spids: [1583] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_pass spids:[1596]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(2)})]) left_token: <Left_CommandSub '$('> spids: [1597 1603] ) } spids: [1596] ) ] spids: [1596] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_info spids:[1609]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(setaf)} {(6)})]) left_token: <Left_CommandSub '$('> spids: [1610 1616] ) } spids: [1609] ) ] spids: [1609] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_reset spids:[1622]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children:[(C {(tput)} {(sgr0)})]) left_token: <Left_CommandSub '$('> spids: [1623 1627] ) } spids: [1622] ) ] spids: [1622] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:say_color_ spids:[1630]) op: Equal rhs: {(DQ )} spids: [1630] ) ] spids: [1630] ) (FuncDef name: say_color body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Number '$1'))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$quiet'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(eval)} { (DQ ('say_color_color=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (say_color_) ($ VSub_Number '$1') ) } ) (C {(shift)}) (C {(printf)} {(DQ ('%s') (EscapedLiteralPart token:<Lit_EscapedChar '\\\\'>) (n))} { (DQ ($ VSub_Name '$say_color_color') ($ VSub_Star '$*') ($ VSub_Name '$say_color_reset') ) } ) ] spids: [1643] ) spids: [1638 1642] ) ] spids: [16777215 1501] ) ] else_action: [ (FuncDef name: say_color body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Number '$1'))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$quiet'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) (C {(shift)}) (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Star '$*'))}) ] spids: [1706] ) spids: [1702 1705] ) ] spids: [1699 1750] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:TERM spids:[1753]) op:Equal rhs:{(dumb)} spids:[1753])] spids: [1753] ) (C {(export)} {(TERM)}) (FuncDef name: error body: (BraceGroup children: [ (C {(say_color)} {(error)} {(DQ ('error: ') ($ VSub_Star '$*'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXIT_OK spids:[1779]) op: Equal rhs: {(t)} spids: [1779] ) ] spids: [1779] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [1766] ) spids: [1761 1765] ) (FuncDef name: say body: (BraceGroup children:[(C {(say_color)} {(info)} {(DQ ($ VSub_Star '$*'))})] spids:[1795]) spids: [1790 1794] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$HARNESS_ACTIVE'))})] action: [ (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Name '$verbose'))} {(Lit_Other '=')} {(t)}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$verbose_only'))}) ] ) ] action: [ (C {(printf)} {(SQ <'Bail out! %s\\n'>)} {(SQ <'verbose mode forbidden under TAP harness; try --verbose-log'>)} ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 1845] ) ] spids: [16777215 1866] ) ] spids: [16777215 1819] ) ] spids: [16777215 1868] ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ (${ VSub_Name test_description))} {(KW_Bang '!') (Lit_Other '=')} {(DQ )}) (C {(error)} {(DQ ('Test script did not set test_description.'))}) ] ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_Name '$help'))} {(Lit_Other '=')} {(DQ (t))})] action: [ (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Name '$test_description'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [16777215 1908] ) ] spids: [16777215 1926] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op:<Redir_GreatAnd '5>&'> fd:5 arg_word:{(1)})] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op:<Redir_LessAnd '6<&'> fd:6 arg_word:{(0)})] ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_Name '$verbose_log'))} {(Lit_Other '=')} {(DQ (t))})] action: [ (SimpleCommand words: [{(exec)}] redirects: [ (Redir op: <Redir_DGreat '3>>'> fd: 3 arg_word: {(DQ ($ VSub_Name '$GIT_TEST_TEE_OUTPUT_FILE'))} ) (Redir op:<Redir_GreatAnd '4>&'> fd:4 arg_word:{(3)}) ] ) ] spids: [16777215 1953] ) (if_arm cond: [(C {(test)} {(DQ ($ VSub_Name '$verbose'))} {(Lit_Other '=')} {(DQ (t))})] action: [ (SimpleCommand words: [{(exec)}] redirects: [ (Redir op:<Redir_GreatAnd '4>&'> fd:4 arg_word:{(2)}) (Redir op:<Redir_GreatAnd '3>&'> fd:3 arg_word:{(1)}) ] ) ] spids: [1966 1980] ) ] else_action: [ (SimpleCommand words: [{(exec)}] redirects: [ (Redir op:<Redir_Great '4>'> fd:4 arg_word:{(/dev/null)}) (Redir op:<Redir_Great '3>'> fd:3 arg_word:{(/dev/null)}) ] ) ] spids: [1991 2002] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BASH_XTRACEFD spids:[2038]) op: Equal rhs: {(4)} spids: [2038] ) ] spids: [2038] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_failure spids:[2042]) op: Equal rhs: {(0)} spids: [2042] ) ] spids: [2042] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_count spids:[2045]) op: Equal rhs: {(0)} spids: [2045] ) ] spids: [2045] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_fixed spids:[2048]) op: Equal rhs: {(0)} spids: [2048] ) ] spids: [2048] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_broken spids:[2051]) op: Equal rhs: {(0)} spids: [2051] ) ] spids: [2051] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_success spids:[2054]) op: Equal rhs: {(0)} spids: [2054] ) ] spids: [2054] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_external_has_tap spids:[2058]) op: Equal rhs: {(0)} spids: [2058] ) ] spids: [2058] ) (FuncDef name: die body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:code spids:[2070]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [2070] ) ] spids: [2070] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$GIT_EXIT_OK'))})] action: [(ControlFlow token:<ControlFlow_Exit exit> arg_word:{($ VSub_Name '$code')})] spids: [16777215 2085] ) ] else_action: [ (SimpleCommand words: [{(echo)} {(DQ ('FATAL: Unexpected exit with code ') ($ VSub_Name '$code'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(5)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [2093 2112] ) ] spids: [2067] ) spids: [2062 2066] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXIT_OK spids:[2117]) op: Equal rhs: (EmptyWord) spids: [2117] ) ] spids: [2117] ) (C {(trap)} {(SQ <die>)} {(EXIT)}) (C {(trap)} {(SQ <'exit $?'>)} {(INT)}) (C {(.)} {(DQ ($ VSub_Name '$TEST_DIRECTORY') (/test-lib-functions.sh))}) (FuncDef name: test_ok_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_success spids:[2165]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_success')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2166 2173] ) } spids: [2165] ) ] spids: [2165] ) (C {(say_color)} {(DQ )} {(DQ ('ok ') ($ VSub_Name '$test_count') (' - ') ($ VSub_At '$@'))}) ] spids: [2162] ) spids: [2157 2161] ) (FuncDef name: test_failure_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_failure spids:[2199]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_failure')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2200 2207] ) } spids: [2199] ) ] spids: [2199] ) (C {(say_color)} {(error)} {(DQ ('not ok ') ($ VSub_Name '$test_count') (' - ') ($ VSub_Number '$1'))} ) (C {(shift)}) (Pipeline children: [ (C {(printf)} {(SQ <'%s\\n'>)} {(DQ ($ VSub_Star '$*'))}) (C {(sed)} {(-e)} {(SQ <'s/^/#\t/'>)}) ] negated: F ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Name '$immediate'))} {(Lit_Other '=')} {(DQ )}) (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXIT_OK spids:[2261]) op: Equal rhs: {(t)} spids: [2261] ) ] spids: [2261] ) terminator: <Op_Semi ';'> ) (Sentence child: (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) terminator: <Op_Semi ';'> ) ] spids: [2259] ) ] ) ] spids: [2196] ) spids: [2191 2195] ) (FuncDef name: test_known_broken_ok_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_fixed spids:[2283]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_fixed')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2284 2289] ) } spids: [2283] ) ] spids: [2283] ) (C {(say_color)} {(error)} { (DQ ('ok ') ($ VSub_Name '$test_count') (' - ') ($ VSub_At '$@') (' # TODO known breakage vanished') ) } ) ] spids: [2280] ) spids: [2275 2279] ) (FuncDef name: test_known_broken_failure_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_broken spids:[2315]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_broken')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2316 2321] ) } spids: [2315] ) ] spids: [2315] ) (C {(say_color)} {(warn)} { (DQ ('not ok ') ($ VSub_Name '$test_count') (' - ') ($ VSub_At '$@') (' # TODO known breakage') ) } ) ] spids: [2312] ) spids: [2307 2311] ) (FuncDef name: test_debug body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Name '$debug'))} {(Lit_Other '=')} {(DQ )}) (C {(eval)} {(DQ ($ VSub_Number '$1'))}) ] ) ] spids: [2344] ) spids: [2339 2343] ) (FuncDef name: match_pattern_list body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg spids:[2377]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2377] ) ] spids: [2377] ) (C {(shift)}) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Star '$*'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] ) (ForEach iter_name: pattern_ do_arg_iter: T body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name '$arg'))} arms: [ (case_arm pat_list: [{($ VSub_Name '$pattern_')}] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [2418 2419 16777215 2427] ) ] spids: [2409 2415 2427] ) ] spids: [2406 2430] ) spids: [16777215 16777215] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2374] ) spids: [2369 2373] ) (FuncDef name: match_test_selector_list body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:title spids:[2448]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2448] ) ] spids: [2448] ) (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:arg spids:[2457]) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2457] ) ] spids: [2457] ) (C {(shift)}) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OLDIFS spids:[2486]) op: Equal rhs: {($ VSub_Name '$IFS')} spids: [2486] ) ] spids: [2486] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS spids:[2490]) op: Equal rhs: {(SQ <' \t,'>)} spids: [2490] ) ] spids: [2490] ) (C {(set)} {(--)} {($ VSub_Number '$1')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS spids:[2503]) op: Equal rhs: {($ VSub_Name '$OLDIFS')} spids: [2503] ) ] spids: [2503] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include spids:[2512]) op: Equal rhs: (EmptyWord) spids: [2512] ) ] spids: [2512] ) (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(KW_Bang '!') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include spids:[2528]) op: Equal rhs: {(t)} spids: [2528] ) ] spids: [2528] ) ] spids: [2524 2526 2531 16777215] ) ] spids: [2515 2521 2534] ) (ForEach iter_name: selector do_arg_iter: T body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:orig_selector spids:[2546]) op: Equal rhs: {($ VSub_Name '$selector')} spids: [2546] ) ] spids: [2546] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:positive spids:[2551]) op: Equal rhs: {(t)} spids: [2551] ) ] spids: [2551] ) (Case to_match: {(DQ ($ VSub_Name '$selector'))} arms: [ (case_arm pat_list: [{(KW_Bang '!') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:positive spids:[2569]) op: Equal rhs: (EmptyWord) spids: [2569] ) ] spids: [2569] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:selector spids:[2572]) op: Equal rhs: { (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('?')}) spids: [2573 2577] ) } spids: [2572] ) ] spids: [2572] ) ] spids: [2564 2566 2580 16777215] ) ] spids: [2555 2561 2583] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$selector'))}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (Case to_match: {(DQ ($ VSub_Name '$selector'))} arms: [ (case_arm pat_list: [{(Lit_Other '*') (-) (Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [ {(expr)} { (DQ (z) (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id: VOp1_DPercent arg_word: {('-*')} ) spids: [2622 2626] ) ) } {(Lit_Other ':')} {(DQ ('z[0-9]*[^0-9]'))} ] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('error: ') ($ VSub_Name '$title') (': invalid non-numeric in range') ) } {(DQ ("start: '") ($ VSub_Name '$orig_selector') ("'"))} ] redirects: [ (Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 2639] ) ] spids: [16777215 2667] ) (If arms: [ (if_arm cond: [ (SimpleCommand words: [ {(expr)} { (DQ (z) (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('*-')} ) spids: [2676 2680] ) ) } {(Lit_Other ':')} {(DQ ('z[0-9]*[^0-9]'))} ] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('error: ') ($ VSub_Name '$title') (': invalid non-numeric in range') ) } {(DQ ("end: '") ($ VSub_Name '$orig_selector') ("'"))} ] redirects: [ (Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 2693] ) ] spids: [16777215 2721] ) ] spids: [2610 2613 2724 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [ {(expr)} {(DQ (z) ($ VSub_Name '$selector'))} {(Lit_Other ':')} {(DQ ('z[0-9]*[^0-9]'))} ] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(/dev/null)} ) ] ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('error: ') ($ VSub_Name '$title') (': invalid non-numeric in test') ) } {(DQ ("selector: '") ($ VSub_Name '$orig_selector') ("'"))} ] redirects: [ (Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(2)} ) ] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(1)} ) ] spids: [16777215 2750] ) ] spids: [16777215 2778] ) ] spids: [2727 2728 16777215 2781] ) ] spids: [2601 2607 2781] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$include'))}) (C {(test)} {(-z)} {(DQ ($ VSub_Name '$positive'))}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$include'))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$positive'))}) (ControlFlow token:<ControlFlow_Continue continue>) ] ) (Case to_match: {(DQ ($ VSub_Name '$selector'))} arms: [ (case_arm pat_list: [{(-) (Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [ (C {(test)} {($ VSub_Name '$arg')} {(-le)} { (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{(-)}) spids: [2858 2862] ) } ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include spids:[2868]) op: Equal rhs: {($ VSub_Name '$positive')} spids: [2868] ) ] spids: [2868] ) ] spids: [16777215 2865] ) ] spids: [16777215 2872] ) ] spids: [2845 2847 2875 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (-)}] action: [ (If arms: [ (if_arm cond: [ (C {(test)} {($ VSub_Name '$arg')} {(-ge)} { (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(-)}) spids: [2891 2895] ) } ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include spids:[2901]) op: Equal rhs: {($ VSub_Name '$positive')} spids: [2901] ) ] spids: [2901] ) ] spids: [16777215 2898] ) ] spids: [16777215 2905] ) ] spids: [2878 2880 2908 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (-) (Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} { (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id: VOp1_DPercent arg_word: {('-*')} ) spids: [2921 2925] ) } {(-le)} {($ VSub_Name '$arg')} ) (C {(test)} {($ VSub_Name '$arg')} {(-le)} { (BracedVarSub token: <VSub_Name selector> suffix_op: (StringUnary op_id: VOp1_Pound arg_word: {('*-')} ) spids: [2941 2945] ) } ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include spids:[2951]) op: Equal rhs: {($ VSub_Name '$positive')} spids: [2951] ) ] spids: [2951] ) ] spids: [16777215 2948] ) ] spids: [16777215 2955] ) ] spids: [2911 2914 2958 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [ (C {(test)} {($ VSub_Name '$arg')} {(-eq)} {($ VSub_Name '$selector')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:include spids:[2979]) op: Equal rhs: {($ VSub_Name '$positive')} spids: [2979] ) ] spids: [2979] ) ] spids: [16777215 2976] ) ] spids: [16777215 2983] ) ] spids: [2961 2962 2986 16777215] ) ] spids: [2836 2842 2989] ) ] spids: [2543 2992] ) spids: [16777215 16777215] ) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$include'))}) ] spids: [2445] ) spids: [2440 2444] ) (FuncDef name: maybe_teardown_verbose body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$verbose_only'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) (SimpleCommand words: [{(exec)}] redirects: [ (Redir op:<Redir_Great '4>'> fd:4 arg_word:{(/dev/null)}) (Redir op:<Redir_Great '3>'> fd:3 arg_word:{(/dev/null)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose spids:[3037]) op: Equal rhs: (EmptyWord) spids: [3037] ) ] spids: [3037] ) ] spids: [3012] ) spids: [3007 3011] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:last_verbose spids:[3042]) op: Equal rhs: {(t)} spids: [3042] ) ] spids: [3042] ) (FuncDef name: maybe_setup_verbose body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$verbose_only'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) (If arms: [ (if_arm cond: [ (C {(match_pattern_list)} {($ VSub_Name '$test_count')} {($ VSub_Name '$verbose_only')} ) ] action: [ (SimpleCommand words: [{(exec)}] redirects: [ (Redir op:<Redir_GreatAnd '4>&'> fd:4 arg_word:{(2)}) (Redir op:<Redir_GreatAnd '3>&'> fd:3 arg_word:{(1)}) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$last_verbose'))}) (SimpleCommand words: [{(echo)} {(DQ )}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose spids:[3126]) op: Equal rhs: {(t)} spids: [3126] ) ] spids: [3126] ) ] spids: [16777215 3075] ) ] else_action: [ (SimpleCommand words: [{(exec)}] redirects: [ (Redir op:<Redir_Great '4>'> fd:4 arg_word:{(/dev/null)}) (Redir op:<Redir_Great '3>'> fd:3 arg_word:{(/dev/null)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:verbose spids:[3142]) op: Equal rhs: (EmptyWord) spids: [3142] ) ] spids: [3142] ) ] spids: [3130 3145] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:last_verbose spids:[3148]) op: Equal rhs: {($ VSub_Name '$verbose')} spids: [3148] ) ] spids: [3148] ) ] spids: [3050] ) spids: [3045 3049] ) (FuncDef name: maybe_teardown_valgrind body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$GIT_VALGRIND'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_ENABLED spids:[3175]) op: Equal rhs: (EmptyWord) spids: [3175] ) ] spids: [3175] ) ] spids: [3159] ) spids: [3154 3158] ) (FuncDef name: maybe_setup_valgrind body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$GIT_VALGRIND'))}) (ControlFlow token:<ControlFlow_Return return>) ] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$valgrind_only'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_ENABLED spids:[3215]) op: Equal rhs: {(t)} spids: [3215] ) ] spids: [3215] ) (ControlFlow token:<ControlFlow_Return return>) ] spids: [16777215 3212] ) ] spids: [16777215 3222] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_ENABLED spids:[3225]) op: Equal rhs: (EmptyWord) spids: [3225] ) ] spids: [3225] ) (If arms: [ (if_arm cond: [ (C {(match_pattern_list)} {($ VSub_Name '$test_count')} {($ VSub_Name '$valgrind_only')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_ENABLED spids:[3240]) op: Equal rhs: {(t)} spids: [3240] ) ] spids: [3240] ) ] spids: [16777215 3237] ) ] spids: [16777215 3244] ) ] spids: [3185] ) spids: [3180 3184] ) (FuncDef name: want_trace body: (BraceGroup children: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$trace'))} {(Lit_Other '=')} {(t)}) (C {(test)} {(DQ ($ VSub_Name '$verbose'))} {(Lit_Other '=')} {(t)}) ] ) ] spids: [3254] ) spids: [3249 3253] ) (FuncDef name: test_eval_inner_ body: (BraceGroup children: [ (C {(eval)} {(DQ ('\n') ('\t\twant_trace && set -x\n') ('\t\t') ($ VSub_Star '$*'))}) ] spids: [3299] ) spids: [3294 3298] ) (FuncDef name: test_eval_ body: (BraceGroup children: [ (BraceGroup children: [ (SimpleCommand words: [{(test_eval_inner_)} {(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op:<Redir_Less '<'> fd:16777215 arg_word:{(/dev/null)}) (Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)}) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(4)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_eval_ret_ spids:[3377]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [3377] ) ] spids: [3377] ) (If arms: [ (if_arm cond: [(C {(want_trace)})] action: [ (C {(set)} {(Lit_Other '+') (x)}) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$test_eval_ret_'))} {(KW_Bang '!') (Lit_Other '=')} {(0)} ) ] action: [ (SimpleCommand words: [ {(say_color)} {(error)} { (DQ ('error: last command exited with ') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('?=') ($ VSub_Name '$test_eval_ret_') ) } ] redirects: [ (Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(4)} ) ] ) ] spids: [16777215 3409] ) ] spids: [16777215 3427] ) ] spids: [16777215 3386] ) ] spids: [16777215 3430] ) ] redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] spids: [3358] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$test_eval_ret_')} ) ] spids: [3323] ) spids: [3318 3322] ) (FuncDef name: test_run_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_cleanup spids:[3454]) op: Equal rhs: {(Lit_Other ':')} spids: [3454] ) ] spids: [3454] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:expecting_failure spids:[3458]) op: Equal rhs: {($ VSub_Number '$2')} spids: [3458] ) ] spids: [3458] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} { (DQ (BracedVarSub token: <VSub_Name GIT_TEST_CHAIN_LINT> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)}) spids: [3468 3472] ) ) } {(KW_Bang '!') (Lit_Other '=')} {(0)} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:trace_tmp spids:[3492]) op: Equal rhs: {($ VSub_Name '$trace')} spids: [3492] ) ] spids: [3492] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:trace spids:[3496]) op: Equal rhs: (EmptyWord) spids: [3496] ) ] spids: [3496] ) (C {(test_eval_)} {(DQ ('(exit 117) && ') ($ VSub_Number '$1'))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_QMark '$?'))} {(KW_Bang '!') (Lit_Other '=')} {(117)} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(error)} { (DQ ('bug in the test script: broken &&-chain: ') ($ VSub_Number '$1')) } ) ] spids: [16777215 3529] ) ] spids: [16777215 3540] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:trace spids:[3543]) op: Equal rhs: {($ VSub_Name '$trace_tmp')} spids: [3543] ) ] spids: [3543] ) ] spids: [16777215 3481] ) ] spids: [16777215 3547] ) (C {(setup_malloc_check)}) (C {(test_eval_)} {(DQ ($ VSub_Number '$1'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:eval_ret spids:[3561]) op: Equal rhs: {($ VSub_QMark '$?')} spids: [3561] ) ] spids: [3561] ) (C {(teardown_malloc_check)}) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DPipe Op_DPipe Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$immediate'))}) (C {(test)} {($ VSub_Name '$eval_ret')} {(Lit_Other '=')} {(0)}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$expecting_failure'))}) (C {(test)} {(DQ ($ VSub_Name '$test_cleanup'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ (':'))} ) ] ) ] action: [ (C {(setup_malloc_check)}) (C {(test_eval_)} {(DQ ($ VSub_Name '$test_cleanup'))}) (C {(teardown_malloc_check)}) ] spids: [16777215 3616] ) ] spids: [16777215 3632] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(DQ ($ VSub_Name '$verbose'))} {(Lit_Other '=')} {(DQ (t))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$HARNESS_ACTIVE'))}) ] ) ] action: [(C {(echo)} {(DQ )})] spids: [16777215 3660] ) ] spids: [16777215 3669] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {(DQ ($ VSub_Name '$eval_ret'))} ) ] spids: [3451] ) spids: [3446 3450] ) (FuncDef name: test_start_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_count spids:[3689]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_count')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [3690 3695] ) } spids: [3689] ) ] spids: [3689] ) (C {(maybe_setup_verbose)}) (C {(maybe_setup_valgrind)}) ] spids: [3686] ) spids: [3681 3685] ) (FuncDef name: test_finish_ body: (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ )}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (C {(maybe_teardown_valgrind)}) (C {(maybe_teardown_verbose)}) ] spids: [3711] ) spids: [3706 3710] ) (FuncDef name: test_skip body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:to_skip spids:[3739]) op: Equal rhs: (EmptyWord) spids: [3739] ) ] spids: [3739] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skipped_reason spids:[3742]) op: Equal rhs: (EmptyWord) spids: [3742] ) ] spids: [3742] ) (If arms: [ (if_arm cond: [ (C {(match_pattern_list)} {($ VSub_Name '$this_test') (.) ($ VSub_Name '$test_count')} {($ VSub_Name '$GIT_SKIP_TESTS')} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:to_skip spids:[3759]) op: Equal rhs: {(t)} spids: [3759] ) ] spids: [3759] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skipped_reason spids:[3763]) op: Equal rhs: {(DQ (GIT_SKIP_TESTS))} spids: [3763] ) ] spids: [3763] ) ] spids: [16777215 3756] ) ] spids: [16777215 3769] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$to_skip'))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$test_prereq'))}) (Pipeline children: [(C {(test_have_prereq)} {(DQ ($ VSub_Name '$test_prereq'))})] negated: T ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:to_skip spids:[3807]) op: Equal rhs: {(t)} spids: [3807] ) ] spids: [3807] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:of_prereq spids:[3812]) op: Equal rhs: (EmptyWord) spids: [3812] ) ] spids: [3812] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$missing_prereq'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$test_prereq'))} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:of_prereq spids:[3834]) op: Equal rhs: {(DQ (' of ') ($ VSub_Name '$test_prereq'))} spids: [3834] ) ] spids: [3834] ) ] spids: [16777215 3831] ) ] spids: [16777215 3841] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skipped_reason spids:[3844]) op: Equal rhs: { (DQ ('missing ') ($ VSub_Name '$missing_prereq') (${ VSub_Name of_prereq)) } spids: [3844] ) ] spids: [3844] ) ] spids: [16777215 3804] ) ] spids: [16777215 3854] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$to_skip'))}) (C {(test)} {(-n)} {(DQ ($ VSub_Name '$run_list'))}) (Pipeline children: [ (C {(match_test_selector_list)} {(SQ <--run>)} {($ VSub_Name '$test_count')} {(DQ ($ VSub_Name '$run_list'))} ) ] negated: T ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:to_skip spids:[3898]) op: Equal rhs: {(t)} spids: [3898] ) ] spids: [3898] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skipped_reason spids:[3902]) op: Equal rhs: {(DQ (--run))} spids: [3902] ) ] spids: [3902] ) ] spids: [16777215 3895] ) ] spids: [16777215 3908] ) (Case to_match: {(DQ ($ VSub_Name '$to_skip'))} arms: [ (case_arm pat_list: [{(t)}] action: [ (SimpleCommand words: [{(say_color)} {(skip)} {(DQ ('skipping test: ') ($ VSub_At '$@'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (C {(say_color)} {(skip)} { (DQ ('ok ') ($ VSub_Name '$test_count') (' # skip ') ($ VSub_Number '$1') (' (') ($ VSub_Name '$skipped_reason') (')') ) } ) (C {(Lit_Other ':')} {(true)}) ] spids: [3921 3922 3958 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(false)})] spids: [3961 3962 3968 16777215] ) ] spids: [3912 3918 3971] ) ] spids: [3736] ) spids: [3731 3735] ) (FuncDef name: test_at_end_hook_ body: (BraceGroup children:[(C {(Lit_Other ':')})] spids:[3984]) spids: [3979 3983] ) (FuncDef name: test_done body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXIT_OK spids:[4000]) op: Equal rhs: {(t)} spids: [4000] ) ] spids: [4000] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$HARNESS_ACTIVE'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_results_dir spids:[4019]) op: Equal rhs: {(DQ ($ VSub_Name '$TEST_OUTPUT_DIRECTORY') (/test-results))} spids: [4019] ) ] spids: [4019] ) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$test_results_dir'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:base spids:[4035]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id: VOp1_DPound arg_word: {('*') (Lit_Slash /)} ) spids: [4036 4041] ) } spids: [4035] ) ] spids: [4035] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_results_path spids:[4044]) op: Equal rhs: { (DQ ($ VSub_Name '$test_results_dir') (/) (BracedVarSub token: <VSub_Name base> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(.sh)}) spids: [4048 4052] ) (.counts) ) } spids: [4044] ) ] spids: [4044] ) (SimpleCommand words: [{(cat)}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$test_results_path'))} ) (HereDoc op: <Redir_DLessDash '<<-'> fd: 16777215 here_begin: {(EOF)} here_end_span_id: 4085 stdin_parts: [ ('total ') ($ VSub_Name '$test_count') ('\n') ('success ') ($ VSub_Name '$test_success') ('\n') ('fixed ') ($ VSub_Name '$test_fixed') ('\n') ('broken ') ($ VSub_Name '$test_broken') ('\n') ('failed ') ($ VSub_Name '$test_failure') ('\n') ('\n') ] ) ] ) ] spids: [16777215 4016] ) ] spids: [16777215 4087] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$test_fixed'))} {(KW_Bang '!') (Lit_Other '=')} {(0)}) ] action: [ (C {(say_color)} {(error)} { (DQ ('# ') ($ VSub_Name '$test_fixed') (' known breakage(s) vanished; please update test(s)') ) } ) ] spids: [16777215 4105] ) ] spids: [16777215 4119] ) (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Name '$test_broken'))} {(KW_Bang '!') (Lit_Other '=')} {(0)}) ] action: [ (C {(say_color)} {(warn)} {(DQ ('# still have ') ($ VSub_Name '$test_broken') (' known breakage(s)'))} ) ] spids: [16777215 4136] ) ] spids: [16777215 4150] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(DQ ($ VSub_Name '$test_broken'))} {(KW_Bang '!') (Lit_Other '=')} {(0)} ) (C {(test)} {(DQ ($ VSub_Name '$test_fixed'))} {(KW_Bang '!') (Lit_Other '=')} {(0)} ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_remaining spids:[4183]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$test_count')}) right: (ArithWord w:{($ VSub_Name '$test_broken')}) ) right: (ArithWord w:{($ VSub_Name '$test_fixed')}) ) spids: [4184 4197] ) } spids: [4183] ) ] spids: [4183] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msg spids:[4200]) op: Equal rhs: {(DQ ('remaining ') ($ VSub_Name '$test_remaining') (' test(s)'))} spids: [4200] ) ] spids: [4200] ) ] spids: [16777215 4180] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_remaining spids:[4211]) op: Equal rhs: {($ VSub_Name '$test_count')} spids: [4211] ) ] spids: [4211] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:msg spids:[4215]) op: Equal rhs: {(DQ ($ VSub_Name '$test_count') (' test(s)'))} spids: [4215] ) ] spids: [4215] ) ] spids: [4208 4222] ) (Case to_match: {(DQ ($ VSub_Name '$test_failure'))} arms: [ (case_arm pat_list: [{(0)}] action: [ (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$skip_all'))}) (C {(test)} {($ VSub_Name '$test_count')} {(-gt)} {(0)}) ] ) ] action: [(C {(error)} {(DQ ("Can't use skip_all after running some tests"))})] spids: [16777215 4263] ) ] spids: [16777215 4273] ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$skip_all'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all spids:[4286]) op: Equal rhs: {(DQ (' # SKIP ') ($ VSub_Name '$skip_all'))} spids: [4286] ) ] spids: [4286] ) ] ) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Name '$test_external_has_tap')} {(-eq)} {(0)})] action: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Name '$test_remaining')} {(-gt)} {(0)})] action: [ (C {(say_color)} {(pass)} {(DQ ('# passed all ') ($ VSub_Name '$msg'))} ) ] spids: [16777215 4319] ) ] spids: [16777215 4332] ) (C {(say)} {(DQ (1..) ($ VSub_Name '$test_count') ($ VSub_Name '$skip_all'))} ) ] spids: [16777215 4305] ) ] spids: [16777215 4344] ) (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-d)} {(DQ ($ VSub_Name '$remove_trash'))}) (C {(cd)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {(DQ ($ VSub_Name '$remove_trash'))})] ) left_token: <Left_CommandSub '$('> spids: [4362 4368] ) ) } ) (C {(rm)} {(-rf)} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Name '$remove_trash'))})] ) left_token: <Left_CommandSub '$('> spids: [4379 4385] ) ) } ) ] ) (C {(test_at_end_hook_)}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [4234 4235 4398 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Name '$test_external_has_tap')} {(-eq)} {(0)})] action: [ (C {(say_color)} {(error)} { (DQ ('# failed ') ($ VSub_Name '$test_failure') (' among ') ($ VSub_Name '$msg') ) } ) (C {(say)} {(DQ (1..) ($ VSub_Name '$test_count'))}) ] spids: [16777215 4417] ) ] spids: [16777215 4440] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [4402 4403 4448 16777215] ) ] spids: [4225 4231 4452] ) ] spids: [3997] ) spids: [3992 3996] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$valgrind'))})] action: [ (FuncDef name: make_symlink body: (BraceGroup children: [ (AndOr ops: [Op_DAmp Op_DPipe] children: [ (C {(test)} {(-h)} {(DQ ($ VSub_Number '$2'))}) (C {(test)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [(C {(readlink)} {(DQ ($ VSub_Number '$2'))})] ) left_token: <Left_CommandSub '$('> spids: [4498 4504] ) ) } ) (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(mkdir)} {(DQ ($ VSub_Number '$2')) (.lock)})] action: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(rm)} {(-f)} {(DQ ($ VSub_Number '$2'))}) (C {(ln)} {(-s)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))} ) (C {(rm)} {(-r)} {(DQ ($ VSub_Number '$2')) (.lock)}) ] ) ] spids: [16777215 4526] ) ] else_action: [ (WhileUntil keyword: <KW_While while> cond: [(C {(test)} {(-d)} {(DQ ($ VSub_Number '$2')) (.lock)})] body: (DoGroup children: [ (C {(say)} {(DQ ('Waiting for lock on ') ($ VSub_Number '$2') (.))} ) (C {(sleep)} {(1)}) ] spids: [4580 4597] ) ) ] spids: [4565 4600] ) ] spids: [4509] ) ] ) ] spids: [4475] ) spids: [4470 4474] ) (FuncDef name: make_valgrind_symlink body: (BraceGroup children: [ (Sentence child: (AndOr ops: [Op_DPipe Op_DPipe] children: [ (C {(test)} {(-x)} {(DQ ($ VSub_Number '$1'))}) (C {(test)} {(DQ ('# '))} {(Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(head)} {(-c)} {(2)}] redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [4646 4657] ) ) } ) (ControlFlow token: <ControlFlow_Return return> ) ] ) terminator: <Op_Semi ';'> ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:base spids:[4668]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Number '$1'))})] ) left_token: <Left_CommandSub '$('> spids: [4669 4675] ) } spids: [4668] ) ] spids: [4668] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symlink_target spids:[4678]) op: Equal rhs: {($ VSub_Name '$GIT_BUILD_DIR') (/) ($ VSub_Name '$base')} spids: [4678] ) ] spids: [4678] ) (If arms: [ (if_arm cond: [ (AndOr ops: [Op_DAmp Op_DAmp] children: [ (C {(test)} {(-x)} {(DQ ($ VSub_Name '$symlink_target'))}) (C {(test)} {(KW_Bang '!')} {(-d)} {(DQ ($ VSub_Name '$symlink_target'))}) (C {(test)} {(DQ ('#!'))} {(KW_Bang '!') (Lit_Other '=')} { (DQ (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(head)} {(-c)} {(2)}] redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$symlink_target'))} ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [4724 4736] ) ) } ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symlink_target spids:[4743]) op: Equal rhs: {(../valgrind.sh)} spids: [4743] ) ] spids: [4743] ) ] spids: [16777215 4740] ) ] spids: [16777215 4747] ) (Case to_match: {(DQ ($ VSub_Name '$base'))} arms: [ (case_arm pat_list: [{(Lit_Other '*') (.sh)} {(Lit_Other '*') (.perl)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:symlink_target spids:[4767]) op: Equal rhs: {(../unprocessed-script)} spids: [4767] ) ] spids: [4767] ) ] spids: [4759 4764 16777215 4771] ) ] spids: [4750 4756 4771] ) (AndOr ops: [Op_DPipe] children: [ (C {(make_symlink)} {(DQ ($ VSub_Name '$symlink_target'))} {(DQ ($ VSub_Name '$GIT_VALGRIND') (/bin/) ($ VSub_Name '$base'))} ) (ControlFlow token:<ControlFlow_Exit exit>) ] ) ] spids: [4615] ) spids: [4610 4614] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND spids:[4803]) op: Equal rhs: {($ VSub_Name '$TEST_DIRECTORY') (/valgrind)} spids: [4803] ) ] spids: [4803] ) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$GIT_VALGRIND')) (/bin)}) (ForEach iter_name: file iter_words: [ {($ VSub_Name '$GIT_BUILD_DIR') (/git) (Lit_Other '*')} {($ VSub_Name '$GIT_BUILD_DIR') (/t/helper/test-) (Lit_Other '*')} ] do_arg_iter: F body: (DoGroup children: [(C {(make_valgrind_symlink)} {($ VSub_Name '$file')})] spids: [4833 4841] ) spids: [4823 16777215] ) (C {(make_symlink)} {(DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/mergetools)} {(DQ ($ VSub_Name '$GIT_VALGRIND') (/bin/mergetools))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:OLDIFS spids:[4861]) op: Equal rhs: {($ VSub_Name '$IFS')} spids: [4861] ) ] spids: [4861] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS spids:[4865]) op: Equal rhs: {(Lit_Other ':')} spids: [4865] ) ] spids: [4865] ) (ForEach iter_name: path iter_words: [{($ VSub_Name '$PATH')}] do_arg_iter: F body: (DoGroup children: [ (Pipeline children: [ (SimpleCommand words: [{(ls)} {(DQ ($ VSub_Name '$path')) (/git-) (Lit_Other '*')}] redirects: [(Redir op:<Redir_Great '2>'> fd:2 arg_word:{(/dev/null)})] ) (WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(file)})] body: (DoGroup children: [(C {(make_valgrind_symlink)} {(DQ ($ VSub_Name '$file'))})] spids: [4903 4913] ) ) ] negated: F ) ] spids: [4878 4916] ) spids: [4874 16777215] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS spids:[4919]) op: Equal rhs: {($ VSub_Name '$OLDIFS')} spids: [4919] ) ] spids: [4919] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH spids:[4923]) op: Equal rhs: {($ VSub_Name '$GIT_VALGRIND') (/bin) (Lit_Other ':') ($ VSub_Name '$PATH')} spids: [4923] ) ] spids: [4923] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXEC_PATH spids:[4930]) op: Equal rhs: {($ VSub_Name '$GIT_VALGRIND') (/bin)} spids: [4930] ) ] spids: [4930] ) (C {(export)} {(GIT_VALGRIND)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_MODE spids:[4940]) op: Equal rhs: {(DQ ($ VSub_Name '$valgrind'))} spids: [4940] ) ] spids: [4940] ) (C {(export)} {(GIT_VALGRIND_MODE)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_ENABLED spids:[4951]) op: Equal rhs: {(t)} spids: [4951] ) ] spids: [4951] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$valgrind_only'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_VALGRIND_ENABLED spids:[4965]) op: Equal rhs: (EmptyWord) spids: [4965] ) ] spids: [4965] ) ] ) (C {(export)} {(GIT_VALGRIND_ENABLED)}) ] spids: [16777215 4467] ) (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$GIT_TEST_INSTALLED'))})] action: [ (AndOr ops: [Op_DPipe] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXEC_PATH spids:[4985]) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {($ VSub_Name '$GIT_TEST_INSTALLED') (/git)} {(--exec-path)}) ] ) left_token: <Left_CommandSub '$('> spids: [4986 4991] ) } spids: [4985] ) ] spids: [4985] ) (C {(error)} {(DQ ('Cannot run git from ') ($ VSub_Name '$GIT_TEST_INSTALLED') (.))}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH spids:[5005]) op: Equal rhs: {($ VSub_Name '$GIT_TEST_INSTALLED') (Lit_Other ':') ($ VSub_Name '$GIT_BUILD_DIR') (Lit_Other ':') ($ VSub_Name '$PATH') } spids: [5005] ) ] spids: [5005] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXEC_PATH spids:[5013]) op: Equal rhs: { (BracedVarSub token: <VSub_Name GIT_TEST_EXEC_PATH> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {($ VSub_Name '$GIT_EXEC_PATH')} ) spids: [5014 5018] ) } spids: [5013] ) ] spids: [5013] ) ] spids: [4972 4982] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:git_bin_dir spids:[5026]) op: Equal rhs: {(DQ ($ VSub_Name '$GIT_BUILD_DIR') (/bin-wrappers))} spids: [5026] ) ] spids: [5026] ) (If arms: [ (if_arm cond: [ (Pipeline children: [(C {(test)} {(-x)} {(DQ ($ VSub_Name '$git_bin_dir') (/git))})] negated: T ) ] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$with_dashes'))})] action: [ (C {(say)} { (DQ ($ VSub_Name '$git_bin_dir') ('/git is not executable; using GIT_EXEC_PATH') ) } ) ] spids: [16777215 5061] ) ] spids: [16777215 5072] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:with_dashes spids:[5075]) op: Equal rhs: {(t)} spids: [5075] ) ] spids: [5075] ) ] spids: [16777215 5047] ) ] spids: [16777215 5079] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH spids:[5082]) op: Equal rhs: {(DQ ($ VSub_Name '$git_bin_dir') (':') ($ VSub_Name '$PATH'))} spids: [5082] ) ] spids: [5082] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXEC_PATH spids:[5090]) op: Equal rhs: {($ VSub_Name '$GIT_BUILD_DIR')} spids: [5090] ) ] spids: [5090] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$with_dashes'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:PATH spids:[5108]) op: Equal rhs: {(DQ ($ VSub_Name '$GIT_BUILD_DIR') (':') ($ VSub_Name '$PATH'))} spids: [5108] ) ] spids: [5108] ) ] spids: [16777215 5105] ) ] spids: [16777215 5116] ) ] spids: [5020 5118] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEMPLATE_DIR spids:[5120]) op: Equal rhs: {(DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/templates/blt)} spids: [5120] ) ] spids: [5120] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_CONFIG_NOSYSTEM spids:[5126]) op: Equal rhs: {(1)} spids: [5126] ) ] spids: [5126] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_ATTR_NOSYSTEM spids:[5129]) op: Equal rhs: {(1)} spids: [5129] ) ] spids: [5129] ) (C {(export)} {(PATH)} {(GIT_EXEC_PATH)} {(GIT_TEMPLATE_DIR)} {(GIT_CONFIG_NOSYSTEM)} {(GIT_ATTR_NOSYSTEM)} ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$GIT_TEST_CMP'))})] action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$GIT_TEST_CMP_USE_COPIED_CONTEXT'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_CMP spids:[5172]) op: Equal rhs: {(DQ ($ VSub_Name '$DIFF') (' -c'))} spids: [5172] ) ] spids: [5172] ) ] spids: [16777215 5169] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_CMP spids:[5182]) op: Equal rhs: {(DQ ($ VSub_Name '$DIFF') (' -u'))} spids: [5182] ) ] spids: [5182] ) ] spids: [5179 5189] ) ] spids: [16777215 5155] ) ] spids: [16777215 5191] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GITPERLLIB spids:[5194]) op: Equal rhs: {(DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/perl/blib/lib) (Lit_Other ':') (DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/perl/blib/arch/auto/Git) } spids: [5194] ) ] spids: [5194] ) (C {(export)} {(GITPERLLIB)}) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-d)} {(DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/templates/blt)}) (BraceGroup children: [(C {(error)} {(DQ ("You haven't built things yet, have you?"))})] spids: [5220] ) ] ) (If arms: [ (if_arm cond: [ (Pipeline children: [ (C {(test)} {(-x)} {(DQ ($ VSub_Name '$GIT_BUILD_DIR')) (/t/helper/test-chmtime)}) ] negated: T ) ] action: [ (SimpleCommand words: [{(echo)} {(SQ <'You need to build test-chmtime:'>)}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (SimpleCommand words: [ {(echo)} {(SQ <'Run "make t/helper/test-chmtime" in the source (toplevel) directory'>)} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 5245] ) ] spids: [16777215 5272] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TRASH_DIRECTORY spids:[5278]) op: Equal rhs: { (DQ ('trash directory.') (CommandSubPart command_list: (CommandList children: [(C {(basename)} {(DQ ($ VSub_Number '$0'))} {(.sh)})] ) left_token: <Left_CommandSub '$('> spids: [5281 5289] ) ) } spids: [5278] ) ] spids: [5278] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$root'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TRASH_DIRECTORY spids:[5302]) op: Equal rhs: {(DQ ($ VSub_Name '$root') (/) ($ VSub_Name '$TRASH_DIRECTORY'))} spids: [5302] ) ] spids: [5302] ) ] ) (Case to_match: {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))} arms: [ (case_arm pat_list:[{(/) (Lit_Other '*')}] spids:[5317 5319 5321 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:TRASH_DIRECTORY spids:[5330]) op: Equal rhs: { (DQ ($ VSub_Name '$TEST_OUTPUT_DIRECTORY') (/) ($ VSub_Name '$TRASH_DIRECTORY')) } spids: [5330] ) ] spids: [5330] ) ] spids: [5327 5328 5337 16777215] ) ] spids: [5309 5315 5339] ) (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(KW_Bang '!')} {(-z)} {(DQ ($ VSub_Name '$debug'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:remove_trash spids:[5353]) op: Equal rhs: {($ VSub_Name '$TRASH_DIRECTORY')} spids: [5353] ) ] spids: [5353] ) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(rm)} {(-fr)} {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))}) (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_EXIT_OK spids:[5369]) op: Equal rhs: {(t)} spids: [5369] ) ] spids: [5369] ) (SimpleCommand words: [{(echo)} {(DQ ('FATAL: Cannot prepare test area'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(5)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [5366] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:HOME spids:[5390]) op: Equal rhs: {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))} spids: [5390] ) ] spids: [5390] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GNUPGHOME spids:[5395]) op: Equal rhs: {(DQ ($ VSub_Name '$HOME') (/gnupg-home-not-used))} spids: [5395] ) ] spids: [5395] ) (C {(export)} {(HOME)} {(GNUPGHOME)}) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$TEST_NO_CREATE_REPO'))})] action: [(C {(test_create_repo)} {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))})] spids: [16777215 5418] ) ] else_action: [(C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))})] spids: [5427 5438] ) (AndOr ops: [Op_DPipe] children: [ (C {(cd)} {(-P)} {(DQ ($ VSub_Name '$TRASH_DIRECTORY'))}) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:this_test spids:[5461]) op: Equal rhs: { (BracedVarSub token: <VSub_Number 0> suffix_op: (StringUnary op_id:VOp1_DPound arg_word:{('*') (Lit_Slash /)}) spids: [5462 5467] ) } spids: [5461] ) ] spids: [5461] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:this_test spids:[5469]) op: Equal rhs: { (BracedVarSub token: <VSub_Name this_test> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('-*')}) spids: [5470 5474] ) } spids: [5469] ) ] spids: [5469] ) (If arms: [ (if_arm cond: [ (C {(match_pattern_list)} {(DQ ($ VSub_Name '$this_test'))} {($ VSub_Name '$GIT_SKIP_TESTS')} ) ] action: [ (SimpleCommand words: [ {(say_color)} {(info)} {(DQ ('skipping test ') ($ VSub_Name '$this_test') (' altogether'))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all spids:[5503]) op: Equal rhs: {(DQ ('skip all tests in ') ($ VSub_Name '$this_test'))} spids: [5503] ) ] spids: [5503] ) (C {(test_done)}) ] spids: [16777215 5486] ) ] spids: [16777215 5512] ) (FuncDef name: yes body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(Lit_Other '=')} {(0)})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:y spids:[5540]) op: Equal rhs: {(y)} spids: [5540] ) ] spids: [5540] ) ] spids: [16777215 5537] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:y spids:[5547]) op: Equal rhs: {(DQ ($ VSub_Star '$*'))} spids: [5547] ) ] spids: [5547] ) ] spids: [5544 5553] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:i spids:[5557]) op:Equal rhs:{(0)} spids:[5557])] spids: [5557] ) (WhileUntil keyword: <KW_While while> cond: [(C {(test)} {($ VSub_Name '$i')} {(-lt)} {(99)})] body: (DoGroup children: [ (C {(echo)} {(DQ ($ VSub_Name '$y'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:i spids:[5582]) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$i')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [5583 5588] ) } spids: [5582] ) ] spids: [5582] ) ] spids: [5572 5591] ) ) ] spids: [5523] ) spids: [5518 5522] ) (Case to_match: { (CommandSubPart command_list: (CommandList children:[(C {(uname)} {(-s)})]) left_token: <Left_CommandSub '$('> spids: [5601 5605] ) } arms: [ (case_arm pat_list: [{(Lit_Other '*') (MINGW) (Lit_Other '*')}] action: [ (FuncDef name: sort body: (BraceGroup children: [(C {(/usr/bin/sort)} {(DQ ($ VSub_At '$@'))})] spids: [5624] ) spids: [5619 5623] ) (FuncDef name: find body: (BraceGroup children: [(C {(/usr/bin/find)} {(DQ ($ VSub_At '$@'))})] spids: [5642] ) spids: [5637 5641] ) (FuncDef name: sum body: (BraceGroup children:[(C {(md5sum)} {(DQ ($ VSub_At '$@'))})] spids:[5660]) spids: [5655 5659] ) (FuncDef name: pwd body: (BraceGroup children:[(C {(builtin)} {(pwd)} {(-W)})] spids:[5682]) spids: [5677 5681] ) (C {(test_set_prereq)} {(MINGW)}) (C {(test_set_prereq)} {(NATIVE_CRLF)}) (C {(test_set_prereq)} {(SED_STRIPS_CR)}) (C {(test_set_prereq)} {(GREP_STRIPS_CR)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_TEST_CMP spids:[5727]) op: Equal rhs: {(mingw_test_cmp)} spids: [5727] ) ] spids: [5727] ) ] spids: [5609 5612 5731 16777215] ) (case_arm pat_list: [{(Lit_Other '*') (CYGWIN) (Lit_Other '*')}] action: [ (C {(test_set_prereq)} {(POSIXPERM)}) (C {(test_set_prereq)} {(EXECKEEPSPID)}) (C {(test_set_prereq)} {(CYGWIN)}) (C {(test_set_prereq)} {(SED_STRIPS_CR)}) (C {(test_set_prereq)} {(GREP_STRIPS_CR)}) ] spids: [5733 5736 5764 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(test_set_prereq)} {(POSIXPERM)}) (C {(test_set_prereq)} {(BSLASHPSPEC)}) (C {(test_set_prereq)} {(EXECKEEPSPID)}) ] spids: [5766 5767 5785 16777215] ) ] spids: [5599 5607 5787] ) (AndOr ops: [Op_DAmp] children: [ (Subshell child: (AndOr ops: [Op_DAmp] children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:COLUMNS spids:[5792]) op: Equal rhs: {(1)} spids: [5792] ) ] spids: [5792] ) (C {(test)} {($ VSub_Name '$COLUMNS')} {(Lit_Other '=')} {(1)}) ] ) spids: [5790 5805] ) (C {(test_set_prereq)} {(COLUMNS_CAN_BE_1)}) ] ) (AndOr ops: [Op_DAmp] children: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$NO_PERL'))}) (C {(test_set_prereq)} {(PERL)})] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$NO_PYTHON'))}) (C {(test_set_prereq)} {(PYTHON)}) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$USE_LIBPCRE'))}) (C {(test_set_prereq)} {(LIBPCRE)}) ] ) (AndOr ops: [Op_DAmp] children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$NO_GETTEXT'))}) (C {(test_set_prereq)} {(GETTEXT)}) ] ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$GETTEXT_POISON'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_GETTEXT_POISON spids:[5886]) op: Equal rhs: {(YesPlease)} spids: [5886] ) ] spids: [5886] ) (C {(export)} {(GIT_GETTEXT_POISON)}) (C {(test_set_prereq)} {(GETTEXT_POISON)}) ] spids: [16777215 5883] ) ] else_action: [(C {(test_set_prereq)} {(C_LOCALE_OUTPUT)})] spids: [5899 5906] ) (FuncDef name: test_i18ncmp body: (BraceGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$GETTEXT_POISON'))}) (C {(test_cmp)} {(DQ ($ VSub_At '$@'))}) ] ) ] spids: [5926] ) spids: [5921 5925] ) (FuncDef name: test_i18ngrep body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$GETTEXT_POISON'))})] action: [(C {(Lit_Other ':')})] spids: [16777215 5982] ) (if_arm cond: [(C {(test)} {(DQ ('x!'))} {(Lit_Other '=')} {(DQ (x) ($ VSub_Number '$1'))})] action: [ (C {(shift)}) (Pipeline children: [(C {(grep)} {(DQ ($ VSub_At '$@'))})] negated: T ) ] spids: [5991 6007] ) ] else_action: [(C {(grep)} {(DQ ($ VSub_At '$@'))})] spids: [6022 6032] ) ] spids: [5968] ) spids: [5963 5967] ) (C {(test_lazy_prereq)} {(PIPE)} { (SQ <'\n'> <'\t# test whether the filesystem supports FIFOs\n'> <'\tcase $(uname -s) in\n'> <'\tCYGWIN*|MINGW*)\n'> <'\t\tfalse\n'> <'\t\t;;\n'> <'\t*)\n'> <'\t\trm -f testfifo && mkfifo testfifo\n'> <'\t\t;;\n'> <'\tesac\n'> ) } ) (C {(test_lazy_prereq)} {(SYMLINKS)} { (SQ <'\n'> <'\t# test whether the filesystem supports symbolic links\n'> <'\tln -s x y && test -h y\n'> ) } ) (C {(test_lazy_prereq)} {(FILEMODE)} {(SQ <'\n'> <'\ttest "$(git config --bool core.filemode)" = true\n'>)} ) (C {(test_lazy_prereq)} {(CASE_INSENSITIVE_FS)} { (SQ <'\n'> <'\techo good >CamelCase &&\n'> <'\techo bad >camelcase &&\n'> <'\ttest "$(cat CamelCase)" != good\n'> ) } ) (C {(test_lazy_prereq)} {(UTF8_NFD_TO_NFC)} { (SQ <'\n'> <'\t# check whether FS converts nfd unicode to nfc\n'> <'\tauml=$(printf "\\303\\244")\n'> <'\taumlcdiar=$(printf "\\141\\314\\210")\n'> <'\t>"$auml" &&\n'> <'\tcase "$(echo *)" in\n'> <'\t"$aumlcdiar")\n'> <'\t\ttrue ;;\n'> <'\t*)\n'> <'\t\tfalse ;;\n'> <'\tesac\n'> ) } ) (C {(test_lazy_prereq)} {(AUTOIDENT)} { (SQ <'\n'> <'\tsane_unset GIT_AUTHOR_NAME &&\n'> <'\tsane_unset GIT_AUTHOR_EMAIL &&\n'> <'\tgit var GIT_AUTHOR_IDENT\n'> ) } ) (C {(test_lazy_prereq)} {(EXPENSIVE)} {(SQ <'\n'> <'\ttest -n "$GIT_TEST_LONG"\n'>)}) (C {(test_lazy_prereq)} {(USR_BIN_TIME)} {(SQ <'\n'> <'\ttest -x /usr/bin/time\n'>)}) (C {(test_lazy_prereq)} {(NOT_ROOT)} {(SQ <'\n'> <'\tuid=$(id -u) &&\n'> <'\ttest "$uid" != 0\n'>)}) (C {(test_lazy_prereq)} {(JGIT)} {(SQ <'\n'> <'\ttype jgit\n'>)}) (C {(test_lazy_prereq)} {(SANITY)} { (SQ <'\n'> <'\tmkdir SANETESTD.1 SANETESTD.2 &&\n'> <'\n'> <'\tchmod +w SANETESTD.1 SANETESTD.2 &&\n'> <'\t>SANETESTD.1/x 2>SANETESTD.2/x &&\n'> <'\tchmod -w SANETESTD.1 &&\n'> <'\tchmod -r SANETESTD.1/x &&\n'> <'\tchmod -rx SANETESTD.2 ||\n'> <'\terror "bug in test sript: cannot prepare SANETESTD"\n'> <'\n'> <'\t! test -r SANETESTD.1/x &&\n'> <'\t! rm SANETESTD.1/x && ! test -f SANETESTD.2/x\n'> <'\tstatus=$?\n'> <'\n'> <'\tchmod +rwx SANETESTD.1 SANETESTD.2 &&\n'> <'\trm -rf SANETESTD.1 SANETESTD.2 ||\n'> <'\terror "bug in test sript: cannot clean SANETESTD"\n'> <'\treturn $status\n'> ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_UNZIP spids:[6217]) op: Equal rhs: { (BracedVarSub token: <VSub_Name GIT_UNZIP> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(unzip)}) spids: [6218 6222] ) } spids: [6217] ) ] spids: [6217] ) (C {(test_lazy_prereq)} {(UNZIP)} {(SQ <'\n'> <'\t"$GIT_UNZIP" -v\n'> <'\ttest $? -ne 127\n'>)}) (FuncDef name: run_with_limited_cmdline body: (BraceGroup children: [ (Subshell child: (AndOr ops: [Op_DAmp] children: [(C {(ulimit)} {(-s)} {(128)}) (C {(DQ ($ VSub_At '$@'))})] ) spids: [6243 6255] ) ] spids: [6240] ) spids: [6235 6239] ) (C {(test_lazy_prereq)} {(CMDLINE_LIMIT)} {(SQ <'run_with_limited_cmdline true'>)}) (FuncDef name: build_option body: (BraceGroup children: [ (Pipeline children: [ (C {(git)} {(version)} {(--build-options)}) (C {(sed)} {(-ne)} {(DQ ('s/^') ($ VSub_Number '$1') (': //p'))}) ] negated: F ) ] spids: [6274] ) spids: [6269 6273] ) (C {(test_lazy_prereq)} {(LONG_IS_64BIT)} {(SQ <'\n'> <'\ttest 8 -le "$(build_option sizeof-long)"\n'>)} ) ] )