(CommandList
  children: [
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:RM) op:Equal rhs:{(DQ ('rm -f'))} spids:[19])]
      spids: [19]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:MP_PY) op:Equal rhs:{(micropython)} spids:[24])]
      spids: [24]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:numtests) op:Equal rhs:{(0)} spids:[28])]
      spids: [28]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:numtestcases) op:Equal rhs:{(0)} spids:[31])]
      spids: [31]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:numpassed) op:Equal rhs:{(0)} spids:[34])]
      spids: [34]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:numskipped) op:Equal rhs:{(0)} spids:[37])]
      spids: [37]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:numfailed) op:Equal rhs:{(0)} spids:[40])]
      spids: [40]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:nameskipped) op:Equal rhs:{(SQ )} spids:[43])]
      spids: [43]
    )
    (Assignment
      keyword: Assign_None
      pairs: [(assign_pair lhs:(LhsName name:namefailed) op:Equal rhs:{(SQ )} spids:[45])]
      spids: [45]
    )
    (If
      arms: [
        (if_arm
          cond: [(C {(Lit_Other '[')} {($ VSub_Pound '$#')} {(-eq)} {(0)} {(Lit_Other ']')})]
          action: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (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'
                        )
                      )
                    }
                  spids: [63]
                )
              ]
              spids: [63]
            )
          ]
          spids: [16777215 60]
        )
      ]
      else_action: [
        (Assignment
          keyword: Assign_None
          pairs: [
            (assign_pair
              lhs: (LhsName name:tests)
              op: Equal
              rhs: {(DQ ($ VSub_At '$@'))}
              spids: [71]
            )
          ]
          spids: [71]
        )
      ]
      spids: [68 76]
    )
    (ForEach
      iter_name: infile
      iter_words: [{($ VSub_Name '$tests')}]
      do_arg_iter: False
      body: 
        (DoGroup
          children: [
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:basename)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(basename)} {($ VSub_Name '$infile')} {(.py)})]
                          )
                        left_token: <Left_Backtick '`'>
                        spids: [91 97]
                      )
                    }
                  spids: [90]
                )
              ]
              spids: [90]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:outfile)
                  op: Equal
                  rhs: {(${ VSub_Name basename) (.py.out)}
                  spids: [100]
                )
              ]
              spids: [100]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:expfile)
                  op: Equal
                  rhs: {($ VSub_Name '$infile') (.exp)}
                  spids: [107]
                )
              ]
              spids: [107]
            )
            (SimpleCommand
              words: [{($ VSub_Name '$MP_PY')} {($ VSub_Name '$infile')}]
              redirects: [
                (Redir
                  op_id: Redir_Great
                  fd: 16777215
                  arg_word: {($ VSub_Name '$outfile')}
                  spids: [117]
                )
              ]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:numtestcases)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [
                              (C {(expr)} {($ VSub_Name '$numtestcases')} {(Lit_Other '+')} 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (Pipeline
                                            children: [
                                              (C {(cat)} {($ VSub_Name '$expfile')})
                                              (C {(wc)} {(-l)})
                                            ]
                                            negated: False
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [130 140]
                                  )
                                }
                              )
                            ]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [123 141]
                      )
                    }
                  spids: [122]
                )
              ]
              spids: [122]
            )
            (If
              arms: [
                (if_arm
                  cond: [
                    (C {(grep)} {(-q)} 
                      {(DQ (SKIP) (Lit_Other '\\') ('|SyntaxError: invalid micropython decorator'))} {($ VSub_Name '$outfile')}
                    )
                  ]
                  action: [
                    (C {(echo)} {(DQ ('skip  ') ($ VSub_Name '$infile'))})
                    (C {($ VSub_Name '$RM')} {($ VSub_Name '$outfile')})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:numskipped)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {($ VSub_Name '$numskipped')} {(Lit_Other '+')} {(1)})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [185 193]
                              )
                            }
                          spids: [184]
                        )
                      ]
                      spids: [184]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:nameskipped)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$nameskipped') (' ') ($ VSub_Name '$basename'))}
                          spids: [196]
                        )
                      ]
                      spids: [196]
                    )
                  ]
                  spids: [16777215 160]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(diff)} {(--brief)} {($ VSub_Name '$expfile')} {($ VSub_Name '$outfile')}]
                  redirects: [
                    (Redir
                      op_id: Redir_Great
                      fd: 16777215
                      arg_word: {(/dev/null)}
                      spids: [215]
                    )
                  ]
                )
                (If
                  arms: [
                    (if_arm
                      cond: [
                        (C {(Lit_Other '[')} {($ VSub_QMark '$?')} {(-eq)} {(0)} {(Lit_Other ']')})
                      ]
                      action: [
                        (C {(echo)} {(DQ ('pass  ') ($ VSub_Name '$infile'))})
                        (C {($ VSub_Name '$RM')} {($ VSub_Name '$outfile')})
                        (Assignment
                          keyword: Assign_None
                          pairs: [
                            (assign_pair
                              lhs: (LhsName name:numpassed)
                              op: Equal
                              rhs: 
                                {
                                  (CommandSubPart
                                    command_list: 
                                      (CommandList
                                        children: [
                                          (C {(expr)} {($ VSub_Name '$numpassed')} {(Lit_Other '+')} 
                                            {(1)}
                                          )
                                        ]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [251 259]
                                  )
                                }
                              spids: [250]
                            )
                          ]
                          spids: [250]
                        )
                      ]
                      spids: [16777215 234]
                    )
                  ]
                  else_action: [
                    (C {(echo)} {(DQ ('FAIL  ') ($ VSub_Name '$infile'))})
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:numfailed)
                          op: Equal
                          rhs: 
                            {
                              (CommandSubPart
                                command_list: 
                                  (CommandList
                                    children: [
                                      (C {(expr)} {($ VSub_Name '$numfailed')} {(Lit_Other '+')} {(1)})
                                    ]
                                  )
                                left_token: <Left_CommandSub '$('>
                                spids: [274 282]
                              )
                            }
                          spids: [273]
                        )
                      ]
                      spids: [273]
                    )
                    (Assignment
                      keyword: Assign_None
                      pairs: [
                        (assign_pair
                          lhs: (LhsName name:namefailed)
                          op: Equal
                          rhs: {(DQ ($ VSub_Name '$namefailed') (' ') ($ VSub_Name '$basename'))}
                          spids: [285]
                        )
                      ]
                      spids: [285]
                    )
                  ]
                  spids: [262 293]
                )
              ]
              spids: [204 296]
            )
            (Assignment
              keyword: Assign_None
              pairs: [
                (assign_pair
                  lhs: (LhsName name:numtests)
                  op: Equal
                  rhs: 
                    {
                      (CommandSubPart
                        command_list: 
                          (CommandList
                            children: [(C {(expr)} {($ VSub_Name '$numtests')} {(Lit_Other '+')} {(1)})]
                          )
                        left_token: <Left_CommandSub '$('>
                        spids: [301 309]
                      )
                    }
                  spids: [300]
                )
              ]
              spids: [300]
            )
          ]
          spids: [87 311]
        )
      spids: [84 16777215]
    )
    (C {(echo)} 
      {
        (DQ ($ VSub_Name '$numtests') (' tests performed (') ($ VSub_Name '$numtestcases') 
          (' individual testcases)')
        )
      }
    )
    (C {(echo)} {(DQ ($ VSub_Name '$numpassed') (' tests passed'))})
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {($ VSub_Name '$numskipped')} {(KW_Bang '!') (Lit_Other '=')} {(0)} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ($ VSub_Name '$numskipped') (' tests skipped -') ($ VSub_Name '$nameskipped'))}
            )
          ]
          spids: [16777215 343]
        )
      ]
      spids: [16777215 354]
    )
    (If
      arms: [
        (if_arm
          cond: [
            (C {(Lit_Other '[')} {($ VSub_Name '$numfailed')} {(KW_Bang '!') (Lit_Other '=')} {(0)} 
              {(Lit_Other ']')}
            )
          ]
          action: [
            (C {(echo)} 
              {(DQ ($ VSub_Name '$numfailed') (' tests failed -') ($ VSub_Name '$namefailed'))}
            )
            (C {(exit)} {(1)})
          ]
          spids: [16777215 369]
        )
      ]
      else_action: [(C {(exit)} {(0)})]
      spids: [385 392]
    )
  ]
)