(CommandList children: [ (C {(set)} {(-e)}) (C {(set)} {(-E)}) (C {(set)} {(-T)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BATS_COUNT_ONLY) op:Equal rhs:{(DQ )} spids:[16])] spids: [16] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (-c))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BATS_COUNT_ONLY) op:Equal rhs:{(1)} spids:[40])] spids: [40] ) (C {(shift)}) ] spids: [16777215 37] ) ] spids: [16777215 46] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:BATS_EXTENDED_SYNTAX) op:Equal rhs:{(DQ )} spids:[49])] spids: [49] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other '=')} {(DQ (-x))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_EXTENDED_SYNTAX) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [73] ) ] spids: [73] ) (C {(shift)}) ] spids: [16777215 70] ) ] spids: [16777215 81] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_FILENAME) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [84] ) ] spids: [84] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BATS_TEST_FILENAME'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('usage: bats-exec <filename>'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [16777215 102] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(KW_Bang '!')} {(-f)} {(DQ ($ VSub_Name '$BATS_TEST_FILENAME'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [{(echo)} {(DQ ('bats: ') ($ VSub_Name '$BATS_TEST_FILENAME') (' does not exist'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [119 134] ) ] else_action: [(C {(shift)})] spids: [153 158] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_DIRNAME) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(dirname)} {(DQ ($ VSub_Name '$BATS_TEST_FILENAME'))})] ) left_token: <Left_CommandSub '$('> spids: [163 169] ) ) } spids: [161] ) ] spids: [161] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_NAMES) op: Equal rhs: {(ArrayLiteralPart)} spids: [172] ) ] spids: [172] ) (FuncDef name: load body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [186] ) ] spids: [184] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:filename) op:Equal spids:[194])] spids: [192] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name name> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 0)}) length: (ArithWord w:{(Lit_Digits 1)}) ) spids: [203 209] ) ) } {(Lit_Other '=')} {(DQ (/))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: {(DQ (${ VSub_Name name))} spids: [224] ) ] spids: [224] ) ] spids: [16777215 221] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: {(DQ ($ VSub_Name '$BATS_TEST_DIRNAME') (/) (${ VSub_Name name) (.bash))} spids: [235] ) ] spids: [235] ) ] spids: [232 246] ) (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(-f)} {(DQ ($ VSub_Name '$filename'))} {(Lit_Other ']')}) (BraceGroup children: [ (SimpleCommand words: [{(echo)} {(DQ ('bats: ') ($ VSub_Name '$filename') (' does not exist'))}] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [262] ) ] ) (C {(source)} {(DQ (${ VSub_Name filename))}) ] spids: [181] ) spids: [177 180] ) (FuncDef name: run body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:e) op:Equal spids:[306]) (assign_pair lhs:(LhsName name:E) op:Equal spids:[308]) (assign_pair lhs:(LhsName name:T) op:Equal spids:[310]) (assign_pair lhs:(LhsName name:oldIFS) op:Equal spids:[312]) ] spids: [304] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (LogicalNot child: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Hyphen '$-'))} right: {(e)} ) ) ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:e) op:Equal rhs:{(1)} spids:[331])] spids: [331] ) ] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (LogicalNot child: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Hyphen '$-'))} right: {(E)} ) ) ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:E) op:Equal rhs:{(1)} spids:[351])] spids: [351] ) ] ) (AndOr ops: [Op_DPipe] children: [ (DBracket expr: (LogicalNot child: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Hyphen '$-'))} right: {(T)} ) ) ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:T) op:Equal rhs:{(1)} spids:[371])] spids: [371] ) ] ) (C {(set)} {(Lit_Other '+') (e)}) (C {(set)} {(Lit_Other '+') (E)}) (C {(set)} {(Lit_Other '+') (T)}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:output) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (SimpleCommand words: [{(DQ ($ VSub_At '$@'))}] redirects: [(Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)})] ) ] ) left_token: <Left_CommandSub '$('> spids: [395 402] ) ) } spids: [393] ) ] spids: [393] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:status) op: Equal rhs: {(DQ ($ VSub_QMark '$?'))} spids: [406] ) ] spids: [406] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:oldIFS) op: Equal rhs: {($ VSub_Name '$IFS')} spids: [412] ) ] spids: [412] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: { (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\n'>] spids: [417 419] ) } spids: [416] ) (assign_pair lhs: (LhsName name:lines) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name '$output')}])} spids: [421] ) ] spids: [416] ) (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$e'))} {(Lit_Other ']')}) (C {(set)} {(-e)}) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$E'))} {(Lit_Other ']')}) (C {(set)} {(-E)}) ] ) (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$T'))} {(Lit_Other ']')}) (C {(set)} {(-T)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:IFS) op: Equal rhs: {($ VSub_Name '$oldIFS')} spids: [478] ) ] spids: [478] ) ] spids: [301] ) spids: [297 300] ) (FuncDef name:setup body:(BraceGroup children:[(C {(true)})] spids:[488]) spids:[484 487]) (FuncDef name:teardown body:(BraceGroup children:[(C {(true)})] spids:[500]) spids:[496 499]) (FuncDef name: skip body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_SKIPPED) op: Equal rhs: { (BracedVarSub token: <VSub_Number 1> suffix_op: (StringUnary op_id:VTest_ColonHyphen arg_word:{(1)}) spids: [516 520] ) } spids: [515] ) ] spids: [515] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_COMPLETED) op: Equal rhs: {(1)} spids: [523] ) ] spids: [523] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)}) ] spids: [512] ) spids: [508 511] ) (FuncDef name: bats_test_begin body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_DESCRIPTION) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [541] ) ] spids: [541] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$BATS_EXTENDED_SYNTAX'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('begin ') ($ VSub_Name '$BATS_TEST_NUMBER') (' ') ($ VSub_Name '$BATS_TEST_DESCRIPTION') ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) ] spids: [16777215 560] ) ] spids: [16777215 576] ) (C {(setup)}) ] spids: [538] ) spids: [534 537] ) (FuncDef name: bats_test_function body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:test_name) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [593] ) ] spids: [591] ) (C {(BATS_TEST_NAMES) (Lit_Other '[') (DQ (BracedVarSub token: <VSub_Name BATS_TEST_NAMES> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [602 608] ) ) (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$test_name')) } ) ] spids: [588] ) spids: [584 587] ) (FuncDef name: bats_capture_stack_trace body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_PREVIOUS_STACK_TRACE) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name BATS_CURRENT_STACK_TRACE> bracket_op: (WholeArray op_id:Lit_At) spids: [630 635] ) ) } ] ) } spids: [626] ) ] spids: [626] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_CURRENT_STACK_TRACE) op: Equal rhs: {(ArrayLiteralPart)} spids: [641] ) ] spids: [641] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:test_pattern) op: Equal rhs: { (DQ (' ') ($ VSub_Name '$BATS_TEST_NAME') (' ') ($ VSub_Name '$BATS_TEST_SOURCE')) } spids: [649] ) ] spids: [647] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:setup_pattern) op: Equal rhs: {(DQ (' setup ') ($ VSub_Name '$BATS_TEST_SOURCE'))} spids: [660] ) ] spids: [658] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:teardown_pattern) op: Equal rhs: {(DQ (' teardown ') ($ VSub_Name '$BATS_TEST_SOURCE'))} spids: [669] ) ] spids: [667] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:frame) op:Equal spids:[679])] spids: [677] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:index) op:Equal rhs:{(1)} spids:[684])] spids: [682] ) (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:frame) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(caller)} {(DQ ($ VSub_Name '$index'))})] ) left_token: <Left_CommandSub '$('> spids: [693 699] ) ) } spids: [691] ) ] spids: [691] ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(BATS_CURRENT_STACK_TRACE) (Lit_Other '[') (DQ (BracedVarSub token: <VSub_Name BATS_CURRENT_STACK_TRACE> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [709 715] ) ) (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$frame')) } ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobEqual left: {(DQ ($ VSub_Name '$frame'))} right: {(Lit_Other '*') (DQ ($ VSub_Name '$test_pattern'))} ) right: (LogicalOr left: (BoolBinary op_id: BoolBinary_GlobEqual left: {(DQ ($ VSub_Name '$frame'))} right: {(Lit_Other '*') (DQ ($ VSub_Name '$setup_pattern'))} ) right: (BoolBinary op_id: BoolBinary_GlobEqual left: {(DQ ($ VSub_Name '$frame'))} right: {(Lit_Other '*') (DQ ($ VSub_Name '$teardown_pattern')) } ) ) ) ) terminator: <Op_Semi ';'> ) ] action: [(ControlFlow token:<ControlFlow_Break break>)] spids: [16777215 772] ) ] else_action: [(C {(let)} {(Lit_VarLike 'index+=') (1)})] spids: [778 787] ) ] spids: [703 790] ) ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_SOURCE) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(bats_frame_filename)} { (DQ (BracedVarSub token: <VSub_Name BATS_CURRENT_STACK_TRACE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [800 805] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [796 807] ) ) } spids: [794] ) ] spids: [794] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_LINENO) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(bats_frame_lineno)} { (DQ (BracedVarSub token: <VSub_Name BATS_CURRENT_STACK_TRACE> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 0)})) spids: [817 822] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [813 824] ) ) } spids: [811] ) ] spids: [811] ) ] spids: [623] ) spids: [619 622] ) (FuncDef name: bats_print_stack_trace body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:frame) op:Equal spids:[839])] spids: [837] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:index) op:Equal rhs:{(1)} spids:[844])] spids: [842] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:count) op: Equal rhs: {(DQ (BracedVarSub token:<VSub_At '@'> prefix_op:VSub_Pound spids:[852 855]))} spids: [850] ) ] spids: [848] ) (ForEach iter_name: frame iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (DoGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(bats_trim_filename)} { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(bats_frame_filename)} {(DQ ($ VSub_Name '$frame'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [882 888] ) ) } ) ] ) left_token: <Left_CommandSub '$('> spids: [878 890] ) ) } spids: [876] ) ] spids: [874] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(bats_frame_lineno)} {(DQ ($ VSub_Name '$frame'))})] ) left_token: <Left_CommandSub '$('> spids: [898 904] ) ) } spids: [896] ) ] spids: [894] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$index')} {(-eq)} {(1)} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(-n)} {(DQ ('# ('))})] spids: [16777215 922] ) ] else_action: [(C {(echo)} {(-n)} {(DQ ('# '))})] spids: [934 946] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:fn) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(bats_frame_function)} {(DQ ($ VSub_Name '$frame'))}) ] ) left_token: <Left_CommandSub '$('> spids: [954 960] ) ) } spids: [952] ) ] spids: [950] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$fn'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$BATS_TEST_NAME'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(-n)} { (DQ ('from function ') (EscapedLiteralPart token: <Lit_EscapedChar '\\`'> ) ($ VSub_Name '$fn') ("' ") ) } ) ] spids: [16777215 982] ) ] spids: [16777215 997] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$index')} {(-eq)} {($ VSub_Name '$count')} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('in test file ') ($ VSub_Name '$filename') (', line ') ($ VSub_Name '$lineno') (')') ) } ) ] spids: [16777215 1014] ) ] else_action: [ (C {(echo)} { (DQ ('in file ') ($ VSub_Name '$filename') (', line ') ($ VSub_Name '$lineno') (',') ) } ) ] spids: [1028 1042] ) (C {(let)} {(Lit_VarLike 'index+=') (1)}) ] spids: [871 1052] ) spids: [865 869] ) ] spids: [834] ) spids: [830 833] ) (FuncDef name: bats_print_failed_command body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:frame) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1066] ) ] spids: [1064] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:status) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [1074] ) ] spids: [1072] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(bats_frame_filename)} {(DQ ($ VSub_Name '$frame'))})] ) left_token: <Left_CommandSub '$('> spids: [1084 1090] ) ) } spids: [1082] ) ] spids: [1080] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(bats_frame_lineno)} {(DQ ($ VSub_Name '$frame'))})] ) left_token: <Left_CommandSub '$('> spids: [1098 1104] ) ) } spids: [1096] ) ] spids: [1094] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:failed_line) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(bats_extract_line)} {(DQ ($ VSub_Name '$filename'))} {(DQ ($ VSub_Name '$lineno'))} ) ] ) left_token: <Left_CommandSub '$('> spids: [1113 1123] ) ) } spids: [1111] ) ] spids: [1109] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:failed_command) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(bats_strip_string)} {(DQ ($ VSub_Name '$failed_line'))})] ) left_token: <Left_CommandSub '$('> spids: [1131 1137] ) ) } spids: [1129] ) ] spids: [1127] ) (C {(echo)} {(-n)} { (DQ ('# ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) (${ VSub_Name failed_command) ("' ") ) } ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$status')} {(-eq)} {(1)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ (failed))})] spids: [16777215 1169] ) ] else_action: [(C {(echo)} {(DQ ('failed with status ') ($ VSub_Name '$status'))})] spids: [1179 1190] ) ] spids: [1061] ) spids: [1057 1060] ) (FuncDef name: bats_frame_lineno body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:frame) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1204] ) ] spids: [1202] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name frame> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(' *')}) spids: [1214 1218] ) ) } spids: [1212] ) ] spids: [1210] ) (C {(echo)} {(DQ ($ VSub_Name '$lineno'))}) ] spids: [1199] ) spids: [1195 1198] ) (FuncDef name: bats_frame_function body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:frame) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1240] ) ] spids: [1238] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:rest) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name frame> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('* ')}) spids: [1250 1254] ) ) } spids: [1248] ) ] spids: [1246] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:fn) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name rest> suffix_op: (StringUnary op_id:VOp1_DPercent arg_word:{(' *')}) spids: [1262 1266] ) ) } spids: [1260] ) ] spids: [1258] ) (C {(echo)} {(DQ ($ VSub_Name '$fn'))}) ] spids: [1235] ) spids: [1231 1234] ) (FuncDef name: bats_frame_filename body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:frame) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1288] ) ] spids: [1286] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:rest) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name frame> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('* ')}) spids: [1298 1302] ) ) } spids: [1296] ) ] spids: [1294] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name rest> suffix_op: (StringUnary op_id:VOp1_Pound arg_word:{('* ')}) spids: [1310 1314] ) ) } spids: [1308] ) ] spids: [1306] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$filename'))} {(Lit_Other '=')} {(DQ ($ VSub_Name '$BATS_TEST_SOURCE'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(echo)} {(DQ ($ VSub_Name '$BATS_TEST_FILENAME'))})] spids: [16777215 1336] ) ] else_action: [(C {(echo)} {(DQ ($ VSub_Name '$filename'))})] spids: [1346 1356] ) ] spids: [1283] ) spids: [1279 1282] ) (FuncDef name: bats_extract_line body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1370] ) ] spids: [1368] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:lineno) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [1378] ) ] spids: [1376] ) (C {(sed)} {(-n)} {(DQ (${ VSub_Name lineno) (p))} {(DQ ($ VSub_Name '$filename'))}) ] spids: [1365] ) spids: [1361 1364] ) (FuncDef name: bats_strip_string body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:string) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1411] ) ] spids: [1409] ) (Pipeline children: [ (C {(printf)} {(DQ ('%s'))} {(DQ ($ VSub_Name '$string'))}) (C {(sed)} {(-e)} {(DQ ('s/^[ ')) (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\t'>] spids: [1436 1438] ) (DQ (']*//')) } {(-e)} {(DQ ('s/[ ')) (SingleQuotedPart left: <Left_DollarSingleQuote "$'"> tokens: [<Char_OneChar '\\t'>] spids: [1448 1450] ) (DQ (']*') (Lit_Other '$') (//)) } ) ] negated: F ) ] spids: [1406] ) spids: [1402 1405] ) (FuncDef name: bats_trim_filename body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:filename) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [1469] ) ] spids: [1467] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:length) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BATS_CWD> prefix_op: VSub_Pound spids: [1479 1482] ) ) } spids: [1477] ) ] spids: [1475] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (BracedVarSub token: <VSub_Name filename> suffix_op: (Slice begin: (ArithWord w:{(Lit_Digits 0)}) length: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:length) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [1492 1500] ) ) } {(Lit_Other '=')} {(DQ (${ VSub_Name BATS_CWD) (/))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ (BracedVarSub token: <VSub_Name filename> suffix_op: (Slice begin: (ArithBinary op_id: Arith_Plus left: (ArithVarRef name:length) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [1521 1527] ) ) } ) ] spids: [16777215 1515] ) ] else_action: [(C {(echo)} {(DQ ($ VSub_Name '$filename'))})] spids: [1531 1541] ) ] spids: [1464] ) spids: [1460 1463] ) (FuncDef name: bats_debug_trap body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$BASH_SOURCE'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [(C {(bats_capture_stack_trace)})] spids: [16777215 1571] ) ] spids: [16777215 1577] ) ] spids: [1550] ) spids: [1546 1549] ) (FuncDef name: bats_error_trap body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_ERROR_STATUS) op: Equal rhs: {(DQ ($ VSub_QMark '$?'))} spids: [1589] ) ] spids: [1589] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_ERROR_STACK_TRACE) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name BATS_PREVIOUS_STACK_TRACE> bracket_op: (WholeArray op_id:Lit_At) spids: [1599 1604] ) ) } ] ) } spids: [1595] ) ] spids: [1595] ) (C {(trap)} {(-)} {(debug)}) ] spids: [1586] ) spids: [1582 1585] ) (FuncDef name: bats_teardown_trap body: (BraceGroup children: [ (C {(trap)} {(DQ (bats_exit_trap))} {(ControlFlow_Exit exit)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(0)} spids:[1637])] spids: [1635] ) (AndOr ops: [Op_DPipe] children: [ (SimpleCommand words: [{(teardown)}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$BATS_OUT'))} ) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:status) op: Equal rhs: {(DQ ($ VSub_QMark '$?'))} spids: [1653] ) ] spids: [1653] ) ] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {($ VSub_Name '$status')} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEARDOWN_COMPLETED) op: Equal rhs: {(1)} spids: [1676] ) ] spids: [1676] ) ] spids: [16777215 1673] ) (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$BATS_TEST_COMPLETED'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_ERROR_STATUS) op: Equal rhs: {(DQ ($ VSub_Name '$status'))} spids: [1696] ) ] spids: [1696] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_ERROR_STACK_TRACE) op: Equal rhs: { (ArrayLiteralPart words: [ { (DQ (BracedVarSub token: <VSub_Name BATS_CURRENT_STACK_TRACE> bracket_op: (WholeArray op_id:Lit_At) spids: [1706 1711] ) ) } ] ) } spids: [1702] ) ] spids: [1702] ) ] spids: [1680 1693] ) ] spids: [16777215 1717] ) (C {(bats_exit_trap)}) ] spids: [1623] ) spids: [1619 1622] ) (FuncDef name: bats_exit_trap body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:status) op:Equal spids:[1735])] spids: [1733] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:skipped) op:Equal spids:[1740])] spids: [1738] ) (C {(trap)} {(-)} {(err)} {(ControlFlow_Exit exit)}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:skipped) op:Equal rhs:{(DQ )} spids:[1753])] spids: [1753] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$BATS_TEST_SKIPPED'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skipped) op: Equal rhs: {(DQ (' # skip'))} spids: [1774] ) ] spids: [1774] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ (1))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$BATS_TEST_SKIPPED'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:skipped) op: PlusEqual rhs: {(DQ (' (') ($ VSub_Name '$BATS_TEST_SKIPPED') (')'))} spids: [1801] ) ] spids: [1801] ) ] spids: [16777215 1798] ) ] spids: [16777215 1809] ) ] spids: [16777215 1771] ) ] spids: [16777215 1812] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr ops: [Op_DPipe] children: [ (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BATS_TEST_COMPLETED'))} {(Lit_Other ']')} ) (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BATS_TEARDOWN_COMPLETED'))} {(Lit_Other ']')} ) ] ) terminator: <Op_Semi ';'> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ('not ok ') ($ VSub_Name '$BATS_TEST_NUMBER') (' ') ($ VSub_Name '$BATS_TEST_DESCRIPTION') ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (SimpleCommand words: [ {(bats_print_stack_trace)} { (DQ (BracedVarSub token: <VSub_Name BATS_ERROR_STACK_TRACE> bracket_op: (WholeArray op_id:Lit_At) spids: [1860 1865] ) ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (SimpleCommand words: [ {(bats_print_failed_command)} { (DQ (BracedVarSub token: <VSub_Name BATS_ERROR_STACK_TRACE> bracket_op: (ArrayIndex expr: (ArithBinary op_id: Arith_Minus left: (ArithWord w: { (BracedVarSub token: <VSub_Name BATS_ERROR_STACK_TRACE> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [1878 1884] ) } ) right: (ArithWord w:{(Lit_Digits 1)}) ) ) spids: [1875 1888] ) ) } {(DQ ($ VSub_Name '$BATS_ERROR_STATUS'))} ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (SimpleCommand words: [{(sed)} {(-e)} {(DQ ('s/^/# /'))}] redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$BATS_OUT'))} ) (Redir op: <Redir_GreatAnd '>&'> fd: 16777215 arg_word: {(3)} ) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(1)} spids:[1917])] spids: [1917] ) ] spids: [16777215 1841] ) ] else_action: [ (SimpleCommand words: [ {(echo)} { (DQ ('ok ') (${ VSub_Name BATS_TEST_NUMBER) (${ VSub_Name skipped) (' ') (${ VSub_Name BATS_TEST_DESCRIPTION) ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(3)})] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(0)} spids:[1944])] spids: [1944] ) ] spids: [1921 1948] ) (C {(rm)} {(-f)} {(DQ ($ VSub_Name '$BATS_OUT'))}) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(DQ ($ VSub_Name '$status'))} ) ] spids: [1730] ) spids: [1726 1729] ) (FuncDef name: bats_perform_tests body: (BraceGroup children: [ (C {(echo)} {(DQ (1..) ($ VSub_Pound '$#'))}) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:test_number) op:Equal rhs:{(1)} spids:[1985])] spids: [1985] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(0)} spids:[1989])] spids: [1989] ) (ForEach iter_name: test_name iter_words: [{(DQ ($ VSub_At '$@'))}] do_arg_iter: F body: (DoGroup children: [ (AndOr ops: [Op_DPipe] children: [ (C {(DQ ($ VSub_Number '$0'))} {($ VSub_Name '$BATS_EXTENDED_SYNTAX')} {(DQ ($ VSub_Name '$BATS_TEST_FILENAME'))} {(DQ ($ VSub_Name '$test_name'))} {(DQ ($ VSub_Name '$test_number'))} ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:status) op: Equal rhs: {(1)} spids: [2027] ) ] spids: [2027] ) ] ) (C {(let)} {(Lit_VarLike 'test_number+=') (1)}) ] spids: [2004 2037] ) spids: [1998 2002] ) (ControlFlow token: <ControlFlow_Exit exit> arg_word: {(DQ ($ VSub_Name '$status'))} ) ] spids: [1974] ) spids: [1970 1973] ) (FuncDef name: bats_perform_test body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_NAME) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [2056] ) ] spids: [2056] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} { (DQ (CommandSubPart command_list: (CommandList children: [ (AndOr ops: [Op_DPipe] children: [ (C {(type)} {(-t)} {(DQ ($ VSub_Name '$BATS_TEST_NAME'))}) (C {(true)}) ] ) ] ) left_token: <Left_CommandSub '$('> spids: [2067 2079] ) ) } {(Lit_Other '=')} {(DQ (function))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_NUMBER) op: Equal rhs: {(DQ ($ VSub_Number '$2'))} spids: [2094] ) ] spids: [2094] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BATS_TEST_NUMBER'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} {(DQ (1..1))}) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_NUMBER) op: Equal rhs: {(DQ (1))} spids: [2123] ) ] spids: [2123] ) ] spids: [16777215 2113] ) ] spids: [16777215 2129] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_COMPLETED) op: Equal rhs: {(DQ )} spids: [2133] ) ] spids: [2133] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEARDOWN_COMPLETED) op: Equal rhs: {(DQ )} spids: [2138] ) ] spids: [2138] ) (C {(trap)} { (DQ ('bats_debug_trap ') (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) (EscapedLiteralPart token:<Lit_EscapedChar '\\$'>) (BASH_SOURCE) (EscapedLiteralPart token:<Lit_EscapedChar '\\"'>) ) } {(debug)} ) (C {(trap)} {(DQ (bats_error_trap))} {(err)}) (C {(trap)} {(DQ (bats_teardown_trap))} {(ControlFlow_Exit exit)}) (SimpleCommand words: [{(DQ ($ VSub_Name '$BATS_TEST_NAME'))}] redirects: [ (Redir op: <Redir_DGreat '>>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$BATS_OUT'))} ) (Redir op:<Redir_GreatAnd '2>&'> fd:2 arg_word:{(1)}) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_COMPLETED) op: Equal rhs: {(1)} spids: [2187] ) ] spids: [2187] ) ] spids: [16777215 2091] ) ] else_action: [ (SimpleCommand words: [ {(echo)} { (DQ ('bats: unknown test name ') (EscapedLiteralPart token:<Lit_EscapedChar '\\`'>) ($ VSub_Name '$BATS_TEST_NAME') ("'") ) } ] redirects: [(Redir op:<Redir_GreatAnd '>&'> fd:16777215 arg_word:{(2)})] ) (ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] spids: [2192 2213] ) ] spids: [2053] ) spids: [2049 2052] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$TMPDIR'))} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TMPDIR) op: Equal rhs: {(DQ (/tmp))} spids: [2234] ) ] spids: [2234] ) ] spids: [16777215 2231] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TMPDIR) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name TMPDIR> suffix_op: (StringUnary op_id:VOp1_Percent arg_word:{(Lit_Slash /)}) spids: [2244 2248] ) ) } spids: [2242] ) ] spids: [2242] ) ] spids: [2239 2251] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TMPNAME) op: Equal rhs: {(DQ ($ VSub_Name '$BATS_TMPDIR') (/bats.) ($ VSub_Dollar '$$'))} spids: [2254] ) ] spids: [2254] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_PARENT_TMPNAME) op: Equal rhs: {(DQ ($ VSub_Name '$BATS_TMPDIR') (/bats.) ($ VSub_Name '$PPID'))} spids: [2261] ) ] spids: [2261] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_OUT) op: Equal rhs: {(DQ (${ VSub_Name BATS_TMPNAME) (.out))} spids: [2268] ) ] spids: [2268] ) (FuncDef name: bats_preprocess_source body: (BraceGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_SOURCE) op: Equal rhs: {(DQ (${ VSub_Name BATS_TMPNAME) (.src))} spids: [2284] ) ] spids: [2284] ) (Pipeline children: [ (BraceGroup children: [ (Sentence child: (SimpleCommand words: [{(tr)} {(-d)} {(SQ <'\\r'>)}] redirects: [ (Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$BATS_TEST_FILENAME'))} ) ] ) terminator: <Op_Semi ';'> ) (Sentence child:(C {(echo)}) terminator:<Op_Semi ';'>) ] spids: [2293] ) (SimpleCommand words: [{(bats-preprocess)}] redirects: [ (Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$BATS_TEST_SOURCE'))} ) ] ) ] negated: F ) (C {(trap)} {(DQ (bats_cleanup_preprocessed_source))} {(err)} {(ControlFlow_Exit exit)}) (C {(trap)} {(DQ ('bats_cleanup_preprocessed_source; exit 1'))} {(int)}) ] spids: [2281] ) spids: [2277 2280] ) (FuncDef name: bats_cleanup_preprocessed_source body: (BraceGroup children: [(C {(rm)} {(-f)} {(DQ ($ VSub_Name '$BATS_TEST_SOURCE'))})] spids: [2352] ) spids: [2348 2351] ) (FuncDef name: bats_evaluate_preprocessed_source body: (BraceGroup children: [ (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_Name '$BATS_TEST_SOURCE'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_SOURCE) op: Equal rhs: {(DQ (${ VSub_Name BATS_PARENT_TMPNAME) (.src))} spids: [2389] ) ] spids: [2389] ) ] spids: [16777215 2386] ) ] spids: [16777215 2398] ) (C {(source)} {(DQ ($ VSub_Name '$BATS_TEST_SOURCE'))}) ] spids: [2370] ) spids: [2366 2369] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op:<Redir_LessAnd '3<&'> fd:3 arg_word:{(1)})] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Pound '$#'))} {(-eq)} {(0)} {(Lit_Other ']')}) terminator: <Op_Semi ';'> ) ] action: [ (C {(bats_preprocess_source)}) (C {(bats_evaluate_preprocessed_source)}) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Name '$BATS_COUNT_ONLY'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ (BracedVarSub token: <VSub_Name BATS_TEST_NAMES> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [2460 2466] ) ) } ) ] spids: [16777215 2454] ) ] else_action: [ (C {(bats_perform_tests)} { (DQ (BracedVarSub token: <VSub_Name BATS_TEST_NAMES> bracket_op: (WholeArray op_id:Lit_At) spids: [2476 2481] ) ) } ) ] spids: [2470 2485] ) ] spids: [16777215 2431] ) ] else_action: [ (C {(bats_evaluate_preprocessed_source)}) (C {(bats_perform_test)} {(DQ ($ VSub_At '$@'))}) ] spids: [2487 2499] ) ] )