(command.CommandList
  children: [
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:RM) op:Equal rhs:{(DQ ('rm -f'))})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:MP_PY) op:Equal rhs:{(micropython)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:numtests) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:numtestcases) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:numpassed) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:numskipped) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:numfailed) op:Equal rhs:{(0)})]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:nameskipped) op:Equal rhs:(word.Empty))]
    )
    (command.ShAssignment
      pairs: [(assign_pair lhs:(sh_lhs_expr.Name name:namefailed) op:Equal rhs:(word.Empty))]
    )
    (command.If
      arms: [
        (if_arm
          cond: [(C {(Lit_LBracket '[')} {($ VSub_Pound '$#')} {(-eq)} {(0)} {(Lit_RBracket ']')})]
          action: [
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name 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.ShAssignment
          pairs: [(assign_pair lhs:(sh_lhs_expr.Name 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.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:basename)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_Backtick '`'>
                        command_list: 
                          (command.CommandList
                            children: [(C {(basename)} {($ VSub_DollarName '$infile')} {(.py)})]
                          )
                      )
                    }
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:outfile)
                  op: Equal
                  rhs: {(${ VSub_Name basename) (.py.out)}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:expfile)
                  op: Equal
                  rhs: {($ VSub_DollarName '$infile') (.exp)}
                )
              ]
            )
            (command.Simple
              words: [{($ VSub_DollarName '$MP_PY')} {($ VSub_DollarName '$infile')}]
              redirects: [
                (redir.Redir
                  op: <Redir_Great '>'>
                  fd: 16777215
                  arg_word: {($ VSub_DollarName '$outfile')}
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:numtestcases)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(expr)} {($ VSub_DollarName '$numtestcases')} {(Lit_Other '+')} 
                                {
                                  (command_sub
                                    left_token: <Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (command.Pipeline
                                            children: [
                                              (C {(cat)} {($ VSub_DollarName '$expfile')})
                                              (C {(wc)} {(-l)})
                                            ]
                                            negated: F
                                          )
                                        ]
                                      )
                                  )
                                }
                              )
                            ]
                          )
                      )
                    }
                )
              ]
            )
            (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.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:numskipped)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {($ VSub_DollarName '$numskipped')} {(Lit_Other '+')} 
                                        {(1)}
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:nameskipped)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$nameskipped') (' ') 
                                ($ VSub_DollarName '$basename')
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
              else_action: [
                (command.Simple
                  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_LBracket '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_RBracket ']')})
                      ]
                      action: [
                        (C {(echo)} {(DQ ('pass  ') ($ VSub_DollarName '$infile'))})
                        (C {($ VSub_DollarName '$RM')} {($ VSub_DollarName '$outfile')})
                        (command.ShAssignment
                          pairs: [
                            (assign_pair
                              lhs: (sh_lhs_expr.Name name:numpassed)
                              op: Equal
                              rhs: 
                                {
                                  (command_sub
                                    left_token: <Left_DollarParen '$('>
                                    command_list: 
                                      (command.CommandList
                                        children: [
                                          (C {(expr)} {($ VSub_DollarName '$numpassed')} 
                                            {(Lit_Other '+')} {(1)}
                                          )
                                        ]
                                      )
                                  )
                                }
                            )
                          ]
                        )
                      ]
                    )
                  ]
                  else_action: [
                    (C {(echo)} {(DQ ('FAIL  ') ($ VSub_DollarName '$infile'))})
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:numfailed)
                          op: Equal
                          rhs: 
                            {
                              (command_sub
                                left_token: <Left_DollarParen '$('>
                                command_list: 
                                  (command.CommandList
                                    children: [
                                      (C {(expr)} {($ VSub_DollarName '$numfailed')} {(Lit_Other '+')} 
                                        {(1)}
                                      )
                                    ]
                                  )
                              )
                            }
                        )
                      ]
                    )
                    (command.ShAssignment
                      pairs: [
                        (assign_pair
                          lhs: (sh_lhs_expr.Name name:namefailed)
                          op: Equal
                          rhs: 
                            {
                              (DQ ($ VSub_DollarName '$namefailed') (' ') 
                                ($ VSub_DollarName '$basename')
                              )
                            }
                        )
                      ]
                    )
                  ]
                )
              ]
            )
            (command.ShAssignment
              pairs: [
                (assign_pair
                  lhs: (sh_lhs_expr.Name name:numtests)
                  op: Equal
                  rhs: 
                    {
                      (command_sub
                        left_token: <Left_DollarParen '$('>
                        command_list: 
                          (command.CommandList
                            children: [
                              (C {(expr)} {($ VSub_DollarName '$numtests')} {(Lit_Other '+')} {(1)})
                            ]
                          )
                      )
                    }
                )
              ]
            )
          ]
        )
    )
    (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_LBracket '[')} {($ VSub_DollarName '$numskipped')} {(KW_Bang '!') (Lit_Equals '=')} 
              {(0)} {(Lit_RBracket ']')}
            )
          ]
          action: [
            (C {(echo)} 
              {
                (DQ ($ VSub_DollarName '$numskipped') (' tests skipped -') 
                  ($ VSub_DollarName '$nameskipped')
                )
              }
            )
          ]
        )
      ]
    )
    (command.If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_LBracket '[')} {($ VSub_DollarName '$numfailed')} {(KW_Bang '!') (Lit_Equals '=')} 
              {(0)} {(Lit_RBracket ']')}
            )
          ]
          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)})]
    )
  ]
)