(CommandList children: [ (AndOr 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>) ] op_id: Op_DAmp ) (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)}) ) ) (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)}) ) ) (ControlFlow token:<ControlFlow_Return return> arg_word:{(1)}) ] spids: [-1 122] ) ] spids: [-1 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)}) ) ) (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] ) ] )