Proper setup of rspec-fire and improved rspec rake tasks

This commit is contained in:
Fabio Rehm 2013-03-01 21:50:21 -03:00
parent 927c56c024
commit 250ed36d93
4 changed files with 35 additions and 11 deletions

View file

@ -1,9 +1,3 @@
raise 'This Rakefile is meant to be used from the dev box' unless ENV['USER'] == 'vagrant'
Dir['./tasks/**/*.rake'].each { |f| load f }
begin
require 'rspec/core/rake_task'
RSpec::Core::RakeTask.new(:spec)
task :default => :coverage
rescue LoadError; end

View file

@ -15,6 +15,11 @@ require 'rspec-spies'
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each { |f| require f }
require 'rspec/fire'
RSpec::Fire.configure do |config|
config.verify_constant_names = ENV['VERIFY_CONSTANT_NAMES'] == '1'
end
RSpec.configure do |config|
config.treat_symbols_as_metadata_keys_with_true_values = true
config.run_all_when_everything_filtered = true

View file

@ -1,5 +0,0 @@
desc 'Run specs with code coverage enabled'
task :coverage do
ENV['COVERAGE'] = 'true'
Rake::Task["spec"].execute
end

30
tasks/spec.rake Normal file
View file

@ -0,0 +1,30 @@
begin
require 'rspec/core/rake_task'
# TODO: add 'spec:acceptance' and 'spec:integration' then they are in place
desc 'Run all specs'
task :spec => ['spec:unit']
desc 'Default task which runs all specs with code coverage enabled'
task :default => ['spec:set_coverage', 'spec']
rescue LoadError; end
namespace :spec do
task :set_coverage do
ENV['COVERAGE'] = 'true'
end
def types
dirs = Dir['./spec/**/*_spec.rb'].map { |f| f.sub(/^\.\/(spec\/\w+)\/.*/, '\\1') }.uniq
Hash[dirs.map { |d| [d.split('/').last, d] }]
end
types.each do |type, dir|
desc "Run the code examples in #{dir}"
RSpec::Core::RakeTask.new(type) do |t|
# Tells rspec-fire to verify if constants used really exist
ENV['VERIFY_CONSTANT_NAMES'] = '1'
t.pattern = "./#{dir}/**/*_spec.rb"
end
end
end