(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: [-1 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: -1
                  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) (EscapedLiteralPart token:<Lit_EscapedChar "\\|">) 
                          ("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: [-1 160]
                )
              ]
              else_action: [
                (SimpleCommand
                  words: [{(diff)} {(--brief)} {($ VSub_Name "$expfile")} {($ VSub_Name "$outfile")}]
                  redirects: [(Redir op_id:Redir_Great fd:-1 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: [-1 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 -1]
    )
    (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: [-1 343]
        )
      ]
      spids: [-1 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: [-1 369]
        )
      ]
      else_action: [(C {(exit)} {(0)})]
      spids: [385 392]
    )
  ]
)