Fix that failed tests should exit with a nonzero error code.

Partially reverts 14c89e7285d4e7cd40a542fbc31d9345f60c3aa4.

Hat tip to @tenderlove for paring down the TestTask!
This commit is contained in:
Jeremy Kemper
2012-02-07 10:40:07 -07:00
committed by Aaron Patterson
parent 73fcbaaa78
commit 92acd5d0e7
2 changed files with 17 additions and 31 deletions

View File

@@ -1,36 +1,8 @@
module Rails
# Don't abort when tests fail; move on the next test task.
# Silence the default description to cut down on `rake -T` noise.
class SubTestTask < Rake::TestTask
# Create the tasks defined by this task lib.
def define
lib_path = @libs.join(File::PATH_SEPARATOR)
task @name do
run_code = ''
RakeFileUtils.verbose(@verbose) do
run_code =
case @loader
when :direct
"-e 'ARGV.each{|f| load f}'"
when :testrb
"-S testrb #{fix}"
when :rake
rake_loader
end
@ruby_opts.unshift( "-I\"#{lib_path}\"" )
@ruby_opts.unshift( "-w" ) if @warning
begin
ruby @ruby_opts.join(" ") +
" \"#{run_code}\" " +
file_list.collect { |fn| "\"#{fn}\"" }.join(' ') +
" #{option_list}"
rescue => error
warn "Error running #{name}: #{error.inspect}"
end
end
end
self
def desc(string)
# Ignore the description.
end
end
end

View File

@@ -55,7 +55,21 @@ namespace :test do
# Placeholder task for other Railtie and plugins to enhance. See Active Record for an example.
end
task :run => %w(test:units test:functionals test:integration)
task :run do
errors = %w(test:units test:functionals test:integration).collect do |task|
begin
Rake::Task[task].invoke
nil
rescue => e
{ :task => task, :exception => e }
end
end.compact
if errors.any?
puts errors.map { |e| "Errors running #{e[:task]}! #{e[:exception].inspect}" }.join("\n")
abort
end
end
Rake::TestTask.new(:recent => "test:prepare") do |t|
since = TEST_CHANGES_SINCE