class RSpec::Core::RakeTask

def blank

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

def files_to_run # :nodoc:

:nodoc:
def files_to_run # :nodoc:
  if ENV['SPEC']
    FileList[ ENV['SPEC'] ]
  else
    FileList[ pattern ].map { |f| f.gsub(/"/, '\"').gsub(/'/, "\\\\'") }
  end
end

def gemfile?

def gemfile?
  File.exist?(gemfile)
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, @skip_bundler = false, false, false
  @verbose, @fail_on_error = true, true
  @gemfile = 'Gemfile'
  yield self if block_given?
  @rcov_path  ||= 'rcov'
  @rspec_path ||= 'rspec'
  @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_path
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 gemfile? unless skip_bundler
                      cmd_parts << runner
                      if rcov
                        cmd_parts << ["-Ispec#{File::PATH_SEPARATOR}lib", rcov_opts]
                      else
                        cmd_parts << rspec_opts
                      end
                      cmd_parts << files_to_run
                      if rcov && rspec_opts
                        cmd_parts << ["--",  rspec_opts]
                      end
                      cmd_parts.flatten.compact.reject(&blank).join(" ")
                    end
end

def spec_opts=(opts)

nil
default:

Command line options to pass to rspec.

Deprecated. Use rspec_opts instead.
def spec_opts=(opts)
  RSpec.deprecate('RSpec::Core::RakeTask#spec_opts=', 'rspec_opts=')
  @rspec_opts = opts
end

def warning=(true_or_false)

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

def warning?

def warning?
  warning
end