(command.CommandList children: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed_tests='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed_tests='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'failed_tests='> name:failed_tests) op: assign_op.Equal rhs: (rhs_word__Empty) ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'fixed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fixed='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fixed='> name:fixed) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'success='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'success='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'success='> name:success) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'failed='> name:failed) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'broken='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'broken='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'broken='> name:broken) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'total='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'total='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'total='> name:total) op: assign_op.Equal rhs: {<0>} ) ] redirects: [] ) (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<file>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.WhileUntil keyword: <Id.KW_While while> cond: (condition.Shell commands: [ (command.Simple blame_tok: <read> more_env: [] words: [{<read>} {<type>} {<value>}] redirects: [] do_fork: T ) ] ) body: (command.DoGroup left: <Id.KW_Do do> children: [ (command.Case case_kw: <Id.KW_Case case> to_match: (case_arg.Word w:{($ Id.VSub_DollarName type)}) arms_start: <Id.KW_In in> arms: [ (CaseArm left: <Id.Left_SingleQuote '\''> pattern: (pat.Words words:[{(SQ )}]) middle: <Id.Right_CasePat _> action: [(command.ControlFlow keyword:<Id.ControlFlow_Continue continue>)] right: <Id.Op_DSemi _> ) (CaseArm left: <fixed> pattern: (pat.Words words:[{<fixed>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'fixed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'fixed='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'fixed='> name:fixed) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName fixed)} right: {($ Id.VSub_DollarName value)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <success> pattern: (pat.Words words:[{<success>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'success='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'success='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'success='> name: success ) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName success)} right: {($ Id.VSub_DollarName value)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <failed> pattern: (pat.Words words:[{<failed>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'failed='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'failed='> name:failed) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName failed)} right: {($ Id.VSub_DollarName value)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [ {<test>} {($ Id.VSub_DollarName value)} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} ] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'testnum='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'testnum='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'testnum='> name: testnum ) op: assign_op.Equal rhs: { (CommandSub left_token: <Id.Left_DollarParen '$('> child: (command.Simple blame_tok: <expr> more_env: [] words: [ {<expr>} {(DQ ($ Id.VSub_DollarName file))} {<Id.Lit_Colon ':'>} {(SQ <'test-results/\\(t[0-9]*\\)-'>)} ] redirects: [] do_fork: T ) right: <Id.Eof_RParen _> ) } ) ] redirects: [] ) (command.ShAssignment left: <Id.Lit_VarLike 'failed_tests='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'failed_tests='> lhs: (sh_lhs_expr.Name left: <Id.Lit_VarLike 'failed_tests='> name: failed_tests ) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName failed_tests) <' '> ($ Id.VSub_DollarName testnum) ) } ) ] redirects: [] ) ] spids: [109 121] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <broken> pattern: (pat.Words words:[{<broken>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'broken='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'broken='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'broken='> name:broken) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName broken)} right: {($ Id.VSub_DollarName value)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) (CaseArm left: <total> pattern: (pat.Words words:[{<total>}]) middle: <Id.Right_CasePat _> action: [ (command.ShAssignment left: <Id.Lit_VarLike 'total='> pairs: [ (AssignPair left: <Id.Lit_VarLike 'total='> lhs: (sh_lhs_expr.Name left:<Id.Lit_VarLike 'total='> name:total) op: assign_op.Equal rhs: { (word_part.ArithSub left: <Id.Left_DollarDParen '$(('> anode: (arith_expr.Binary op_id: Id.Arith_Plus left: {($ Id.VSub_DollarName total)} right: {($ Id.VSub_DollarName value)} ) right: <Id.Right_DollarDParen _> ) } ) ] redirects: [] ) ] right: <Id.Op_DSemi _> ) ] arms_end: <Id.KW_Esac esac> redirects: [] ) ] right: <Id.KW_Done done> ) redirects: [ (Redir op: <Id.Redir_Less '<'> loc: (redir_loc.Fd fd:0) arg: {(DQ ($ Id.VSub_DollarName file))} ) ] ) ] right: <Id.KW_Done done> ) redirects: [] ) (command.If if_kw: <Id.KW_If if> arms: [ (IfArm keyword: <Id.KW_If if> cond: (condition.Shell commands: [ (command.Simple blame_tok: <test> more_env: [] words: [{<test>} {<-n>} {(DQ ($ Id.VSub_DollarName failed_tests))}] redirects: [] do_fork: T ) ] ) then_kw: <Id.KW_Then then> action: [ (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} { (DQ <Id.Lit_BadBackslash '\\'> <'nfailed test(s):'> ($ Id.VSub_DollarName failed_tests) <Id.Lit_BadBackslash '\\'> <n> <Id.Lit_BadBackslash '\\'> <n> ) } ] redirects: [] do_fork: T ) ] spids: [201 211] ) ] else_action: [] fi_kw: <Id.KW_Fi fi> redirects: [] ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%-8s%d'> <Id.Lit_BadBackslash '\\'> <n>)} {<fixed>} {($ Id.VSub_DollarName fixed)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%-8s%d'> <Id.Lit_BadBackslash '\\'> <n>)} {<success>} {($ Id.VSub_DollarName success)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%-8s%d'> <Id.Lit_BadBackslash '\\'> <n>)} {<failed>} {($ Id.VSub_DollarName failed)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%-8s%d'> <Id.Lit_BadBackslash '\\'> <n>)} {<broken>} {($ Id.VSub_DollarName broken)} ] redirects: [] do_fork: T ) (command.Simple blame_tok: <printf> more_env: [] words: [ {<printf>} {(DQ <'%-8s%d'> <Id.Lit_BadBackslash '\\'> <n>)} {<total>} {($ Id.VSub_DollarName total)} ] redirects: [] do_fork: T ) ] )