(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:failed_tests spids:[12]) op: Equal rhs: (word.EmptyWord) spids: [12] ) ] spids: [12] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:fixed spids:[14]) op: Equal rhs: {(0)} spids: [14] ) ] spids: [14] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:success spids:[17]) op: Equal rhs: {(0)} spids: [17] ) ] spids: [17] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:failed spids:[20]) op: Equal rhs: {(0)} spids: [20] ) ] spids: [20] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:broken spids:[23]) op: Equal rhs: {(0)} spids: [23] ) ] spids: [23] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:total spids:[26]) op: Equal rhs: {(0)} spids: [26] ) ] spids: [26] ) (command.WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(file)})] body: (command.DoGroup children: [ (command.WhileUntil keyword: <KW_While while> cond: [(C {(read)} {(type)} {(value)})] body: (command.DoGroup children: [ (command.Case to_match: {($ VSub_Name '$type')} arms: [ (case_arm pat_list: [{(SQ )}] action: [(command.ControlFlow token:<ControlFlow_Continue continue>)] spids: [58 60 65 16777215] ) (case_arm pat_list: [{(fixed)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:fixed spids:[72]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Name '$fixed')}) right: (arith_expr.ArithWord w:{($ VSub_Name '$value')}) ) spids: [73 80] ) } spids: [72] ) ] spids: [72] ) ] spids: [68 69 82 16777215] ) (case_arm pat_list: [{(success)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:success spids:[89]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Name '$success')}) right: (arith_expr.ArithWord w:{($ VSub_Name '$value')}) ) spids: [90 97] ) } spids: [89] ) ] spids: [89] ) ] spids: [85 86 99 16777215] ) (case_arm pat_list: [{(failed)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:failed spids:[106]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Name '$failed')}) right: (arith_expr.ArithWord w:{($ VSub_Name '$value')}) ) spids: [107 114] ) } spids: [106] ) ] spids: [106] ) (command.If arms: [ (if_arm cond: [ (C {(test)} {($ VSub_Name '$value')} {(KW_Bang '!') (Lit_Other '=')} {(0)} ) ] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:testnum spids:[132]) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {(DQ ($ VSub_Name '$file'))} {(Lit_Other ':')} {(SQ <'test-results/\\(t[0-9]*\\)-'>)} ) ] ) left_token: <Left_CommandSub '$('> spids: [133 145] ) } spids: [132] ) ] spids: [132] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:failed_tests spids:[148]) op: Equal rhs: { (DQ ($ VSub_Name '$failed_tests') (' ') ($ VSub_Name '$testnum') ) } spids: [148] ) ] spids: [148] ) ] spids: [16777215 129] ) ] spids: [16777215 156] ) ] spids: [102 103 159 16777215] ) (case_arm pat_list: [{(broken)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:broken spids:[166]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Name '$broken')}) right: (arith_expr.ArithWord w:{($ VSub_Name '$value')}) ) spids: [167 174] ) } spids: [166] ) ] spids: [166] ) ] spids: [162 163 176 16777215] ) (case_arm pat_list: [{(total)}] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:total spids:[183]) op: Equal rhs: { (word_part.ArithSubPart anode: (arith_expr.ArithBinary op_id: Arith_Plus left: (arith_expr.ArithWord w:{($ VSub_Name '$total')}) right: (arith_expr.ArithWord w:{($ VSub_Name '$value')}) ) spids: [184 191] ) } spids: [183] ) ] spids: [183] ) ] spids: [179 180 193 16777215] ) ] spids: [51 55 196] ) ] spids: [48 199] ) redirects: [ (redir.Redir op: <Redir_Less '<'> fd: 16777215 arg_word: {(DQ ($ VSub_Name '$file'))} ) ] ) ] spids: [36 206] ) ) (command.If arms: [ (if_arm cond: [(C {(test)} {(-n)} {(DQ ($ VSub_Name '$failed_tests'))})] action: [ (C {(printf)} { (DQ (Lit_Other '\\') ('nfailed test(s):') ($ VSub_Name '$failed_tests') (Lit_Other '\\') (n) (Lit_Other '\\') (n) ) } ) ] spids: [16777215 219] ) ] spids: [16777215 234] ) (C {(printf)} {(DQ ('%-8s%d') (Lit_Other '\\') (n))} {(fixed)} {($ VSub_Name '$fixed')}) (C {(printf)} {(DQ ('%-8s%d') (Lit_Other '\\') (n))} {(success)} {($ VSub_Name '$success')}) (C {(printf)} {(DQ ('%-8s%d') (Lit_Other '\\') (n))} {(failed)} {($ VSub_Name '$failed')}) (C {(printf)} {(DQ ('%-8s%d') (Lit_Other '\\') (n))} {(broken)} {($ VSub_Name '$broken')}) (C {(printf)} {(DQ ('%-8s%d') (Lit_Other '\\') (n))} {(total)} {($ VSub_Name '$total')}) ] )