(CommandList children: [ (C {(set)} {(-e)}) (FuncDef name: encode_name body: (BraceGroup children: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: {(DQ ($ VSub_Number '$1'))} spids: [17] ) ] spids: [15] ) (Assignment keyword: Assign_Local pairs: [(assign_pair lhs:(LhsName name:result) op:Equal rhs:{(DQ (test_))} spids:[25])] spids: [23] ) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (LogicalNot child: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Name '$name'))} right: {(Lit_Other '[') (Lit_Other '^') (Lit_Other '[') (Lit_Other ':') (alnum) (Lit_Other ':') (Lit_Other ']') (EscapedLiteralPart token:<Lit_EscapedChar '\\ '>) (_-) (Lit_Other ']') } ) ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name name> suffix_op: (PatSub pat: {(_)} replace: {(-5f)} do_all: T do_prefix: F do_suffix: F ) spids: [63 70] ) ) } spids: [61] ) ] spids: [61] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name name> suffix_op: (PatSub pat: {(-)} replace: {(-2d)} do_all: T do_prefix: F do_suffix: F ) spids: [76 83] ) ) } spids: [74] ) ] spids: [74] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name name> suffix_op: (PatSub pat: {(' ')} replace: {(_)} do_all: T do_prefix: F do_suffix: F ) spids: [89 96] ) ) } spids: [87] ) ] spids: [87] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: PlusEqual rhs: {(DQ ($ VSub_Name '$name'))} spids: [100] ) ] spids: [100] ) ] spids: [16777215 58] ) ] else_action: [ (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs: (LhsName name:length) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name name> prefix_op: VSub_Pound spids: [113 116] ) ) } spids: [111] ) ] spids: [109] ) (Assignment keyword: Assign_Local pairs: [ (assign_pair lhs:(LhsName name:char) op:Equal spids:[122]) (assign_pair lhs:(LhsName name:i) op:Equal spids:[124]) ] spids: [120] ) (ForExpr init: (BinaryAssign op_id: Arith_Equal left: (LhsName name:i) right: (ArithWord w:{(Lit_Digits 0)}) ) cond: (ArithBinary op_id: Arith_Less left: (ArithVarRef name:i) right: (ArithVarRef name:length) ) update: (UnaryAssign op_id:Node_PostDPlus child:(LhsName name:i)) body: (DoGroup children: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:char) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name name> suffix_op: (Slice begin: (ArithWord w:{($ VSub_Name '$i')}) length: (ArithWord w:{(Lit_Digits 1)}) ) spids: [152 158] ) ) } spids: [150] ) ] spids: [150] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$char'))} {(Lit_Other '=')} {(DQ (' '))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: PlusEqual rhs: {(DQ (_))} spids: [182] ) ] spids: [182] ) ] spids: [16777215 179] ) (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Name '$char'))} right: {(Lit_Other '[') (Lit_Other '[') (Lit_Other ':') (alnum) (Lit_Other ':') (Lit_Other ']') (Lit_Other ']') } ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: PlusEqual rhs: {(DQ ($ VSub_Name '$char'))} spids: [212] ) ] spids: [212] ) ] spids: [188 209] ) ] else_action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:result) op: PlusEqual rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(printf)} {(--)} {(DQ ('-%02x'))} { (EscapedLiteralPart token: <Lit_EscapedChar "\\'"> ) (DQ ($ VSub_Name '$char')) } ) ] ) left_token: <Left_CommandSub '$('> spids: [223 236] ) ) } spids: [221] ) ] spids: [221] ) ] spids: [218 240] ) ] spids: [147 243] ) ) ] spids: [106 246] ) (C {(echo)} {(DQ ($ VSub_Name '$result'))}) ] spids: [12] ) spids: [8 11] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:tests) op:Equal rhs:{(ArrayLiteralPart)} spids:[259])] spids: [259] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:index) op:Equal rhs:{(0)} spids:[263])] spids: [263] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:pattern) op: Equal rhs: {(SQ <'^ *@test *([^ ].*) *\\{ *(.*)$'>)} spids: [266] ) ] spids: [266] ) (WhileUntil keyword: <KW_While while> cond: [ (Sentence child: (SimpleCommand words: [{(read)} {(-r)} {(line)}] more_env: [(env_pair name:IFS val:{(EmptyPart)} spids:[274])] ) terminator: <Op_Semi ';'> ) ] body: (DoGroup children: [ (C {(let)} {(Lit_VarLike 'index+=') (1)}) (If arms: [ (if_arm cond: [ (Sentence child: (DBracket expr: (BoolBinary op_id: BoolBinary_EqualTilde left: {(DQ ($ VSub_Name '$line'))} right: {($ VSub_Name '$pattern')} ) ) terminator: <Op_Semi ';'> ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:quoted_name) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 1)})) spids: [312 317] ) ) } spids: [310] ) ] spids: [310] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:body) op: Equal rhs: { (DQ (BracedVarSub token: <VSub_Name BASH_REMATCH> bracket_op: (ArrayIndex expr:(ArithWord w:{(Lit_Digits 2)})) spids: [323 328] ) ) } spids: [321] ) ] spids: [321] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:name) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [ (C {(eval)} {(echo)} {(DQ ($ VSub_Name '$quoted_name'))}) ] ) left_token: <Left_CommandSub '$('> spids: [334 342] ) ) } spids: [332] ) ] spids: [332] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:encoded_name) op: Equal rhs: { (DQ (CommandSubPart command_list: (CommandList children: [(C {(encode_name)} {(DQ ($ VSub_Name '$name'))})] ) left_token: <Left_CommandSub '$('> spids: [348 354] ) ) } spids: [346] ) ] spids: [346] ) (C {(tests) (Lit_Other '[') (DQ (BracedVarSub token: <VSub_Name tests> prefix_op: VSub_Pound bracket_op: (WholeArray op_id:Lit_At) spids: [361 367] ) ) (Lit_Other ']') (Lit_Other '=') (DQ ($ VSub_Name '$encoded_name')) } ) (C {(echo)} { (DQ (${ VSub_Name encoded_name) ('() { bats_test_begin ') (${ VSub_Name quoted_name) (' ') (${ VSub_Name index) ('; ') (${ VSub_Name body) ) } ) ] spids: [16777215 307] ) ] else_action: [ (C {(printf)} {(DQ ('%s') (Lit_Other '\\') (n))} {(DQ ($ VSub_Name '$line'))}) ] spids: [397 413] ) ] spids: [283 415] ) ) (ForEach iter_name: test_name iter_words: [ { (DQ (BracedVarSub token: <VSub_Name tests> bracket_op: (WholeArray op_id:Lit_At) spids: [425 430] ) ) } ] do_arg_iter: F body: (DoGroup children: [(C {(echo)} {(DQ ('bats_test_function ') (${ VSub_Name test_name))})] spids: [434 446] ) spids: [423 432] ) ] )