2017-08-14 13:08:09 -04:00
|
|
|
# frozen_string_literal: true
|
|
|
|
|
2017-06-25 13:08:26 -04:00
|
|
|
require "active_support/core_ext/module/attribute_accessors"
|
|
|
|
require "rails/test_unit/reporter"
|
Show minitest options in test runner help
Since #29572, minitest options are available but are no longer showed
in help.
This fixed to show minitest option in help as with Rails 5.1.2.
**before**
```
./bin/rails t --help
You can run a single test by appending a line number to a filename:
bin/rails test test/models/user_test.rb:27
You can run multiple files and directories at the same time:
bin/rails test test/controllers test/integration/login_test.rb
By default test failures and errors are reported inline during a run.
Rails options:
-w, --warnings Run with Ruby warnings enabled
-e, --environment Run tests in the ENV environment
-b, --backtrace Show the complete backtrace
-d, --defer-output Output test failures and errors after the test run
-f, --fail-fast Abort test run on first failure or error
-c, --[no-]color Enable color in the output
```
**after**
```
./bin/rails t --help
You can run a single test by appending a line number to a filename:
bin/rails test test/models/user_test.rb:27
You can run multiple files and directories at the same time:
bin/rails test test/controllers test/integration/login_test.rb
By default test failures and errors are reported inline during a run.
minitest options:
-h, --help Display this help.
-s, --seed SEED Sets random seed. Also via env. Eg: SEED=n rake
-v, --verbose Verbose. Show progress processing files.
-n, --name PATTERN Filter run on /regexp/ or string.
--exclude PATTERN Exclude /regexp/ or string from run.
Known extensions: rails, pride
-w, --warnings Run with Ruby warnings enabled
-e, --environment Run tests in the ENV environment
-b, --backtrace Show the complete backtrace
-d, --defer-output Output test failures and errors after the test run
-f, --fail-fast Abort test run on first failure or error
-c, --[no-]color Enable color in the output
-p, --pride Pride. Show your testing pride!
```
2017-07-29 19:21:22 -04:00
|
|
|
require "rails/test_unit/runner"
|
2017-06-25 13:08:26 -04:00
|
|
|
|
|
|
|
module Minitest
|
|
|
|
class SuppressedSummaryReporter < SummaryReporter
|
|
|
|
# Disable extra failure output after a run if output is inline.
|
|
|
|
def aggregated_results(*)
|
|
|
|
super unless options[:output_inline]
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
def self.plugin_rails_options(opts, options)
|
Show minitest options in test runner help
Since #29572, minitest options are available but are no longer showed
in help.
This fixed to show minitest option in help as with Rails 5.1.2.
**before**
```
./bin/rails t --help
You can run a single test by appending a line number to a filename:
bin/rails test test/models/user_test.rb:27
You can run multiple files and directories at the same time:
bin/rails test test/controllers test/integration/login_test.rb
By default test failures and errors are reported inline during a run.
Rails options:
-w, --warnings Run with Ruby warnings enabled
-e, --environment Run tests in the ENV environment
-b, --backtrace Show the complete backtrace
-d, --defer-output Output test failures and errors after the test run
-f, --fail-fast Abort test run on first failure or error
-c, --[no-]color Enable color in the output
```
**after**
```
./bin/rails t --help
You can run a single test by appending a line number to a filename:
bin/rails test test/models/user_test.rb:27
You can run multiple files and directories at the same time:
bin/rails test test/controllers test/integration/login_test.rb
By default test failures and errors are reported inline during a run.
minitest options:
-h, --help Display this help.
-s, --seed SEED Sets random seed. Also via env. Eg: SEED=n rake
-v, --verbose Verbose. Show progress processing files.
-n, --name PATTERN Filter run on /regexp/ or string.
--exclude PATTERN Exclude /regexp/ or string from run.
Known extensions: rails, pride
-w, --warnings Run with Ruby warnings enabled
-e, --environment Run tests in the ENV environment
-b, --backtrace Show the complete backtrace
-d, --defer-output Output test failures and errors after the test run
-f, --fail-fast Abort test run on first failure or error
-c, --[no-]color Enable color in the output
-p, --pride Pride. Show your testing pride!
```
2017-07-29 19:21:22 -04:00
|
|
|
Rails::TestUnit::Runner.attach_before_load_options(opts)
|
|
|
|
|
2017-06-25 13:08:26 -04:00
|
|
|
opts.on("-b", "--backtrace", "Show the complete backtrace") do
|
|
|
|
options[:full_backtrace] = true
|
|
|
|
end
|
|
|
|
|
|
|
|
opts.on("-d", "--defer-output", "Output test failures and errors after the test run") do
|
|
|
|
options[:output_inline] = false
|
|
|
|
end
|
|
|
|
|
|
|
|
opts.on("-f", "--fail-fast", "Abort test run on first failure or error") do
|
|
|
|
options[:fail_fast] = true
|
|
|
|
end
|
|
|
|
|
|
|
|
opts.on("-c", "--[no-]color", "Enable color in the output") do |value|
|
|
|
|
options[:color] = value
|
|
|
|
end
|
|
|
|
|
|
|
|
options[:color] = true
|
|
|
|
options[:output_inline] = true
|
|
|
|
end
|
|
|
|
|
|
|
|
# Owes great inspiration to test runner trailblazers like RSpec,
|
|
|
|
# minitest-reporters, maxitest and others.
|
|
|
|
def self.plugin_rails_init(options)
|
|
|
|
unless options[:full_backtrace] || ENV["BACKTRACE"]
|
|
|
|
# Plugin can run without Rails loaded, check before filtering.
|
|
|
|
Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
|
|
|
|
end
|
|
|
|
|
2018-02-18 15:35:30 -05:00
|
|
|
# Suppress summary reports when outputting inline rerun snippets.
|
|
|
|
if reporter.reporters.reject! { |reporter| reporter.kind_of?(SummaryReporter) }
|
|
|
|
reporter << SuppressedSummaryReporter.new(options[:io], options)
|
|
|
|
end
|
2018-02-05 06:04:25 -05:00
|
|
|
|
2017-06-25 13:08:26 -04:00
|
|
|
# Replace progress reporter for colors.
|
2018-02-18 15:35:30 -05:00
|
|
|
if reporter.reporters.reject! { |reporter| reporter.kind_of?(ProgressReporter) }
|
|
|
|
reporter << ::Rails::TestUnitReporter.new(options[:io], options)
|
2018-02-05 06:04:25 -05:00
|
|
|
end
|
2017-06-25 13:08:26 -04:00
|
|
|
end
|
|
|
|
|
|
|
|
# Backwardscompatibility with Rails 5.0 generated plugin test scripts
|
|
|
|
mattr_reader :run_via, default: {}
|
|
|
|
end
|