Skip to content

Instantly share code, notes, and snippets.

@williamn
Created December 1, 2010 02:29
Show Gist options
  • Save williamn/722828 to your computer and use it in GitHub Desktop.
Save williamn/722828 to your computer and use it in GitHub Desktop.
unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:* tasks
vendored_cucumber_bin = Dir["#{Rails.root}/vendor/{gems,plugins}/cucumber*/bin/cucumber"].first
$LOAD_PATH.unshift(File.dirname(vendored_cucumber_bin) + '/../lib') unless vendored_cucumber_bin.nil?
begin
require 'cucumber/rake/task'
namespace :hudson do
def report_path
"hudson/report/features"
end
Cucumber::Rake::Task.new({:cucumber => ['coverage_setup', 'report_setup', 'db:test:prepare']}, 'Run features that should pass') do |t|
t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
t.fork = true # You may get faster startup if you set this to false
t.profile = 'default'
t.cucumber_opts = "--format junit --out #{report_path}"
t.rcov = true
t.rcov_opts = %w{--rails --exclude \/usr/local\/,features\/}
end
end
namespace :cucumber do
Cucumber::Rake::Task.new({:ok => ['coverage_setup', 'db:test:prepare']}, 'Run features that should pass') do |t|
t.binary = vendored_cucumber_bin # If nil, the gem's binary is used.
t.fork = true # You may get faster startup if you set this to false
t.profile = 'default'
t.rcov = true
t.rcov_opts = %w{--rails --exclude \/usr/local\/,features\/}
end
Cucumber::Rake::Task.new({:wip => 'db:test:prepare'}, 'Run features that are being worked on') do |t|
t.binary = vendored_cucumber_bin
t.fork = true # You may get faster startup if you set this to false
t.profile = 'wip'
end
Cucumber::Rake::Task.new({:rerun => 'db:test:prepare'}, 'Record failing features and run only them if any exist') do |t|
t.binary = vendored_cucumber_bin
t.fork = true # You may get faster startup if you set this to false
t.profile = 'rerun'
end
desc 'Run all features'
task :all => [:ok, :wip]
end
task :coverage_setup do
rm_rf "coverage"
end
task :report_setup do
rm_rf report_path
end
desc 'Alias for cucumber:ok'
task :cucumber => 'cucumber:ok'
task :default => :cucumber
task :features => :cucumber do
STDERR.puts "*** The 'features' task is deprecated. See rake -T cucumber ***"
end
rescue LoadError
desc 'cucumber rake task not available (cucumber not installed)'
task :cucumber do
abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment