(CommandList children: [ (FuncDef name: test_set_editor body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:FAKE_EDITOR) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [87] ) ] spids: [87] ) (C {(export)} {(FAKE_EDITOR)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:EDITOR) op: Equal rhs: {(SQ <'"$FAKE_EDITOR"'>)} spids: [98] ) ] spids: [98] ) (C {(export)} {(EDITOR)}) ] spids: [84] ) spids: [79 83] ) (FuncDef name: test_set_index_version body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_INDEX_VERSION) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [119] ) ] spids: [119] ) (C {(export)} {(GIT_INDEX_VERSION)}) ] spids: [116] ) spids: [111 115] ) (FuncDef name: test_decode_color body: (BraceGroup children: [ (C {(awk)} { (SQ <'\n'> <'\t\tfunction name(n) {\n'> <'\t\t\tif (n == 0) return "RESET";\n'> <'\t\t\tif (n == 1) return "BOLD";\n'> <'\t\t\tif (n == 30) return "BLACK";\n'> <'\t\t\tif (n == 31) return "RED";\n'> <'\t\t\tif (n == 32) return "GREEN";\n'> <'\t\t\tif (n == 33) return "YELLOW";\n'> <'\t\t\tif (n == 34) return "BLUE";\n'> <'\t\t\tif (n == 35) return "MAGENTA";\n'> <'\t\t\tif (n == 36) return "CYAN";\n'> <'\t\t\tif (n == 37) return "WHITE";\n'> <'\t\t\tif (n == 40) return "BLACK";\n'> <'\t\t\tif (n == 41) return "BRED";\n'> <'\t\t\tif (n == 42) return "BGREEN";\n'> <'\t\t\tif (n == 43) return "BYELLOW";\n'> <'\t\t\tif (n == 44) return "BBLUE";\n'> <'\t\t\tif (n == 45) return "BMAGENTA";\n'> <'\t\t\tif (n == 46) return "BCYAN";\n'> <'\t\t\tif (n == 47) return "BWHITE";\n'> <'\t\t}\n'> <'\t\t{\n'> <'\t\t\twhile (match($0, /\\033\\[[0-9;]*m/) != 0) {\n'> <'\t\t\t\tprintf "%s<", substr($0, 1, RSTART-1);\n'> <'\t\t\t\tcodes = substr($0, RSTART+2, RLENGTH-3);\n'> <'\t\t\t\tif (length(codes) == 0)\n'> <'\t\t\t\t\tprintf "%s", name(0)\n'> <'\t\t\t\telse {\n'> <'\t\t\t\t\tn = split(codes, ary, ";");\n'> <'\t\t\t\t\tsep = "";\n'> <'\t\t\t\t\tfor (i = 1; i <= n; i++) {\n'> <'\t\t\t\t\t\tprintf "%s%s", sep, name(ary[i]);\n'> <'\t\t\t\t\t\tsep = ";"\n'> <'\t\t\t\t\t}\n'> <'\t\t\t\t}\n'> <'\t\t\t\tprintf ">";\n'> < '\t\t\t\t$0 = substr($0, RSTART + RLENGTH, length($0) - RSTART - RLENGTH + 1);\n' > <'\t\t\t}\n'> <'\t\t\tprint\n'> <'\t\t}\n'> <'\t'> ) } ) ] spids: [137] ) spids: [132 136] ) (FuncDef name: lf_to_nul body: (BraceGroup children:[(C {(perl)} {(-pe)} {(SQ <'y/\\012/\\000/'>)})] spids:[194]) spids: [189 193] ) (FuncDef name: nul_to_q body: (BraceGroup children:[(C {(perl)} {(-pe)} {(SQ <'y/\\000/Q/'>)})] spids:[213]) spids: [208 212] ) (FuncDef name: q_to_nul body: (BraceGroup children:[(C {(perl)} {(-pe)} {(SQ <'y/Q/\\000/'>)})] spids:[232]) spids: [227 231] ) (FuncDef name: q_to_cr body: (BraceGroup children:[(C {(tr)} {(Q)} {(SQ <'\\015'>)})] spids:[251]) spids: [246 250] ) (FuncDef name: q_to_tab body: (BraceGroup children:[(C {(tr)} {(Q)} {(SQ <'\\011'>)})] spids:[270]) spids: [265 269] ) (FuncDef name: qz_to_tab_space body: (BraceGroup children:[(C {(tr)} {(QZ)} {(SQ <'\\011\\040'>)})] spids:[289]) spids: [284 288] ) (FuncDef name: append_cr body: (BraceGroup children: [ (Pipeline children: [(C {(sed)} {(-e)} {(SQ <'s/$/Q/'>)}) (C {(tr)} {(Q)} {(SQ <'\\015'>)})] negated: False ) ] spids: [308] ) spids: [303 307] ) (FuncDef name: remove_cr body: (BraceGroup children: [ (Pipeline children: [(C {(tr)} {(SQ <'\\015'>)} {(Q)}) (C {(sed)} {(-e)} {(SQ <'s/Q$//'>)})] negated: False ) ] spids: [337] ) spids: [332 336] ) (FuncDef name: sane_unset body: (BraceGroup children: [ (C {(unset)} {(DQ ($ VSub_At '$@'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [382] ) spids: [377 381] ) (FuncDef name: test_tick body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (C {(test)} {(-z)} { (DQ (BracedVarSub token: <VSub_Name test_tick> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(set)}) spids: [414 418] ) ) } ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_tick) op: Equal rhs: {(1112911993)} spids: [425] ) ] spids: [425] ) ] spids: [16777215 422] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_tick) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_tick')}) right: (ArithWord w:{(Lit_Digits 60)}) ) spids: [433 440] ) } spids: [432] ) ] spids: [432] ) ] spids: [429 443] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_COMMITTER_DATE) op: Equal rhs: {(DQ ($ VSub_Name '$test_tick') (' -0700'))} spids: [446] ) ] spids: [446] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:GIT_AUTHOR_DATE) op: Equal rhs: {(DQ ($ VSub_Name '$test_tick') (' -0700'))} spids: [453] ) ] spids: [453] ) (C {(export)} {(GIT_COMMITTER_DATE)} {(GIT_AUTHOR_DATE)}) ] spids: [404] ) spids: [399 403] ) (FuncDef name: test_pause body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$verbose'))} {(Lit_Other '=')} {(t)}) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(DQ ($ VSub_Name '$SHELL_PATH'))}] redirects: [ (Redir op_id: Redir_LessAnd fd: 16777215 arg_word: {(6)} spids: [510] ) (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(3)} spids: [513] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(4)} spids: [516] ) ] ) ] spids: [16777215 503] ) ] else_action: [ (SimpleCommand words: [{(error)} {(DQ ('test_pause requires --verbose'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(5)} spids:[525])] ) ] spids: [520 533] ) ] spids: [487] ) spids: [482 486] ) (FuncDef name: debug body: (BraceGroup children: [ (SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] more_env: [(env_pair name:GIT_TEST_GDB val:{(1)} spids:[558])] ) ] spids: [555] ) spids: [550 554] ) (FuncDef name: test_commit body: (BraceGroup children: [ (AndOr children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:notick) op:Equal rhs:{(SQ )} spids:[595])] spids: [595] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:signoff) op: Equal rhs: {(SQ )} spids: [600] ) ] spids: [600] ) (AndOr children: [ (While cond: [ (C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(0)}) ] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(--notick)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:notick) op: Equal rhs: {(yes)} spids: [633] ) ] spids: [633] ) ] spids: [629 630 637 16777215] ) (case_arm pat_list: [{(--signoff)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:signoff) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [644] ) ] spids: [644] ) ] spids: [640 641 650 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [653 654 660 16777215] ) ] spids: [620 626 663] ) (C {(shift)}) ] spids: [617 669] ) ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:file) op: Equal rhs: { (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {(DQ ($ VSub_Number '$1') (.t))} ) spids: [675 682] ) } spids: [674] ) ] spids: [674] ) (AndOr children: [ (SimpleCommand words: [ {(echo)} { (DQ (BracedVarSub token: <VSub_Number 3> suffix_op: (StringUnary op_id: VTest_Hyphen arg_word: {($ VSub_Number '$1')} ) spids: [690 694] ) ) } ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Name '$file'))} spids: [697] ) ] ) (AndOr children: [ (C {(git)} {(add)} {(DQ ($ VSub_Name '$file'))}) (AndOr children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$notick'))})] action: [(C {(test_tick)})] spids: [16777215 728] ) ] spids: [16777215 734] ) (AndOr children: [ (C {(git)} {(commit)} {($ VSub_Name '$signoff')} {(-m)} {(DQ ($ VSub_Number '$1'))} ) (C {(git)} {(tag)} { (DQ (BracedVarSub token: <VSub_Number 4> suffix_op: (StringUnary op_id: VTest_ColonHyphen arg_word: {($ VSub_Number '$1')} ) spids: [759 763] ) ) } ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [592] ) spids: [587 591] ) (FuncDef name: test_merge body: (BraceGroup children: [ (AndOr children: [ (C {(test_tick)}) (AndOr children: [ (C {(git)} {(merge)} {(-m)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))}) (C {(git)} {(tag)} {(DQ ($ VSub_Number '$1'))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [781] ) spids: [776 780] ) (FuncDef name: test_chmod body: (BraceGroup children: [ (AndOr children: [ (C {(chmod)} {(DQ ($ VSub_At '$@'))}) (C {(git)} {(update-index)} {(--add)} {(DQ ('--chmod=') ($ VSub_At '$@'))}) ] op_id: Op_DAmp ) ] spids: [832] ) spids: [827 831] ) (FuncDef name: test_unconfig body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:config_dir) op:Equal rhs:{(SQ )} spids:[869])] spids: [869] ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(-C)})] action: [ (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:config_dir) op: Equal rhs: {($ VSub_Number '$1')} spids: [891] ) ] spids: [891] ) (C {(shift)}) ] spids: [16777215 885] ) ] spids: [16777215 898] ) (C {(git)} { (BracedVarSub token: <VSub_Name config_dir> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {('-C ') (DQ ($ VSub_Name '$config_dir'))} ) spids: [903 910] ) } {(config)} {(--unset-all)} {(DQ ($ VSub_At '$@'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:config_status) op: Equal rhs: {($ VSub_QMark '$?')} spids: [921] ) ] spids: [921] ) (Case to_match: {(DQ ($ VSub_Name '$config_status'))} arms: [ (case_arm pat_list: [{(5)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:config_status) op: Equal rhs: {(0)} spids: [941] ) ] spids: [941] ) ] spids: [934 935 945 16777215] ) ] spids: [925 931 948] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$config_status')} ) ] spids: [866] ) spids: [861 865] ) (FuncDef name: test_config body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:config_dir) op:Equal rhs:{(SQ )} spids:[969])] spids: [969] ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(-C)})] action: [ (C {(shift)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:config_dir) op: Equal rhs: {($ VSub_Number '$1')} spids: [991] ) ] spids: [991] ) (C {(shift)}) ] spids: [16777215 985] ) ] spids: [16777215 998] ) (AndOr children: [ (C {(test_when_finished)} { (DQ ('test_unconfig ') (BracedVarSub token: <VSub_Name config_dir> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {("-C '") ($ VSub_Name '$config_dir') ("'")} ) spids: [1005 1011] ) (" '") ($ VSub_Number '$1') ("'") ) } ) (C {(git)} { (BracedVarSub token: <VSub_Name config_dir> suffix_op: (StringUnary op_id: VTest_ColonPlus arg_word: {('-C ') (DQ ($ VSub_Name '$config_dir'))} ) spids: [1022 1029] ) } {(config)} {(DQ ($ VSub_At '$@'))} ) ] op_id: Op_DAmp ) ] spids: [966] ) spids: [961 965] ) (FuncDef name: test_config_global body: (BraceGroup children: [ (AndOr children: [ (C {(test_when_finished)} {(DQ ("test_unconfig --global '") ($ VSub_Number '$1') ("'"))}) (C {(git)} {(config)} {(--global)} {(DQ ($ VSub_At '$@'))}) ] op_id: Op_DAmp ) ] spids: [1045] ) spids: [1040 1044] ) (FuncDef name: write_script body: (BraceGroup children: [ (AndOr children: [ (BraceGroup children: [ (AndOr children: [ (C {(echo)} { (DQ ('#!') (BracedVarSub token: <VSub_Number 2> suffix_op: (StringUnary op_id: VTest_Hyphen arg_word: {(DQ ($ VSub_Name '$SHELL_PATH'))} ) spids: [1087 1093] ) ) } ) (C {(cat)}) ] op_id: Op_DAmp ) ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [1104] ) ] spids: [1080] ) (C {(chmod)} {(Lit_Other '+') (x)} {(DQ ($ VSub_Number '$1'))}) ] op_id: Op_DAmp ) ] spids: [1077] ) spids: [1072 1076] ) (FuncDef name: test_set_prereq body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:satisfied_prereq) op: Equal rhs: {(DQ ($ VSub_Name '$satisfied_prereq') ($ VSub_Number '$1') (' '))} spids: [1163] ) ] spids: [1163] ) ] spids: [1160] ) spids: [1155 1159] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:satisfied_prereq) op: Equal rhs: {(DQ (' '))} spids: [1172] ) ] spids: [1172] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lazily_testable_prereq) op: Equal rhs: {(SQ )} spids: [1177] ) (assign_pair lhs: (LhsName name:lazily_tested_prereq) op: Equal rhs: {(SQ )} spids: [1179] ) ] spids: [1177] ) (FuncDef name: test_lazy_prereq body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lazily_testable_prereq) op: Equal rhs: {(DQ ($ VSub_Name '$lazily_testable_prereq') ($ VSub_Number '$1') (' '))} spids: [1193] ) ] spids: [1193] ) (C {(eval)} {(test_prereq_lazily_) ($ VSub_Number '$1') (Lit_Other '=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (2) } ) ] spids: [1190] ) spids: [1185 1189] ) (FuncDef name: test_run_lazy_prereq_ body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:script) op: Equal rhs: { (SQ <'\n'> <'mkdir -p "$TRASH_DIRECTORY/prereq-test-dir" &&\n'> <'(\n'> <'\tcd "$TRASH_DIRECTORY/prereq-test-dir" &&'> ) (DQ ($ VSub_Number '$2')) (SQ <'\n'> <')'>) } spids: [1220] ) ] spids: [1220] ) (SimpleCommand words: [{(say)} {(DQ ('checking prerequisite: ') ($ VSub_Number '$1'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(3)} spids:[1238])] ) (SimpleCommand words: [{(say)} {(DQ ($ VSub_Name '$script'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(3)} spids:[1249])] ) (C {(test_eval_)} {(DQ ($ VSub_Name '$script'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:eval_ret) op: Equal rhs: {($ VSub_QMark '$?')} spids: [1264] ) ] spids: [1264] ) (C {(rm)} {(-rf)} {(DQ ($ VSub_Name '$TRASH_DIRECTORY') (/prereq-test-dir))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {(DQ ($ VSub_Name '$eval_ret'))} {(Lit_Other '=')} {(0)}) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(say)} {(DQ ('prerequisite ') ($ VSub_Number '$1') (' ok'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(3)} spids: [1296] ) ] ) ] spids: [16777215 1291] ) ] else_action: [ (SimpleCommand words: [{(say)} {(DQ ('prerequisite ') ($ VSub_Number '$1') (' not satisfied'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(3)} spids:[1311])] ) ] spids: [1306 1321] ) (ControlFlow token: <ControlFlow_Return return> arg_word: {($ VSub_Name '$eval_ret')} ) ] spids: [1217] ) spids: [1212 1216] ) (FuncDef name: test_have_prereq body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:save_IFS) op: Equal rhs: {($ VSub_Name '$IFS')} spids: [1343] ) ] spids: [1343] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {(Lit_Comma ',')} spids: [1347] ) ] spids: [1347] ) (C {(set)} {(--)} {($ VSub_Star '$*')}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {($ VSub_Name '$save_IFS')} spids: [1358] ) ] spids: [1358] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:total_prereq) op:Equal rhs:{(0)} spids:[1363])] spids: [1363] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:ok_prereq) op:Equal rhs:{(0)} spids:[1367])] spids: [1367] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:missing_prereq) op: Equal rhs: {(SQ )} spids: [1371] ) ] spids: [1371] ) (ForEach iter_name: prerequisite do_arg_iter: True body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Name '$prerequisite'))} arms: [ (case_arm pat_list: [{(KW_Bang '!') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:negative_prereq) op: Equal rhs: {(t)} spids: [1397] ) ] spids: [1397] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prerequisite) op: Equal rhs: { (BracedVarSub token: <VSub_Name prerequisite> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('!')}) spids: [1402 1406] ) } spids: [1401] ) ] spids: [1401] ) ] spids: [1392 1394 1409 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:negative_prereq) op: Equal rhs: {(SQ )} spids: [1416] ) ] spids: [1416] ) ] spids: [1412 1413 16777215 1419] ) ] spids: [1383 1389 1419] ) (Case to_match: {(DQ (' ') ($ VSub_Name '$lazily_tested_prereq') (' '))} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (DQ (' ') ($ VSub_Name '$prerequisite') (' ')) (Lit_Other '*') } ] spids: [1434 1441 1444 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Case to_match: {(DQ (' ') ($ VSub_Name '$lazily_testable_prereq') (' '))} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (DQ (' ') ($ VSub_Name '$prerequisite') (' ')) (Lit_Other '*') } ] action: [ (AndOr children: [ (C {(eval)} { (DQ ('script=') (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) (test_prereq_lazily_) ($ VSub_Name '$prerequisite') ) } ) (If arms: [ (if_arm cond: [ (C {(test_run_lazy_prereq_)} {(DQ ($ VSub_Name '$prerequisite'))} {(DQ ($ VSub_Name '$script'))} ) ] action: [ (C {(test_set_prereq)} {($ VSub_Name '$prerequisite')}) ] spids: [16777215 1497] ) ] spids: [16777215 1505] ) ] op_id: Op_DAmp ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:lazily_tested_prereq) op: Equal rhs: { (DQ ($ VSub_Name '$lazily_tested_prereq') ($ VSub_Name '$prerequisite') (' ') ) } spids: [1508] ) ] spids: [1508] ) ] spids: [1462 1469 16777215 1516] ) ] spids: [1451 1459 1516] ) ] spids: [1447 1448 1519 16777215] ) ] spids: [1423 1431 1522] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:total_prereq) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$total_prereq')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [1527 1534] ) } spids: [1526] ) ] spids: [1526] ) (Case to_match: {(DQ ($ VSub_Name '$satisfied_prereq'))} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (DQ (' ') ($ VSub_Name '$prerequisite') (' ')) (Lit_Other '*') } ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:satisfied_this_prereq) op: Equal rhs: {(t)} spids: [1556] ) ] spids: [1556] ) ] spids: [1546 1553 1560 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:satisfied_this_prereq) op: Equal rhs: {(SQ )} spids: [1567] ) ] spids: [1567] ) ] spids: [1563 1564 16777215 1570] ) ] spids: [1537 1543 1570] ) (Case to_match: { (DQ ($ VSub_Name '$satisfied_this_prereq') (',') ($ VSub_Name '$negative_prereq') ) } arms: [ (case_arm pat_list: [{(t) (Lit_Comma ',')} {(Lit_Comma ',') (t)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ok_prereq) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$ok_prereq')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [1594 1601] ) } spids: [1593] ) ] spids: [1593] ) ] spids: [1585 1590 1604 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:prerequisite) op: Equal rhs: { (BracedVarSub token: <VSub_Name negative_prereq> suffix_op: (StringUnary op_id:VTest_ColonPlus arg_word:{('!')}) spids: [1620 1624] ) ($ VSub_Name '$prerequisite') } spids: [1619] ) ] spids: [1619] ) (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$missing_prereq'))})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:missing_prereq) op: Equal rhs: {($ VSub_Name '$prerequisite')} spids: [1642] ) ] spids: [1642] ) ] spids: [16777215 1639] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:missing_prereq) op: Equal rhs: { (DQ ($ VSub_Name '$prerequisite') (',') ($ VSub_Name '$missing_prereq') ) } spids: [1649] ) ] spids: [1649] ) ] spids: [1646 1657] ) ] spids: [1607 1608 16777215 1660] ) ] spids: [1574 1582 1660] ) ] spids: [1380 1663] ) spids: [16777215 16777215] ) (C {(test)} {($ VSub_Name '$total_prereq')} {(Lit_Other '=')} {($ VSub_Name '$ok_prereq')}) ] spids: [1336] ) spids: [1331 1335] ) (FuncDef name: test_declared_prereq body: (BraceGroup children: [ (Case to_match: {(DQ (',') ($ VSub_Name '$test_prereq') (','))} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (Lit_Comma ',') ($ VSub_Number '$1') (Lit_Comma ',') (Lit_Other '*') } ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [1697 1702 1710 16777215] ) ] spids: [1686 1694 1713] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [1683] ) spids: [1678 1682] ) (FuncDef name: test_verify_prereq body: (BraceGroup children: [ (AndOr children: [ (C {(test)} {(-z)} {(DQ ($ VSub_Name '$test_prereq'))}) (AndOr children: [ (SimpleCommand words: [ {(expr)} {(DQ ($ VSub_Name '$test_prereq'))} {(Lit_Other ':')} {(SQ <'[A-Z0-9_,!]*$'>)} ] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(/dev/null)} spids: [1744] ) ] ) (C {(error)} { (DQ ("bug in the test script: '") ($ VSub_Name '$test_prereq') ("' does not look like a prereq") ) } ) ] op_id: Op_DPipe ) ] op_id: Op_DPipe ) ] spids: [1728] ) spids: [1723 1727] ) (FuncDef name: test_expect_failure body: (BraceGroup children: [ (C {(test_start_)}) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(3)}) (AndOr children: [ (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_prereq) op: Equal rhs: {($ VSub_Number '$1')} spids: [1796] ) ] spids: [1796] ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(shift)}) terminator: <Op_Semi ';'> ) ] spids: [1794] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_prereq) op: Equal rhs: {(SQ )} spids: [1807] ) ] spids: [1807] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(2)}) (C {(error)} {(DQ ('bug in the test script: not 2 or 3 parameters to test-expect-failure'))} ) ] op_id: Op_DPipe ) (C {(test_verify_prereq)}) (C {(export)} {(test_prereq)}) (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test_skip)} {(DQ ($ VSub_At '$@'))})] negated:True)] action: [ (SimpleCommand words: [{(say)} {(DQ ('checking known breakage: ') ($ VSub_Number '$2'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(3)} spids: [1854] ) ] ) (If arms: [ (if_arm cond: [(C {(test_run_)} {(DQ ($ VSub_Number '$2'))} {(expecting_failure)})] action: [(C {(test_known_broken_ok_)} {(DQ ($ VSub_Number '$1'))})] spids: [16777215 1874] ) ] else_action: [(C {(test_known_broken_failure_)} {(DQ ($ VSub_Number '$1'))})] spids: [1884 1894] ) ] spids: [16777215 1849] ) ] spids: [16777215 1897] ) (C {(test_finish_)}) ] spids: [1776] ) spids: [1771 1775] ) (FuncDef name: test_expect_success body: (BraceGroup children: [ (C {(test_start_)}) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(3)}) (AndOr children: [ (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_prereq) op: Equal rhs: {($ VSub_Number '$1')} spids: [1930] ) ] spids: [1930] ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(shift)}) terminator: <Op_Semi ';'> ) ] spids: [1928] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_prereq) op: Equal rhs: {(SQ )} spids: [1941] ) ] spids: [1941] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(2)}) (C {(error)} {(DQ ('bug in the test script: not 2 or 3 parameters to test-expect-success'))} ) ] op_id: Op_DPipe ) (C {(test_verify_prereq)}) (C {(export)} {(test_prereq)}) (If arms: [ (if_arm cond: [(Pipeline children:[(C {(test_skip)} {(DQ ($ VSub_At '$@'))})] negated:True)] action: [ (SimpleCommand words: [{(say)} {(DQ ('expecting success: ') ($ VSub_Number '$2'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(3)} spids: [1988] ) ] ) (If arms: [ (if_arm cond: [(C {(test_run_)} {(DQ ($ VSub_Number '$2'))})] action: [(C {(test_ok_)} {(DQ ($ VSub_Number '$1'))})] spids: [16777215 2006] ) ] else_action: [(C {(test_failure_)} {(DQ ($ VSub_At '$@'))})] spids: [2016 2026] ) ] spids: [16777215 1983] ) ] spids: [16777215 2029] ) (C {(test_finish_)}) ] spids: [1910] ) spids: [1905 1909] ) (FuncDef name: test_external body: (BraceGroup children: [ (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(4)}) (AndOr children: [ (BraceGroup children: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_prereq) op: Equal rhs: {($ VSub_Number '$1')} spids: [2083] ) ] spids: [2083] ) terminator: <Op_Semi ';'> ) (Sentence child: (C {(shift)}) terminator: <Op_Semi ';'> ) ] spids: [2081] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_prereq) op: Equal rhs: {(SQ )} spids: [2094] ) ] spids: [2094] ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(3)}) (SimpleCommand words: [ {(error)} {(DQ ('bug in the test script: not 3 or 4 parameters to test_external'))} ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(5)} spids:[2112])] ) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:descr) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2120] ) ] spids: [2120] ) (C {(shift)}) (C {(test_verify_prereq)}) (C {(export)} {(test_prereq)}) (If arms: [ (if_arm cond: [ (Pipeline children: [(C {(test_skip)} {(DQ ($ VSub_Name '$descr'))} {(DQ ($ VSub_At '$@'))})] negated: True ) ] action: [ (C {(say_color)} {(DQ )} { (DQ ('# run ') ($ VSub_Name '$test_count') (': ') ($ VSub_Name '$descr') (' (') ($ VSub_Star '$*') (')') ) } ) (C {(export)} {(TEST_DIRECTORY)} {(TRASH_DIRECTORY)} {(GIT_TEST_LONG)}) (SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:2 arg_word:{(4)} spids:[2212])] ) (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_QMark '$?'))} {(Lit_Other '=')} {(0)})] action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name '$test_external_has_tap')} {(-eq)} {(0)} ) terminator: <Op_Semi ';'> ) ] action: [(C {(test_ok_)} {(DQ ($ VSub_Name '$descr'))})] spids: [16777215 2243] ) ] else_action: [ (C {(say_color)} {(DQ )} {(DQ ('# test_external test ') ($ VSub_Name '$descr') (' was ok'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_success) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_success')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2269 2276] ) } spids: [2268] ) ] spids: [2268] ) ] spids: [2253 2279] ) ] spids: [16777215 2229] ) ] else_action: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name '$test_external_has_tap')} {(-eq)} {(0)}) terminator: <Op_Semi ';'> ) ] action: [ (C {(test_failure_)} {(DQ ($ VSub_Name '$descr'))} {(DQ ($ VSub_At '$@'))} ) ] spids: [16777215 2296] ) ] else_action: [ (C {(say_color)} {(error)} { (DQ ('# test_external test ') ($ VSub_Name '$descr') (' failed: ') ($ VSub_At '$@') ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_failure) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_failure')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2326 2333] ) } spids: [2325] ) ] spids: [2325] ) ] spids: [2310 2336] ) ] spids: [2282 2339] ) ] spids: [16777215 2152] ) ] spids: [16777215 2342] ) ] spids: [2066] ) spids: [2061 2065] ) (FuncDef name: test_external_without_stderr body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:tmp) op: Equal rhs: { (BracedVarSub token: <VSub_Name TMPDIR> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(Lit_Slash /) (tmp)}) spids: [2370 2375] ) } spids: [2369] ) ] spids: [2369] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:stderr) op: Equal rhs: {(DQ ($ VSub_Name '$tmp') (/git-external-stderr.) ($ VSub_Dollar '$$') (.tmp))} spids: [2378] ) ] spids: [2378] ) (SimpleCommand words: [{(test_external)} {(DQ ($ VSub_At '$@'))}] redirects: [ (Redir op_id: Redir_Great fd: 4 arg_word: {(DQ ($ VSub_Name '$stderr'))} spids: [2393] ) ] ) (AndOr children: [ (C {(test)} {(-f)} {(DQ ($ VSub_Name '$stderr'))}) (C {(error)} {(DQ ('Internal error: ') ($ VSub_Name '$stderr') (' disappeared.'))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:descr) op: Equal rhs: {(DQ ('no stderr: ') ($ VSub_Number '$1'))} spids: [2419] ) ] spids: [2419] ) (C {(shift)}) (SimpleCommand words: [{(say)} {(DQ ('# expecting no stderr from previous command'))}] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(3)} spids:[2431])] ) (If arms: [ (if_arm cond: [(C {(test)} {(KW_Bang '!')} {(-s)} {(DQ ($ VSub_Name '$stderr'))})] action: [ (C {(rm)} {(DQ ($ VSub_Name '$stderr'))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name '$test_external_has_tap')} {(-eq)} {(0)}) terminator: <Op_Semi ';'> ) ] action: [(C {(test_ok_)} {(DQ ($ VSub_Name '$descr'))})] spids: [16777215 2474] ) ] else_action: [ (C {(say_color)} {(DQ )} { (DQ ('# test_external_without_stderr test ') ($ VSub_Name '$descr') (' was ok') ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_success) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_success')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2500 2507] ) } spids: [2499] ) ] spids: [2499] ) ] spids: [2484 2510] ) ] spids: [16777215 2452] ) ] else_action: [ (If arms: [ (if_arm cond: [(C {(test)} {(DQ ($ VSub_Name '$verbose'))} {(Lit_Other '=')} {(t)})] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (Sentence child: (C {(echo)}) terminator: <Op_Semi ';'> ) (Sentence child: (C {(echo)} {(DQ ('# Stderr is:'))}) terminator: <Op_Semi ';'> ) (C {(cat)} {(DQ ($ VSub_Name '$stderr'))}) ] ) left_token: <Left_CommandSub '$('> spids: [2533 2549] ) } spids: [2532] ) ] spids: [2532] ) ] spids: [16777215 2529] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: {(SQ )} spids: [2555] ) ] spids: [2555] ) ] spids: [2552 2558] ) (C {(rm)} {(DQ ($ VSub_Name '$stderr'))}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(test)} {($ VSub_Name '$test_external_has_tap')} {(-eq)} {(0)}) terminator: <Op_Semi ';'> ) ] action: [ (C {(test_failure_)} {(DQ ($ VSub_Name '$descr'))} {(DQ ($ VSub_At '$@'))} {(DQ ($ VSub_Name '$output'))} ) ] spids: [16777215 2583] ) ] else_action: [ (C {(say_color)} {(error)} { (DQ ('# test_external_without_stderr test ') ($ VSub_Name '$descr') (' failed: ') ($ VSub_At '$@') (': ') ($ VSub_Name '$output') ) } ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_failure) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_failure')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [2619 2626] ) } spids: [2618] ) ] spids: [2618] ) ] spids: [2601 2629] ) ] spids: [2513 2632] ) ] spids: [2358] ) spids: [2353 2357] ) (FuncDef name: test_path_is_file body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [(C {(test)} {(-f)} {(DQ ($ VSub_Number '$1'))})] negated: True ) ] action: [ (C {(echo)} {(DQ ('File ') ($ VSub_Number '$1') (" doesn't exist. ") ($ VSub_Number '$2'))} ) (C {(false)}) ] spids: [16777215 2667] ) ] spids: [16777215 2683] ) ] spids: [2651] ) spids: [2646 2650] ) (FuncDef name: test_path_is_dir body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Pipeline children: [(C {(test)} {(-d)} {(DQ ($ VSub_Number '$1'))})] negated: True ) ] action: [ (C {(echo)} { (DQ ('Directory ') ($ VSub_Number '$1') (" doesn't exist. ") ($ VSub_Number '$2') ) } ) (C {(false)}) ] spids: [16777215 2709] ) ] spids: [16777215 2725] ) ] spids: [2693] ) spids: [2688 2692] ) (FuncDef name: test_dir_is_empty body: (BraceGroup children: [ (AndOr children: [ (C {(test_path_is_dir)} {(DQ ($ VSub_Number '$1'))}) (If arms: [ (if_arm cond: [ (C {(test)} {(-n)} { (DQ (CommandSubPart command_list: (CommandList children: [ (Pipeline children: [ (C {(ls)} {(-a1)} {(DQ ($ VSub_Number '$1'))}) (C {(egrep)} {(-v)} {(SQ <'^\\.\\.?$'>)}) ] negated: False ) ] ) left_token: <Left_CommandSub '$('> spids: [2757 2775] ) ) } ) ] action: [ (C {(echo)} { (DQ ("Directory '") ($ VSub_Number '$1') ("' is not empty, it contains:")) } ) (C {(ls)} {(-la)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token: <ControlFlow_Return return> arg_word: {(1)} ) ] spids: [16777215 2779] ) ] spids: [16777215 2805] ) ] op_id: Op_DAmp ) ] spids: [2738] ) spids: [2733 2737] ) (FuncDef name: test_path_is_missing body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-e)} {(DQ ($ VSub_Number '$1'))})] action: [ (C {(echo)} {(DQ ('Path exists:'))}) (C {(ls)} {(-ld)} {(DQ ($ VSub_Number '$1'))}) (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(-ge)} {(1)})] action: [(C {(echo)} {(DQ ($ VSub_Star '$*'))})] spids: [16777215 2859] ) ] spids: [16777215 2869] ) (C {(false)}) ] spids: [16777215 2829] ) ] spids: [16777215 2875] ) ] spids: [2815] ) spids: [2810 2814] ) (FuncDef name: test_line_count body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {($ VSub_Pound '$#')} {(KW_Bang '!') (Lit_Other '=')} {(3)})] action: [ (C {(error)} {(DQ ('bug in the test script: not 3 parameters to test_line_count'))}) ] spids: [16777215 2931] ) (if_arm cond: [ (Pipeline children: [ (C {(test)} { (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(wc)} {(-l)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$3'))} spids: [2952] ) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [2947 2956] ) } {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))} ) ] negated: True ) ] action: [ (C {(echo)} { (DQ ('test_line_count: line count for ') ($ VSub_Number '$3') (' !') ($ VSub_Number '$1') (' ') ($ VSub_Number '$2') ) } ) (C {(cat)} {(DQ ($ VSub_Number '$3'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [2941 2967] ) ] spids: [16777215 2994] ) ] spids: [2916] ) spids: [2911 2915] ) (FuncDef name: list_contains body: (BraceGroup children: [ (Case to_match: {(DQ (',') ($ VSub_Number '$1') (','))} arms: [ (case_arm pat_list: [ {(Lit_Other '*') (Lit_Comma ',') ($ VSub_Number '$2') (Lit_Comma ',') (Lit_Other '*') } ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [3034 3039 3047 16777215] ) ] spids: [3023 3031 3050] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3020] ) spids: [3015 3019] ) (FuncDef name: test_must_fail body: (BraceGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(Lit_VarLike 'ok=') (Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_test_ok) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('ok=')}) spids: [3117 3121] ) } spids: [3116] ) ] spids: [3116] ) (C {(shift)}) ] spids: [3111 3113 3127 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:_test_ok) op: Equal rhs: {(SQ )} spids: [3134] ) ] spids: [3134] ) ] spids: [3130 3131 3137 16777215] ) ] spids: [3102 3108 3140] ) (C {(DQ ($ VSub_At '$@'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exit_code) op: Equal rhs: {($ VSub_QMark '$?')} spids: [3148] ) ] spids: [3148] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {($ VSub_Name '$exit_code')} {(-eq)} {(0)}) (Pipeline children: [(C {(list_contains)} {(DQ ($ VSub_Name '$_test_ok'))} {(success)})] negated: True ) ] op_id: Op_DAmp ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('test_must_fail: command succeeded: ') ($ VSub_Star '$*'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [3180] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 3175] ) (if_arm cond: [ (AndOr children: [ (C {(test_match_signal)} {(13)} {($ VSub_Name '$exit_code')}) (C {(list_contains)} {(DQ ($ VSub_Name '$_test_ok'))} {(sigpipe)}) ] op_id: Op_DAmp ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [3194 3213] ) (if_arm cond: [ (AndOr children: [ (C {(test)} {($ VSub_Name '$exit_code')} {(-gt)} {(129)}) (C {(test)} {($ VSub_Name '$exit_code')} {(-le)} {(192)}) ] op_id: Op_DAmp ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('test_must_fail: died by signal ') (ArithSubPart anode: (ArithBinary op_id: Arith_Minus left: (ArithWord w:{($ VSub_Name '$exit_code')}) right: (ArithWord w:{(Lit_Digits 128)}) ) spids: [3252 3259] ) (': ') ($ VSub_Star '$*') ) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [3247] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3221 3242] ) (if_arm cond: [(C {(test)} {($ VSub_Name '$exit_code')} {(-eq)} {(127)})] action: [ (SimpleCommand words: [{(echo)} {(DQ ('test_must_fail: command not found: ') ($ VSub_Star '$*'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [3286] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3270 3281] ) (if_arm cond: [(C {(test)} {($ VSub_Name '$exit_code')} {(-eq)} {(126)})] action: [ (SimpleCommand words: [{(echo)} {(DQ ('test_must_fail: valgrind error: ') ($ VSub_Star '$*'))}] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(2)} spids: [3316] ) ] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3300 3311] ) ] spids: [16777215 3330] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [3099] ) spids: [3094 3098] ) (FuncDef name: test_might_fail body: (BraceGroup children: [(C {(test_must_fail)} {(Lit_VarLike 'ok=') (success)} {(DQ ($ VSub_At '$@'))})] spids: [3376] ) spids: [3371 3375] ) (FuncDef name: test_expect_code body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:want_code) op: Equal rhs: {($ VSub_Number '$1')} spids: [3418] ) ] spids: [3418] ) (C {(shift)}) (C {(DQ ($ VSub_At '$@'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:exit_code) op: Equal rhs: {($ VSub_QMark '$?')} spids: [3430] ) ] spids: [3430] ) (If arms: [ (if_arm cond: [ (C {(test)} {($ VSub_Name '$exit_code')} {(Lit_Other '=')} {($ VSub_Name '$want_code')} ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 3445] ) ] spids: [16777215 3453] ) (SimpleCommand words: [ {(echo)} { (DQ ('test_expect_code: command exited with ') ($ VSub_Name '$exit_code') (', we wanted ') ($ VSub_Name '$want_code') (' ') ($ VSub_Star '$*') ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[3459])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3415] ) spids: [3410 3414] ) (FuncDef name: test_cmp body: (BraceGroup children: [(C {($ VSub_Name '$GIT_TEST_CMP')} {(DQ ($ VSub_At '$@'))})] spids: [3520] ) spids: [3516 3519] ) (FuncDef name: test_cmp_bin body: (BraceGroup children:[(C {(cmp)} {(DQ ($ VSub_At '$@'))})] spids:[3540]) spids: [3536 3539] ) (FuncDef name: verbose body: (BraceGroup children: [ (AndOr children: [ (C {(DQ ($ VSub_At '$@'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] op_id: Op_DAmp ) (SimpleCommand words: [ {(echo)} { (DQ ('command failed: ') (CommandSubPart command_list: (CommandList children: [(C {(git)} {(rev-parse)} {(--sq-quote)} {(DQ ($ VSub_At '$@'))})] ) left_token: <Left_CommandSub '$('> spids: [3587 3597] ) ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:16777215 arg_word:{(2)} spids:[3582])] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [3566] ) spids: [3561 3565] ) (FuncDef name: test_must_be_empty body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test)} {(-s)} {(DQ ($ VSub_Number '$1'))})] action: [ (C {(echo)} {(DQ ("'") ($ VSub_Number '$1') ("' is not empty, it contains:"))}) (C {(cat)} {(DQ ($ VSub_Number '$1'))}) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 3634] ) ] spids: [16777215 3658] ) ] spids: [3620] ) spids: [3615 3619] ) (FuncDef name: test_cmp_rev body: (BraceGroup children: [ (AndOr children: [ (SimpleCommand words: [{(git)} {(rev-parse)} {(--verify)} {(DQ ($ VSub_Number '$1'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(expect.rev)} spids: [3684] ) ] ) (AndOr children: [ (SimpleCommand words: [{(git)} {(rev-parse)} {(--verify)} {(DQ ($ VSub_Number '$2'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(actual.rev)} spids: [3700] ) ] ) (C {(test_cmp)} {(expect.rev)} {(actual.rev)}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [3671] ) spids: [3666 3670] ) (FuncDef name: test_seq body: (BraceGroup children: [ (Case to_match: {($ VSub_Pound '$#')} arms: [ (case_arm pat_list: [{(1)}] action: [(C {(set)} {(1)} {(DQ ($ VSub_At '$@'))})] spids: [3752 3753 3763 16777215] ) (case_arm pat_list:[{(2)}] spids:[3766 3767 3769 16777215]) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(error)} {(DQ ('bug in the test script: not 1 or 2 parameters to test_seq'))}) ] spids: [3772 3773 3781 16777215] ) ] spids: [3745 3749 3784] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_seq_counter__) op: Equal rhs: {($ VSub_Number '$1')} spids: [3787] ) ] spids: [3787] ) (While cond: [ (C {(test)} {(DQ ($ VSub_Name '$test_seq_counter__'))} {(-le)} {(DQ ($ VSub_Number '$2'))}) ] body: (DoGroup children: [ (C {(echo)} {(DQ ($ VSub_Name '$test_seq_counter__'))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_seq_counter__) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name '$test_seq_counter__')}) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [3817 3826] ) } spids: [3816] ) ] spids: [3816] ) ] spids: [3806 3829] ) ) ] spids: [3742] ) spids: [3737 3741] ) (FuncDef name: test_when_finished body: (BraceGroup children: [ (AndOr children: [ (C {(test)} { (DQ (BracedVarSub token: <VSub_Name BASH_SUBSHELL> suffix_op: (StringUnary op_id:VTest_Hyphen arg_word:{(0)}) spids: [3924 3928] ) ) } {(Lit_Other '=')} {(0)} ) (C {(error)} {(DQ ('bug in test script: test_when_finished does nothing in a subshell'))} ) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:test_cleanup) op: Equal rhs: { (DQ ('{ ') ($ VSub_Star '$*') ('\n') ('\t\t} && (exit ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (eval_ret) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ('); eval_ret=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('?; ') ($ VSub_Name '$test_cleanup') ) } spids: [3945] ) ] spids: [3945] ) ] spids: [3906] ) spids: [3901 3905] ) (FuncDef name: test_create_repo body: (BraceGroup children: [ (AndOr children: [ (C {(test)} {(DQ ($ VSub_Pound '$#'))} {(Lit_Other '=')} {(1)}) (C {(error)} {(DQ ('bug in the test script: not 1 parameter to test-create-repo'))}) ] op_id: Op_DPipe ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:repo) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [3998] ) ] spids: [3998] ) (C {(mkdir)} {(-p)} {(DQ ($ VSub_Name '$repo'))}) (AndOr children: [ (Subshell child: (CommandList children: [ (AndOr children: [ (C {(cd)} {(DQ ($ VSub_Name '$repo'))}) (C {(error)} {(DQ ('Cannot setup test environment'))}) ] op_id: Op_DPipe ) (AndOr children: [ (SimpleCommand words: [ {(DQ ($ VSub_Name '$GIT_EXEC_PATH') (/git-init))} { (DQ ('--template=') ($ VSub_Name '$GIT_BUILD_DIR') (/templates/blt/)) } ] redirects: [ (Redir op_id: Redir_GreatAnd fd: 16777215 arg_word: {(3)} spids: [4042] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(4)} spids: [4045] ) ] ) (C {(error)} {(DQ ('cannot run git init -- have you built things yet?'))}) ] op_id: Op_DPipe ) (C {(mv)} {(.git/hooks)} {(.git/hooks-disabled)}) ] ) spids: [4013 4065] ) (C {(exit)}) ] op_id: Op_DPipe ) ] spids: [3975] ) spids: [3970 3974] ) (FuncDef name: test_ln_s_add body: (BraceGroup children: [ (If arms: [ (if_arm cond: [(C {(test_have_prereq)} {(SYMLINKS)})] action: [ (AndOr children: [ (C {(ln)} {(-s)} {(DQ ($ VSub_Number '$1'))} {(DQ ($ VSub_Number '$2'))}) (C {(git)} {(update-index)} {(--add)} {(DQ ($ VSub_Number '$2'))}) ] op_id: Op_DAmp ) ] spids: [16777215 4102] ) ] else_action: [ (AndOr children: [ (SimpleCommand words: [{(printf)} {(SQ <'%s'>)} {(DQ ($ VSub_Number '$1'))}] redirects: [ (Redir op_id: Redir_Great fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} spids: [4144] ) ] ) (AndOr children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:ln_s_obj) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(git)} {(hash-object)} {(-w)} {(DQ ($ VSub_Number '$2'))}) ] ) left_token: <Left_CommandSub '$('> spids: [4153 4163] ) } spids: [4152] ) ] spids: [4152] ) (AndOr children: [ (C {(git)} {(update-index)} {(--add)} {(--cacheinfo)} {(120000)} {($ VSub_Name '$ln_s_obj')} {(DQ ($ VSub_Number '$2'))} ) (C {(git)} {(update-index)} {(DQ ($ VSub_Number '$2'))}) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [4131 4200] ) ] spids: [4092] ) spids: [4087 4091] ) (FuncDef name: test_write_lines body: (BraceGroup children: [(C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_At '$@'))})] spids: [4213] ) spids: [4208 4212] ) (FuncDef name: perl body: (BraceGroup children: [(C {(command)} {(DQ ($ VSub_Name '$PERL_PATH'))} {(DQ ($ VSub_At '$@'))})] spids: [4236] ) spids: [4231 4235] ) (FuncDef name: test_normalize_bool body: (BraceGroup children: [ (SimpleCommand words: [ {(git)} {(-c)} {(magic.variable) (Lit_Other '=') (DQ ($ VSub_Number '$1'))} {(config)} {(--bool)} {(magic.variable)} ] redirects: [(Redir op_id:Redir_Great fd:2 arg_word:{(/dev/null)} spids:[4279])] ) ] spids: [4260] ) spids: [4255 4259] ) (FuncDef name: test_tristate body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (C {(eval)} { (DQ ('test x') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{') ($ VSub_Number '$1') ('+isset}') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' = xisset') ) } ) ] action: [ (C {(eval)} { (DQ ('\n') ('\t\t\tcase ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ($ VSub_Number '$1') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' in\n') ("\t\t\t'')\t") ($ VSub_Number '$1') ('=false ;;\n') ('\t\t\tauto)\t;;\n') ('\t\t\t*)\t') ($ VSub_Number '$1') ('=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('(test_normalize_bool ') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ($ VSub_Number '$1') (' || echo true) ;;\n') ('\t\t\tesac\n') ('\t\t') ) } ) ] spids: [16777215 4355] ) ] else_action: [(C {(eval)} {(DQ ($ VSub_Number '$1') ('=auto'))})] spids: [4389 4400] ) ] spids: [4336] ) spids: [4331 4335] ) (FuncDef name: test_skip_or_die body: (BraceGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(auto)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skip_all) op: Equal rhs: {($ VSub_Number '$2')} spids: [4447] ) ] spids: [4447] ) (C {(test_done)}) ] spids: [4443 4444 4454 16777215] ) (case_arm pat_list: [{(true)}] action: [(C {(error)} {(DQ ($ VSub_Number '$2'))})] spids: [4457 4458 4468 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [ (C {(error)} { (DQ ("BUG: test tristate is '") ($ VSub_Number '$1') ("' (real error: ") ($ VSub_Number '$2') (')') ) } ) ] spids: [4471 4472 16777215 4486] ) ] spids: [4434 4440 4486] ) ] spids: [4431] ) spids: [4426 4430] ) (FuncDef name: mingw_test_cmp body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:test_cmp_a) op: Equal rhs: {(SQ )} spids: [4522] ) (assign_pair lhs: (LhsName name:test_cmp_b) op: Equal rhs: {(SQ )} spids: [4524] ) ] spids: [4520] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:stdin_for_diff) op: Equal rhs: {(SQ )} spids: [4538] ) ] spids: [4536] ) (If arms: [ (if_arm cond: [ (AndOr children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Number '$1'))}) (C {(test)} {(-s)} {(DQ ($ VSub_Number '$2'))}) ] op_id: Op_DAmp ) ] action: [ (SimpleCommand words: [{(mingw_read_file_strip_cr_)} {(test_cmp_a)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [4586] ) ] ) (SimpleCommand words: [{(mingw_read_file_strip_cr_)} {(test_cmp_b)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} spids: [4596] ) ] ) ] spids: [16777215 4575] ) (if_arm cond: [ (AndOr children: [ (C {(test)} {(-s)} {(DQ ($ VSub_Number '$1'))}) (C {(test)} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} {(-)}) ] op_id: Op_DAmp ) ] action: [ (SimpleCommand words: [{(mingw_read_file_strip_cr_)} {(test_cmp_a)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$1'))} spids: [4636] ) ] ) (C {(mingw_read_file_strip_cr_)} {(test_cmp_b)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:stdin_for_diff) op: Equal rhs: {(SQ <'<<<"$test_cmp_b"'>)} spids: [4647] ) ] spids: [4647] ) ] spids: [4602 4625] ) (if_arm cond: [ (AndOr children: [ (C {(test)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(-)}) (C {(test)} {(-s)} {(DQ ($ VSub_Number '$2'))}) ] op_id: Op_DAmp ) ] action: [ (C {(mingw_read_file_strip_cr_)} {(test_cmp_a)}) (SimpleCommand words: [{(mingw_read_file_strip_cr_)} {(test_cmp_b)}] redirects: [ (Redir op_id: Redir_Less fd: 16777215 arg_word: {(DQ ($ VSub_Number '$2'))} spids: [4692] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:stdin_for_diff) op: Equal rhs: {(SQ <'<<<"$test_cmp_a"'>)} spids: [4698] ) ] spids: [4698] ) ] spids: [4653 4676] ) ] spids: [16777215 4704] ) (AndOr children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$test_cmp_a'))}) (AndOr children: [ (C {(test)} {(-n)} {(DQ ($ VSub_Name '$test_cmp_b'))}) (AndOr children: [ (C {(test)} {(DQ ($ VSub_Name '$test_cmp_a'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$test_cmp_b'))} ) (C {(eval)} { (DQ ('diff -u ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token: <Lit_EscapedChar '\\$'> ) ('@') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (' ') ($ VSub_Name '$stdin_for_diff') ) } ) ] op_id: Op_DPipe ) ] op_id: Op_DAmp ) ] op_id: Op_DAmp ) ] spids: [4509] ) spids: [4504 4508] ) (FuncDef name: mingw_read_file_strip_cr_ body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:line) op:Equal spids:[4780])] spids: [4778] ) (While cond: [(C {(Lit_Other ':')})] body: (DoGroup children: [ (If arms: [ (if_arm cond: [ (SimpleCommand words: [{(read)} {(-r)} {(-d)} {(SQ <Lit_EscapedChar '\\n'>)} {(line)}] more_env: [ (env_pair name: IFS val: {(SQ <Lit_EscapedChar '\\r'>)} spids: [4793] ) ] ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:line) op: Equal rhs: {($ VSub_Name '$line') (SQ <Lit_EscapedChar '\\n'>)} spids: [4818] ) ] spids: [4818] ) ] spids: [16777215 4811] ) ] else_action: [ (If arms: [ (if_arm cond: [(C {(test)} {(-z)} {(DQ ($ VSub_Name '$line'))})] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [16777215 4851] ) ] spids: [16777215 4861] ) ] spids: [4825 4864] ) (C {(eval)} { (DQ ($ VSub_Number '$1') ('=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ($ VSub_Number '$1') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (line) ) } ) ] spids: [4788 4879] ) ) ] spids: [4767] ) spids: [4762 4766] ) (FuncDef name: test_env body: (BraceGroup children: [ (Subshell child: (While cond: [(C {(test)} {($ VSub_Pound '$#')} {(-gt)} {(0)})] body: (DoGroup children: [ (Case to_match: {(DQ ($ VSub_Number '$1'))} arms: [ (case_arm pat_list: [{(Lit_Other '*') (Lit_Other '=') (Lit_Other '*')}] action: [ (C {(eval)} { (DQ (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')}) spids: [4936 4940] ) ('=') (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) ('{1#*=}') ) } ) (C {(eval)} { (DQ ('export ') (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{('=*')}) spids: [4951 4955] ) ) } ) (C {(shift)}) ] spids: [4927 4930 4962 16777215] ) (case_arm pat_list: [{(Lit_Other '*')}] action: [(C {(DQ ($ VSub_At '$@'))}) (C {(exit)})] spids: [4965 4966 4977 16777215] ) ] spids: [4918 4924 4980] ) ] spids: [4915 4983] ) ) spids: [4901 4986] ) ] spids: [4898] ) spids: [4893 4897] ) (FuncDef name: test_match_signal body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} { (DQ (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(Lit_Digits 128)}) right: (ArithWord w:{($ VSub_Number '$1')}) ) spids: [5016 5023] ) ) } ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [16777215 5027] ) (if_arm cond: [ (C {(test)} {(DQ ($ VSub_Number '$2'))} {(Lit_Other '=')} { (DQ (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{(Lit_Digits 256)}) right: (ArithWord w:{($ VSub_Number '$1')}) ) spids: [5050 5057] ) ) } ) ] action: [(ControlFlow token:<ControlFlow_Return return> arg_word:{(0)})] spids: [5039 5061] ) ] spids: [16777215 5073] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [5002] ) spids: [4997 5001] ) (FuncDef name: test_copy_bytes body: (BraceGroup children: [ (C {(perl)} {(-e)} { (SQ <'\n'> <'\t\tmy $len = $ARGV[1];\n'> <'\t\twhile ($len > 0) {\n'> <'\t\t\tmy $s;\n'> <'\t\t\tmy $nread = sysread(STDIN, $s, $len);\n'> <'\t\t\tdie "cannot read: $!" unless defined($nread);\n'> <'\t\t\tprint $s;\n'> <'\t\t\t$len -= $nread;\n'> <'\t\t}\n'> <'\t'> ) } {(-)} {(DQ ($ VSub_Number '$1'))} ) ] spids: [5091] ) spids: [5086 5090] ) ] )