Hide Minitest's aggregated results if outputting inline.

We'd see the failures and errors reported after the run, which is needless, when we've already
reported them.

Turns:

```

.......................................S....................F

This failed

bin/rails test test/models/bunny_test.rb:14

....

Finished in 0.100886s, 1020.9583 runs/s, 1001.1338 assertions/s.

  2) Failure:
BunnyTest#test_something_failing [/Users/kasperhansen/Documents/code/collection_caching_test/test/models/bunny_test.rb:15]:
This failed

103 runs, 101 assertions, 1 failures, 0 errors, 1 skips

You have skipped tests. Run with --verbose for details.
```

Into:

```

...................S.......................................F

This failed

bin/rails test test/models/bunny_test.rb:14

......................

Finished in 0.069910s, 1473.3225 runs/s, 1444.7143 assertions/s.

103 runs, 101 assertions, 1 failures, 0 errors, 1 skips
```
This commit is contained in:
Kasper Timm Hansen 2015-10-07 22:23:26 +02:00
parent 5ddf6df966
commit da832016bf
2 changed files with 29 additions and 0 deletions

@ -3,6 +3,16 @@
require "rails/test_unit/test_requirer"
module Minitest
mattr_accessor(:hide_aggregated_results) { false }
module AggregatedResultSuppresion
def aggregated_results
super unless Minitest.hide_aggregated_results
end
end
SummaryReporter.prepend AggregatedResultSuppresion
def self.plugin_rails_options(opts, options)
opts.separator ""
opts.separator "Usage: bin/rails test [options] [files or directories]"
@ -38,6 +48,7 @@ def self.plugin_rails_options(opts, options)
options[:fail_fast] = true
end
options[:output_inline] = true
options[:patterns] = opts.order!
end
@ -63,6 +74,9 @@ def self.plugin_rails_init(options)
Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
end
# Disable the extra failure output after a run, unless output is deferred.
self.hide_aggregated_results = options[:output_inline]
self.reporter << ::Rails::TestUnitReporter.new(options[:io], options)
end

@ -355,6 +355,21 @@ def test_post
assert_match %r{Running:\n\nF\n\nwups!\n\nbin/rails test test/models/post_test.rb:4}, output
end
def test_no_failure_output_after_run_if_outputting_inline
app_file 'test/models/post_test.rb', <<-RUBY
require 'test_helper'
class PostTest < ActiveSupport::TestCase
def test_post
assert false, 'wups!'
end
end
RUBY
output = run_test_command('test/models/post_test.rb')
assert_match %r{Finished in.*\n\n1 runs, 1 assertions}, output
end
def test_fail_fast
app_file 'test/models/post_test.rb', <<-RUBY
require 'test_helper'