(command.CommandList
  children: [
    (C {(set)} {(-e)})
    (C {(cd)} 
      {
        (DQ 
          (word_part.CommandSubPart
            command_list: 
              (command.CommandList
                children: [(C {(dirname)} {(DQ ($ VSub_Number '$0'))})]
              )
            left_token: <Left_CommandSub '$('>
            spids: [20 26]
          ) (/..)
        )
      }
    )
    (command.AndOr
      ops: [Op_DPipe]
      children: [
        (C {(Lit_Other '[')} {(-z)} {(DQ ($ VSub_DollarName '$DEBUG'))} {(Lit_Other ']')})
        (C {(set)} {(-x)})
      ]
    )
    (command.Assignment
      keyword: Assign_None
      pairs: [
        (assign_pair
          lhs: (lhs_expr.LhsName name:RACK_ROOT spids:[48])
          op: Equal
          rhs: 
            {
              (DQ 
                (word_part.CommandSubPart
                  command_list: 
                    (command.CommandList
                      children: [
                        (command.AndOr
                          ops: [Op_DAmp]
                          children: [
                            (C {(cd)} 
                              {
                                (DQ 
                                  (word_part.CommandSubPart
                                    command_list: 
                                      (command.CommandList
                                        children: [(C {(dirname)} {(DQ ($ VSub_Number '$0'))})]
                                      )
                                    left_token: <Left_CommandSub '$('>
                                    spids: [54 60]
                                  )
                                ) (/..)
                              }
                            )
                            (C {(pwd)})
                          ]
                        )
                      ]
                    )
                  left_token: <Left_CommandSub '$('>
                  spids: [50 67]
                )
              )
            }
          spids: [48]
        )
      ]
      spids: [48]
    )
    (C {(export)} {(RACK_ROOT)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Op_DPipe]
                  children: [
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$RAILS_ENV'))} {(Lit_Other '=')} 
                      {(DQ (test))} {(Lit_Other ']')}
                    )
                    (C {(Lit_Other '[')} {(DQ ($ VSub_DollarName '$RACK_ENV'))} {(Lit_Other '=')} 
                      {(DQ (test))} {(Lit_Other ']')}
                    )
                  ]
                )
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(script/setup)})]
          spids: [16777215 108]
        )
      ]
      else_action: [
        (C {(export)} {(Lit_VarLike 'RAILS_ENV=') (DQ (test))} {(Lit_VarLike 'RACK_ENV=') (DQ (test))})
        (C {(script/update)})
      ]
      spids: [125 164]
    )
    (C {(echo)} {(DQ ('==> Running tests\xe2\x80\xa6'))})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: (C {(Lit_Other '[')} {(-n)} {(DQ ($ VSub_Number '$1'))} {(Lit_Other ']')})
              terminator: <Op_Semi ';'>
            )
          ]
          action: [(C {(bin/rake)} {(test)} {(DQ ($ VSub_Number '$1'))})]
          spids: [16777215 187]
        )
      ]
      else_action: [(C {(bin/rake)} {(test)})]
      spids: [202 209]
    )
  ]
)