(command.CommandList children: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:RM) op:Equal rhs:{(DQ ('rm -f'))})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:MP_PY) op:Equal rhs:{(micropython)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:numtests) op:Equal rhs:{(0)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:numtestcases) op:Equal rhs:{(0)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:numpassed) op:Equal rhs:{(0)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:numskipped) op:Equal rhs:{(0)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:numfailed) op:Equal rhs:{(0)})] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:nameskipped) op:Equal rhs:(word.EmptyWord))] ) (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:namefailed) op:Equal rhs:(word.EmptyWord))] ) (command.If arms: [ (if_arm cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(0)} {(Lit_Other ']')})] action: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:tests) op: Equal rhs: { (DQ ( 'basics/*.py micropython/*.py float/*.py import/*.py io/*.py misc/*.py unicode/*.py extmod/*.py unix/*.py' ) ) } ) ] ) ] ) ] else_action: [ (command.Assignment keyword: Assign_None pairs: [(assign_pair lhs:(lhs_expr.LhsName name:tests) op:Equal rhs:{(DQ ($ VSub_At '$@'))})] ) ] ) (command.ForEach iter_name: infile iter_words: [{($ VSub_DollarName '$tests')}] do_arg_iter: F body: (command.DoGroup children: [ (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:basename) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [(C {(basename)} {($ VSub_DollarName '$infile')} {(.py)})] ) left_token: <Left_Backtick '`'> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:outfile) op: Equal rhs: {(${ VSub_Name basename) (.py.out)} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:expfile) op: Equal rhs: {($ VSub_DollarName '$infile') (.exp)} ) ] ) (command.SimpleCommand words: [{($ VSub_DollarName '$MP_PY')} {($ VSub_DollarName '$infile')}] redirects: [ (redir.Redir op: <Redir_Great '>'> fd: 16777215 arg_word: {($ VSub_DollarName '$outfile')} ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:numtestcases) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {($ VSub_DollarName '$numtestcases')} {(Lit_Other '+')} { (word_part.CommandSubPart command_list: (command.CommandList children: [ (command.Pipeline children: [ (C {(cat)} {($ VSub_DollarName '$expfile')}) (C {(wc)} {(-l)}) ] negated: F ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (command.If arms: [ (if_arm cond: [ (C {(grep)} {(-q)} {(DQ (SKIP) (Lit_Other '\\') ('|SyntaxError: invalid micropython decorator'))} {($ VSub_DollarName '$outfile')} ) ] action: [ (C {(echo)} {(DQ ('skip ') ($ VSub_DollarName '$infile'))}) (C {($ VSub_DollarName '$RM')} {($ VSub_DollarName '$outfile')}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:numskipped) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {($ VSub_DollarName '$numskipped')} {(Lit_Other '+')} {(1)} ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:nameskipped) op: Equal rhs: { (DQ ($ VSub_DollarName '$nameskipped') (' ') ($ VSub_DollarName '$basename') ) } ) ] ) ] ) ] else_action: [ (command.SimpleCommand words: [ {(diff)} {(--brief)} {($ VSub_DollarName '$expfile')} {($ VSub_DollarName '$outfile')} ] redirects: [(redir.Redir op:<Redir_Great '>'> fd:16777215 arg_word:{(/dev/null)})] ) (command.If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')}) ] action: [ (C {(echo)} {(DQ ('pass ') ($ VSub_DollarName '$infile'))}) (C {($ VSub_DollarName '$RM')} {($ VSub_DollarName '$outfile')}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:numpassed) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {($ VSub_DollarName '$numpassed')} {(Lit_Other '+')} {(1)} ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) ] ) ] else_action: [ (C {(echo)} {(DQ ('FAIL ') ($ VSub_DollarName '$infile'))}) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:numfailed) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {($ VSub_DollarName '$numfailed')} {(Lit_Other '+')} {(1)} ) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:namefailed) op: Equal rhs: { (DQ ($ VSub_DollarName '$namefailed') (' ') ($ VSub_DollarName '$basename') ) } ) ] ) ] ) ] ) (command.Assignment keyword: Assign_None pairs: [ (assign_pair lhs: (lhs_expr.LhsName name:numtests) op: Equal rhs: { (word_part.CommandSubPart command_list: (command.CommandList children: [ (C {(expr)} {($ VSub_DollarName '$numtests')} {(Lit_Other '+')} {(1)}) ] ) left_token: <Left_DollarParen '$('> ) } ) ] ) ] ) ) (C {(echo)} { (DQ ($ VSub_DollarName '$numtests') (' tests performed (') ($ VSub_DollarName '$numtestcases') (' individual testcases)') ) } ) (C {(echo)} {(DQ ($ VSub_DollarName '$numpassed') (' tests passed'))}) (command.If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_DollarName '$numskipped')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) ] action: [ (C {(echo)} { (DQ ($ VSub_DollarName '$numskipped') (' tests skipped -') ($ VSub_DollarName '$nameskipped') ) } ) ] ) ] ) (command.If arms: [ (if_arm cond: [ (C {(Lit_Other '[')} {($ VSub_DollarName '$numfailed')} {(KW_Bang '!') (Lit_Other '=')} {(0)} {(Lit_Other ']')} ) ] action: [ (C {(echo)} { (DQ ($ VSub_DollarName '$numfailed') (' tests failed -') ($ VSub_DollarName '$namefailed') ) } ) (command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(1)}) ] ) ] else_action: [(command.ControlFlow token:<ControlFlow_Exit exit> arg_word:{(0)})] ) ] )