(CommandList children: [ (AndOr ops: [Op_DAmp] children: [ (C {(Lit_Other '[')} { (BracedVarSub token: <VSub_Name TESTS_TEST_SH> suffix_op: (StringUnary op_id:VTest_Plus arg_word:{(true)}) spids: [9 13] ) } {(Lit_Other ']')} ) (ControlFlow token:<ControlFlow_Return return>) ] ) (Assignment keyword: Assign_Declare flags: [-g] pairs: [(assign_pair lhs:(LhsName name:TESTS_TEST_SH) op:Equal rhs:{(true)} spids:[25])] spids: [21] ) (Assignment keyword: Assign_Declare flags: [-g -A] pairs: [ (assign_pair lhs: (LhsName name:ASSERT_RESULTS) op: Equal rhs: { (ArrayLiteralPart words: [ {(Lit_Other '[') (total) (Lit_Other ']') (Lit_Other '=') (0)} {(Lit_Other '[') (passed) (Lit_Other ']') (Lit_Other '=') (0)} {(Lit_Other '[') (failed) (Lit_Other ']') (Lit_Other '=') (0)} ] ) } spids: [35] ) ] spids: [29] ) (FuncDef name: 'assert::equals' body: (BraceGroup children: [ (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:expect) op: Equal rhs: {($ VSub_Number '$1')} spids: [71] ) ] spids: [69] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:actual) op: Equal rhs: {($ VSub_Number '$2')} spids: [77] ) ] spids: [75] ) (Assignment keyword: Assign_Declare pairs: [ (assign_pair lhs: (LhsName name:message) op: Equal rhs: { (BracedVarSub token: <VSub_At '@'> suffix_op: (Slice begin:(ArithWord w:{(Lit_Digits 3)})) spids: [84 88] ) } spids: [83] ) ] spids: [81] ) (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsIndexedName name:ASSERT_RESULTS index:(ArithVarRef name:total)) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [91 101] ) (If arms: [ (if_arm cond: [ (Sentence child: (C {(Lit_Other '[')} {(DQ ($ VSub_Name '$expect'))} {(KW_Bang '!') (Lit_Other '=')} {(DQ ($ VSub_Name '$actual'))} {(Lit_Other ']')} ) terminator: <Op_Semi ';'> ) ] action: [ (C {(echo)} { (DQ ('FAILED (') ($ VSub_Name '$message') (')\n') ('\tExpected: ') ($ VSub_Name '$expect') ('\n') (' Actual: ') ($ VSub_Name '$actual') ) } ) (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsIndexedName name:ASSERT_RESULTS index:(ArithVarRef name:failed)) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [139 149] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [16777215 122] ) ] spids: [16777215 157] ) (C {(echo)} {(DQ ('PASSED ') ($ VSub_Name '$message'))}) (DParen child: (BinaryAssign op_id: Arith_PlusEqual left: (LhsIndexedName name:ASSERT_RESULTS index:(ArithVarRef name:passed)) right: (ArithWord w:{(Lit_Digits 1)}) ) spids: [168 178] ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(0)}) ] spids: [66] ) spids: [57 65] ) (FuncDef name: 'assert::report' body: (BraceGroup children: [ (C {(echo)} { (DQ ('TESTS [total=') (BracedVarSub token: <VSub_Name ASSERT_RESULTS> bracket_op: (ArrayIndex expr:(ArithVarRef name:total)) spids: [204 209] ) ('] [passed=') (BracedVarSub token: <VSub_Name ASSERT_RESULTS> bracket_op: (ArrayIndex expr:(ArithVarRef name:passed)) spids: [211 216] ) ('] [failed=') (BracedVarSub token: <VSub_Name ASSERT_RESULTS> bracket_op: (ArrayIndex expr:(ArithVarRef name:failed)) spids: [218 223] ) (']') ) } ) ] spids: [197] ) spids: [188 196] ) ] )