(command.CommandList children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:RM) op: assign_op.Equal rhs: {(DQ <'rm -f'>)} spids: [19] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:MP_PY) op: assign_op.Equal rhs: {<micropython>} spids: [24] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numtests) op: assign_op.Equal rhs: {<0>} spids: [28] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numtestcases) op: assign_op.Equal rhs: {<0>} spids: [31] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numpassed) op: assign_op.Equal rhs: {<0>} spids: [34] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numskipped) op: assign_op.Equal rhs: {<0>} spids: [37] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numfailed) op: assign_op.Equal rhs: {<0>} spids: [40] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:nameskipped) op: assign_op.Equal rhs: (word.Empty) spids: [43] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:namefailed) op: assign_op.Equal rhs: (word.Empty) spids: [45] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_Pound '$#')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>}) ] ) action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tests) op: assign_op.Equal rhs: { (DQ < 'basics/*.py micropython/*.py float/*.py import/*.py io/*.py misc/*.py unicode/*.py extmod/*.py unix/*.py' > ) } spids: [63] ) ] ) ] spids: [48 60] ) ] else_action: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:tests) op: assign_op.Equal rhs: {(DQ ($ Id.VSub_At '$@'))} spids: [71] ) ] ) ] ) (command.ForEach iter_name: infile iter_words: [{($ Id.VSub_DollarName '$tests')}] do_arg_iter: F body: (command.DoGroup children: [ (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:basename) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_Backtick '`'> child: (C {<basename>} {($ Id.VSub_DollarName '$infile')} {<.py>}) ) } spids: [90] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:outfile) op: assign_op.Equal rhs: {(${ Id.VSub_Name basename) <.py.out>} spids: [102] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:expfile) op: assign_op.Equal rhs: {($ Id.VSub_DollarName '$infile') <.exp>} spids: [109] ) ] ) (command.Simple words: [{($ Id.VSub_DollarName '$MP_PY')} {($ Id.VSub_DollarName '$infile')}] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {($ Id.VSub_DollarName '$outfile')} ) ] do_fork: T ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numtestcases) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$numtestcases')} {<Id.Lit_Other '+'>} { (command_sub left_token: <Id.Left_DollarParen '$('> child: (command.Pipeline children: [ (C {<cat>} {($ Id.VSub_DollarName '$expfile')}) (C {<wc>} {<-l>}) ] negated: F ) ) } ) ) } spids: [124] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<grep>} {<-q>} { (DQ <SKIP> <Id.Lit_BadBackslash '\\'> <'|SyntaxError: invalid micropython decorator'> ) } {($ Id.VSub_DollarName '$outfile')} ) ] ) action: [ (C {<echo>} {(DQ <'skip '> ($ Id.VSub_DollarName '$infile'))}) (C {($ Id.VSub_DollarName '$RM')} {($ Id.VSub_DollarName '$outfile')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numskipped) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$numskipped')} {<Id.Lit_Other '+'>} {<1>} ) ) } spids: [186] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:nameskipped) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$nameskipped') <' '> ($ Id.VSub_DollarName '$basename') ) } spids: [198] ) ] ) ] spids: [147 162] ) ] else_action: [ (command.Simple words: [ {<diff>} {<--brief>} {($ Id.VSub_DollarName '$expfile')} {($ Id.VSub_DollarName '$outfile')} ] redirects: [ (redir op: <Id.Redir_Great '>'> loc: (redir_loc.Fd fd:1) arg: {<'/dev/null'>} ) ] do_fork: T ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_QMark '$?')} {<-eq>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} {(DQ <'pass '> ($ Id.VSub_DollarName '$infile'))}) (C {($ Id.VSub_DollarName '$RM')} {($ Id.VSub_DollarName '$outfile')}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numpassed) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$numpassed')} {<Id.Lit_Other '+'>} {<1>} ) ) } spids: [252] ) ] ) ] spids: [223 236] ) ] else_action: [ (C {<echo>} {(DQ <'FAIL '> ($ Id.VSub_DollarName '$infile'))}) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numfailed) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$numfailed')} {<Id.Lit_Other '+'>} {<1>} ) ) } spids: [275] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:namefailed) op: assign_op.Equal rhs: { (DQ ($ Id.VSub_DollarName '$namefailed') <' '> ($ Id.VSub_DollarName '$basename') ) } spids: [287] ) ] ) ] ) ] ) (command.ShAssignment pairs: [ (assign_pair lhs: (sh_lhs_expr.Name name:numtests) op: assign_op.Equal rhs: { (command_sub left_token: <Id.Left_DollarParen '$('> child: (C {<expr>} {($ Id.VSub_DollarName '$numtests')} {<Id.Lit_Other '+'>} {<1>}) ) } spids: [302] ) ] ) ] ) ) (C {<echo>} { (DQ ($ Id.VSub_DollarName '$numtests') <' tests performed ('> ($ Id.VSub_DollarName '$numtestcases') <' individual testcases)'> ) } ) (C {<echo>} {(DQ ($ Id.VSub_DollarName '$numpassed') <' tests passed'>)}) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$numskipped')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$numskipped') <' tests skipped -'> ($ Id.VSub_DollarName '$nameskipped') ) } ) ] spids: [332 345] ) ] ) (command.If arms: [ (if_arm cond: (condition.Shell commands: [ (C {<Id.Lit_LBracket '['>} {($ Id.VSub_DollarName '$numfailed')} {<Id.KW_Bang '!'> <Id.Lit_Equals '='>} {<0>} {<Id.Lit_RBracket ']'>} ) ] ) action: [ (C {<echo>} { (DQ ($ Id.VSub_DollarName '$numfailed') <' tests failed -'> ($ Id.VSub_DollarName '$namefailed') ) } ) (command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<1>}) ] spids: [358 371] ) ] else_action: [(command.ControlFlow token:<Id.ControlFlow_Exit exit> arg_word:{<0>})] ) ] )