(command.CommandList
  children: [
    (C {<Id.KW_Set set>} {<-e>})
    (C {<cd>} 
      {
        (DQ 
          (command_sub
            left_token: <Id.Left_DollarParen '$('>
            child: (C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})
          ) <'/..'>
        )
      }
    )
    (command.AndOr
      ops: [Id.Op_DPipe]
      children: [
        (C {<Id.Lit_LBracket '['>} {<-z>} {(DQ ($ Id.VSub_DollarName '$DEBUG'))} {<Id.Lit_RBracket ']'>})
        (C {<Id.KW_Set set>} {<-x>})
      ]
    )
    (command.ShAssignment
      pairs: [
        (assign_pair
          lhs: (sh_lhs_expr.Name name:RACK_ROOT)
          op: assign_op.Equal
          rhs: 
            {
              (DQ 
                (command_sub
                  left_token: <Id.Left_DollarParen '$('>
                  child: 
                    (command.AndOr
                      ops: [Id.Op_DAmp]
                      children: [
                        (C {<cd>} 
                          {
                            (DQ 
                              (command_sub
                                left_token: <Id.Left_DollarParen '$('>
                                child: (C {<dirname>} {(DQ ($ Id.VSub_Number '$0'))})
                              )
                            ) <'/..'>
                          }
                        )
                        (C {<pwd>})
                      ]
                    )
                )
              )
            }
          spids: [48]
        )
      ]
    )
    (C {<export>} {<RACK_ROOT>})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (command.AndOr
                  ops: [Id.Op_DPipe]
                  children: [
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$RAILS_ENV'))} 
                      {<Id.Lit_Equals '='>} {(DQ <test>)} {<Id.Lit_RBracket ']'>}
                    )
                    (C {<Id.Lit_LBracket '['>} {(DQ ($ Id.VSub_DollarName '$RACK_ENV'))} 
                      {<Id.Lit_Equals '='>} {(DQ <test>)} {<Id.Lit_RBracket ']'>}
                    )
                  ]
                )
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<'script/setup'>})]
          spids: [75 108]
        )
      ]
      else_action: [
        (C {<export>} {<Id.Lit_VarLike 'RAILS_ENV='> (DQ <test>)} 
          {<Id.Lit_VarLike 'RACK_ENV='> (DQ <test>)}
        )
        (C {<'script/update'>})
      ]
    )
    (C {<echo>} {(DQ <'==> Running tests…'>)})
    (command.If
      arms: [
        (if_arm
          cond: [
            (command.Sentence
              child: 
                (C {<Id.Lit_LBracket '['>} {<-n>} {(DQ ($ Id.VSub_Number '$1'))} {<Id.Lit_RBracket ']'>})
              terminator: <Id.Op_Semi _>
            )
          ]
          action: [(C {<'bin/rake'>} {<test>} {(DQ ($ Id.VSub_Number '$1'))})]
          spids: [174 187]
        )
      ]
      else_action: [(C {<'bin/rake'>} {<test>})]
    )
  ]
)