(CommandList children: [ (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:failed_tests) op:Equal rhs:{(SQ )} spids:[4])] spids: [4] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:fixed) op:Equal rhs:{(0)} spids:[6])] spids: [6] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:success) op:Equal rhs:{(0)} spids:[9])] spids: [9] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:failed) op:Equal rhs:{(0)} spids:[12])] spids: [12] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:broken) op:Equal rhs:{(0)} spids:[15])] spids: [15] ) (Assignment keyword: Assign_None pairs: [(assign_pair lhs:(LhsName name:total) op:Equal rhs:{(0)} spids:[18])] spids: [18] ) (While cond: [(C {(read)} {(file)})] body: (DoGroup children: [ (While cond: [(C {(read)} {(type)} {(value)})] body: (DoGroup children: [ (Case to_match: {($ VSub_Name "$type")} arms: [ (case_arm pat_list: [{(SQ )}] action: [(ControlFlow token:<ControlFlow_Continue continue>)] spids: [-1 52 57 -1] ) (case_arm pat_list: [{(fixed)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:fixed) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$fixed")}) right: (ArithWord w:{($ VSub_Name "$value")}) ) spids: [65 72] ) } spids: [64] ) ] spids: [64] ) ] spids: [60 61 74 -1] ) (case_arm pat_list: [{(success)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:success) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$success")}) right: (ArithWord w:{($ VSub_Name "$value")}) ) spids: [82 89] ) } spids: [81] ) ] spids: [81] ) ] spids: [77 78 91 -1] ) (case_arm pat_list: [{(failed)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:failed) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$failed")}) right: (ArithWord w:{($ VSub_Name "$value")}) ) spids: [99 106] ) } spids: [98] ) ] spids: [98] ) (If arms: [ (if_arm cond: [ (C {(test)} {($ VSub_Name "$value")} {(KW_Bang "!") (Lit_Other "=")} {(0)} ) ] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:testnum) op: Equal rhs: { (CommandSubPart command_list: (CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name "$file"))} {(Lit_Other ":")} {(SQ <"test-results/\\(t[0-9]*\\)-">)} ) ] ) left_token: <Left_CommandSub "$("> spids: [125 137] ) } spids: [124] ) ] spids: [124] ) (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:failed_tests) op: Equal rhs: { (DQ ($ VSub_Name "$failed_tests") (" ") ($ VSub_Name "$testnum") ) } spids: [140] ) ] spids: [140] ) ] spids: [-1 121] ) ] spids: [-1 148] ) ] spids: [94 95 151 -1] ) (case_arm pat_list: [{(broken)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:broken) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$broken")}) right: (ArithWord w:{($ VSub_Name "$value")}) ) spids: [159 166] ) } spids: [158] ) ] spids: [158] ) ] spids: [154 155 168 -1] ) (case_arm pat_list: [{(total)}] action: [ (Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (LhsName name:total) op: Equal rhs: { (ArithSubPart anode: (ArithBinary op_id: Arith_Plus left: (ArithWord w:{($ VSub_Name "$total")}) right: (ArithWord w:{($ VSub_Name "$value")}) ) spids: [176 183] ) } spids: [175] ) ] spids: [175] ) ] spids: [171 172 185 -1] ) ] spids: [43 47 188] ) ] spids: [40 191] ) redirects: [ (Redir op_id: Redir_Less fd: -1 arg_word: {(DQ ($ VSub_Name "$file"))} spids: [193] ) ] ) ] spids: [28 198] ) ) (If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name "$failed_tests"))})] action: [ (C {(printf)} { (DQ (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ("failed test(s):") ($ VSub_Name "$failed_tests") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) (EscapedLiteralPart token:<Lit_EscapedChar "\\n">) ) } ) ] spids: [-1 211] ) ] spids: [-1 224] ) (C {(printf)} {(DQ ("%-8s%d") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(fixed)} {($ VSub_Name "$fixed")} ) (C {(printf)} {(DQ ("%-8s%d") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(success)} {($ VSub_Name "$success")} ) (C {(printf)} {(DQ ("%-8s%d") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(failed)} {($ VSub_Name "$failed")} ) (C {(printf)} {(DQ ("%-8s%d") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(broken)} {($ VSub_Name "$broken")} ) (C {(printf)} {(DQ ("%-8s%d") (EscapedLiteralPart token:<Lit_EscapedChar "\\n">))} {(total)} {($ VSub_Name "$total")} ) ] )