From 92acd5d0e7ea25cc829599c6d0d141d39933e59a Mon Sep 17 00:00:00 2001 From: Jeremy Kemper Date: Tue, 7 Feb 2012 10:40:07 -0700 Subject: Fix that failed tests should exit with a nonzero error code. Partially reverts 14c89e7285d4e7cd40a542fbc31d9345f60c3aa4. Hat tip to @tenderlove for paring down the TestTask! --- railties/lib/rails/test_unit/sub_test_task.rb | 32 ++------------------------- railties/lib/rails/test_unit/testing.rake | 16 +++++++++++++- 2 files changed, 17 insertions(+), 31 deletions(-) (limited to 'railties/lib') diff --git a/railties/lib/rails/test_unit/sub_test_task.rb b/railties/lib/rails/test_unit/sub_test_task.rb index 284c70050f..87b6f9b5a4 100644 --- a/railties/lib/rails/test_unit/sub_test_task.rb +++ b/railties/lib/rails/test_unit/sub_test_task.rb @@ -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 diff --git a/railties/lib/rails/test_unit/testing.rake b/railties/lib/rails/test_unit/testing.rake index a23d22d607..290005993a 100644 --- a/railties/lib/rails/test_unit/testing.rake +++ b/railties/lib/rails/test_unit/testing.rake @@ -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 -- cgit v1.2.3