[rspec-users] Can I get RSpec NOT to abort rake on failing specs?
David Chelimsky
dchelimsky at gmail.com
Wed Jul 9 22:09:36 EDT 2008
On Jul 9, 2008, at 5:52 PM, Rick DeNatale wrote:
> At work we've got a rather complex app with both specs and tests.
> Our default rake task runs all our our tests and specs. We've also
> got separate rake tasks to run groups of tests and specs in the
> various subdirectories. The default task simply lists all the
> individual tasks as pre-reqs.
>
> We do a lot of branching and merging, so we really want to run all
> of the tests and specs to see all failures.
>
> We just realized that Rspec is aborting rake when a spec fails or
> errors in an individual rake task. I've been trying to fix this to
> no avail. I notice that SpecTask has an attribute accessor
> fail_on_error which looks like it SHOULD prevent terminating rake if
> it's set to false. So I tried that and it doesn't seem to work.
> Here's our projects lib/tasks/spec.rake, any ideas?
>
>
> def spec_tasks
> %w{spec:controllers spec:models spec:helpers spec:views spec:lib}
> + spec_subdirs.map {|t| "spec:#{t}"}
> end
>
> begin
> require RAILS_ROOT + '/vendor/plugins/rspec/lib/spec/rake/spectask'
>
> namespace :spec do
> spec_subdirs.each do |task|
> next if Rake::Task.task_defined?("spec:#{task}")
spec:models, views, controllers and helpers are all defined already in
vendor/plugins/rspec-rails/tasks/rspec.rake, so the next keyword is
being invoked for all of those. You'll need to undefined them before
you redefine them here.
spec_tasks.each {|t| Rake::Task::TASKS.delete t}
Cheers,
David
>
>
> desc "Run the specs under spec/#{task}"
> Spec::Rake::SpecTask.new(task) do |t|
> t.fail_on_error = false
> t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
> t.spec_files = FileList["spec/#{task}/*_spec.rb"]
> end
>
> namespace(task) do
> Spec::Rake::SpecTask.new(:rcov) do |t|
> t.fail_on_error = false
> t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts
> \""]
> t.rcov_opts = ['--include', "\"app/#{task}/.*.rb$\""]
> t.rcov = true
> t.spec_files = FileList["spec/#{task}/*_spec.rb"]
> end
> end
> end
> end
> rescue LoadError => e
> puts "Spec tasks are not available - #{e}"
> end
>
> namespace :spec do
> desc "Run each set of specs individually"
> task :each => spec_tasks
> end
>
>
> --
> Rick DeNatale
>
> My blog on Ruby
> http://talklikeaduck.denhaven2.com/
> _______________________________________________
> rspec-users mailing list
> rspec-users at rubyforge.org
> http://rubyforge.org/mailman/listinfo/rspec-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://rubyforge.org/pipermail/rspec-users/attachments/20080709/8c549d35/attachment.html>
More information about the rspec-users
mailing list