class RSpec::Core::RakeTask

def blank

def blank
  lambda {|s| s == ""}
end

def bundler?

def bundler?
  File.exist?("./Gemfile")
end

def files_to_run # :nodoc:

:nodoc:
def files_to_run # :nodoc:
  FileList[ pattern ].map { |f| %["#{f}"] }
end

def initialize(*args)

def initialize(*args)
  @name = args.shift || :spec
  @pattern, @rcov_path, @rcov_opts, @ruby_opts, @rspec_opts = nil, nil, nil, nil, nil
  @warning, @rcov = false, false
  @verbose, @fail_on_error = true, true
  yield self if block_given?
  @rcov_path ||= 'rcov'
  @pattern ||= './spec/**/*_spec.rb'
  desc("Run RSpec code examples") unless ::Rake.application.last_comment
  task name do
    RakeFileUtils.send(:verbose, verbose) do
      if files_to_run.empty?
        puts "No examples matching #{pattern} could be found"
      else
        begin
          ruby(spec_command)
        rescue
          puts failure_message if failure_message
          raise("ruby #{spec_command} failed") if fail_on_error
        end
      end
    end
  end
end

def runner

def runner
  rcov ? rcov_path : 'rspec'
end

def runner_options

def runner_options
  rcov ? [rcov_opts] : [rspec_opts]
end

def spec_command

def spec_command
  @spec_command ||= begin
                      cmd_parts = [ruby_opts]
                      cmd_parts << "-w" if warning?
                      cmd_parts << "-S"
                      cmd_parts << "bundle exec" if bundler?
                      cmd_parts << runner
                      cmd_parts << runner_options 
                      cmd_parts << files_to_run
                      cmd_parts.flatten.compact.reject(&blank).join(" ")
                    end
end

def spec_opts=(opts)

Deprecated. Use rspec_opts instead.
def spec_opts=(opts)
  RSpec.deprecate("spec_opts","rspec_opts")
  @rspec_opts = opts
end

def warning=(true_or_false)

def warning=(true_or_false)
  RSpec.deprecate("warning", 'ruby_opts="-w"')
  @warning = true_or_false
end

def warning?

def warning?
  warning
end