diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2012-02-07 10:40:07 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2012-02-07 10:41:30 -0700 |
commit | abe4a8d070d069f24f7befd9a8da25c40f4c2a6d (patch) | |
tree | f077582ff6224cacd13771a271c4a6c12a451557 /railties/lib/rails/test_unit | |
parent | 641359e54aa34291d9bf1361c4979080a471862d (diff) | |
download | rails-abe4a8d070d069f24f7befd9a8da25c40f4c2a6d.tar.gz rails-abe4a8d070d069f24f7befd9a8da25c40f4c2a6d.tar.bz2 rails-abe4a8d070d069f24f7befd9a8da25c40f4c2a6d.zip |
Fix that failed tests should exit with a nonzero error code.
Partially reverts 14c89e7285d4e7cd40a542fbc31d9345f60c3aa4.
Hat tip to @tenderlove for paring down the TestTask!
Diffstat (limited to 'railties/lib/rails/test_unit')
-rw-r--r-- | railties/lib/rails/test_unit/sub_test_task.rb | 32 | ||||
-rw-r--r-- | railties/lib/rails/test_unit/testing.rake | 16 |
2 files changed, 17 insertions, 31 deletions
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 2c0b167a99..55bebb549b 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 |