(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: [-1 37] ) ] spids: [-1 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: [-1 70] ) ] spids: [-1 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_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[111])] ) (C {(exit)} {(1)}) ] spids: [-1 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_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[145])] ) (C {(exit)} {(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: [-1 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 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_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[273])] ) (C {(exit)} {(1)}) ] spids: [262] ) ] op_id: Op_DPipe ) (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 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] ) ] op_id: Op_DPipe ) (AndOr 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] ) ] op_id: Op_DPipe ) (AndOr 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] ) ] op_id: Op_DPipe ) (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_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [400] ) ] ) ] ) 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: {(SQ <Lit_EscapedChar "\\n">)} spids: [416] ) (assign_pair lhs: (LhsName name:lines) op: Equal rhs: {(ArrayLiteralPart words:[{($ VSub_Name "$output")}])} spids: [421] ) ] spids: [416] ) (AndOr children: [ (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$e"))} {(Lit_Other "]")}) (C {(set)} {(-e)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$E"))} {(Lit_Other "]")}) (C {(set)} {(-E)}) ] op_id: Op_DPipe ) (AndOr children: [ (C {(Lit_Other "[")} {(-z)} {(DQ ($ VSub_Name "$T"))} {(Lit_Other "]")}) (C {(set)} {(-T)}) ] op_id: Op_DPipe ) (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:[484487]) (FuncDef name:teardown body:(BraceGroup children:[(C {(true)})] spids:[500]) spids:[496499]) (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] ) (C {(exit)} {(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_id:Redir_GreatAnd fd:-1 arg_word:{(3)} spids:[572])] ) ] spids: [-1 560] ) ] spids: [-1 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] ) (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: [-1 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:[852855]))} spids: [850] ) ] spids: [848] ) (ForEach iter_name: frame iter_words: [{(DQ ($ VSub_At "$@"))}] do_arg_iter: False 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: [-1 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: [-1 982] ) ] spids: [-1 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: [-1 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: [-1 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: [-1 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/^[ ")) (SQ <Lit_EscapedChar "\\t">) (DQ ("]*//"))} {(-e)} {(DQ ("s/[ ")) (SQ <Lit_EscapedChar "\\t">) (DQ ("]*") (Lit_Other "$") (//))} ) ] negated: False ) ] 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: [-1 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: [-1 1571] ) ] spids: [-1 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))} {(exit)}) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(0)} spids:[1637])] spids: [1635] ) (AndOr children: [ (SimpleCommand words: [{(teardown)}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ ($ VSub_Name "$BATS_OUT"))} spids: [1643] ) (Redir op_id:Redir_GreatAnd fd:2 arg_word:{(1)} spids:[1648]) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:status) op: Equal rhs: {(DQ ($ VSub_QMark "$?"))} spids: [1653] ) ] spids: [1653] ) ] op_id: Op_DPipe ) (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: [-1 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: [-1 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)} {(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: [-1 1798] ) ] spids: [-1 1809] ) ] spids: [-1 1771] ) ] spids: [-1 1812] ) (If arms: [ (if_arm cond: [ (Sentence child: (AndOr 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 "]")} ) ] op_id: Op_DPipe ) terminator: <Op_Semi ";"> ) ] action: [ (SimpleCommand words: [ {(echo)} { (DQ ("not ok ") ($ VSub_Name "$BATS_TEST_NUMBER") (" ") ($ VSub_Name "$BATS_TEST_DESCRIPTION") ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(3)} spids:[1853])] ) (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_id:Redir_GreatAnd fd:-1 arg_word:{(3)} spids:[1868])] ) (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_id:Redir_GreatAnd fd:-1 arg_word:{(3)} spids:[1895])] ) (SimpleCommand words: [{(sed)} {(-e)} {(DQ ("s/^/# /"))}] redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$BATS_OUT"))} spids: [1907] ) (Redir op_id: Redir_GreatAnd fd: -1 arg_word: {(3)} spids: [1913] ) ] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:status) op:Equal rhs:{(1)} spids:[1917])] spids: [1917] ) ] spids: [-1 1841] ) ] else_action: [ (SimpleCommand words: [ {(echo)} { (DQ ("ok ") (${ VSub_Name BATS_TEST_NUMBER) (${ VSub_Name skipped) (" ") (${ VSub_Name BATS_TEST_DESCRIPTION) ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(3)} spids:[1940])] ) (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"))}) (C {(exit)} {(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: False body: (DoGroup children: [ (AndOr 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] ) ] op_id: Op_DPipe ) (C {(let)} {(Lit_VarLike "test_number+=") (1)}) ] spids: [2004 2037] ) spids: [1998 2002] ) (C {(exit)} {(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 children: [ (C {(type)} {(-t)} {(DQ ($ VSub_Name "$BATS_TEST_NAME"))}) (C {(true)}) ] op_id: Op_DPipe ) ] ) 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: [-1 2113] ) ] spids: [-1 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))} {(exit)}) (SimpleCommand words: [{(DQ ($ VSub_Name "$BATS_TEST_NAME"))}] redirects: [ (Redir op_id: Redir_DGreat fd: -1 arg_word: {(DQ ($ VSub_Name "$BATS_OUT"))} spids: [2178] ) (Redir op_id: Redir_GreatAnd fd: 2 arg_word: {(1)} spids: [2183] ) ] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:BATS_TEST_COMPLETED) op: Equal rhs: {(1)} spids: [2187] ) ] spids: [2187] ) ] spids: [-1 2091] ) ] else_action: [ (SimpleCommand words: [ {(echo)} { (DQ ("bats: unknown test name ") (EscapedLiteralPart token:<Lit_EscapedChar "\\`">) ($ VSub_Name "$BATS_TEST_NAME") ("'") ) } ] redirects: [(Redir op_id:Redir_GreatAnd fd:-1 arg_word:{(2)} spids:[2204])] ) (C {(exit)} {(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: [-1 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_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$BATS_TEST_FILENAME"))} spids: [2303] ) ] ) terminator: <Op_Semi ";"> ) (Sentence child:(C {(echo)}) terminator:<Op_Semi ";">) ] spids: [2293] ) (SimpleCommand words: [{(bats-preprocess)}] redirects: [ (Redir op_id: Redir_Great fd: -1 arg_word: {(DQ ($ VSub_Name "$BATS_TEST_SOURCE"))} spids: [2319] ) ] ) ] negated: False ) (C {(trap)} {(DQ (bats_cleanup_preprocessed_source))} {(err)} {(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: [-1 2386] ) ] spids: [-1 2398] ) (C {(source)} {(DQ ($ VSub_Name "$BATS_TEST_SOURCE"))}) ] spids: [2370] ) spids: [2366 2369] ) (SimpleCommand words: [{(exec)}] redirects: [(Redir op_id:Redir_LessAnd fd:3 arg_word:{(1)} spids:[2412])] ) (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: [-1 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: [-1 2431] ) ] else_action: [ (C {(bats_evaluate_preprocessed_source)}) (C {(bats_perform_test)} {(DQ ($ VSub_At "$@"))}) ] spids: [2487 2499] ) ] )