class RSpec::Core::RakeTask
def blank
def blank lambda {|s| s == ""} end
def files_to_run # :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: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)
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