Module: Minitest
- Includes:
- RunRespectingRakeTestopts
- Defined in:
- lib/rails/test_unit/minitest_plugin.rb
Defined Under Namespace
Modules: RunRespectingRakeTestopts Classes: RunVia, SuppressedSummaryReporter
Class Method Summary collapse
-
.plugin_rails_init(options) ⇒ Object
Owes great inspiration to test runner trailblazers like RSpec, minitest-reporters, maxitest and others.
- .plugin_rails_options(opts, options) ⇒ Object
-
.rake_run(patterns, exclude_patterns = []) ⇒ Object
:nodoc:.
- .run_via=(runner) ⇒ Object
Methods included from RunRespectingRakeTestopts
Class Method Details
.plugin_rails_init(options) ⇒ Object
Owes great inspiration to test runner trailblazers like RSpec, minitest-reporters, maxitest and others.
85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/rails/test_unit/minitest_plugin.rb', line 85 def self.plugin_rails_init() ENV["RAILS_ENV"] = [:environment] || "test" # If run via `ruby` we've been passed the files to run directly, or if run # via `rake` then they have already been eagerly required. unless run_via.ruby? || run_via.rake? # If there are no given patterns, we can assume that the user # simply runs the `bin/rails test` command without extra arguments. if [:patterns].empty? ::Rails::TestRequirer.require_files([:patterns], ["test/system/**/*"]) else ::Rails::TestRequirer.require_files([:patterns]) end end unless [: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 # Replace progress reporter for colors. reporter.reporters.delete_if { |reporter| reporter.kind_of?(SummaryReporter) || reporter.kind_of?(ProgressReporter) } reporter << SuppressedSummaryReporter.new([:io], ) reporter << ::Rails::TestUnitReporter.new([:io], ) end |
.plugin_rails_options(opts, options) ⇒ Object
14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/rails/test_unit/minitest_plugin.rb', line 14 def self.(opts, ) executable = ::Rails::TestUnitReporter.executable opts.separator "" opts.separator "Usage: #{executable} [options] [files or directories]" opts.separator "You can run a single test by appending a line number to a filename:" opts.separator "" opts.separator " #{executable} test/models/user_test.rb:27" opts.separator "" opts.separator "You can run multiple files and directories at the same time:" opts.separator "" opts.separator " #{executable} test/controllers test/integration/login_test.rb" opts.separator "" opts.separator "By default test failures and errors are reported inline during a run." opts.separator "" opts.separator "Rails options:" opts.on("-e", "--environment ENV", "Run tests in the ENV environment") do |env| [:environment] = env.strip end opts.on("-b", "--backtrace", "Show the complete backtrace") do [:full_backtrace] = true end opts.on("-d", "--defer-output", "Output test failures and errors after the test run") do [:output_inline] = false end opts.on("-f", "--fail-fast", "Abort test run on first failure or error") do [:fail_fast] = true end opts.on("-c", "--[no-]color", "Enable color in the output") do |value| [:color] = value end opts.on("-w", "--warnings", "Enable ruby warnings") do $VERBOSE = true end [:color] = true [:output_inline] = true [:patterns] = opts.order! unless run_via.rake? end |
.rake_run(patterns, exclude_patterns = []) ⇒ Object
:nodoc:
65 66 67 68 69 |
# File 'lib/rails/test_unit/minitest_plugin.rb', line 65 def self.rake_run(patterns, exclude_patterns = []) # :nodoc: self.run_via = :rake unless run_via.set? ::Rails::TestRequirer.require_files(patterns, exclude_patterns) autorun end |
.run_via=(runner) ⇒ Object
111 112 113 114 115 116 117 |
# File 'lib/rails/test_unit/minitest_plugin.rb', line 111 def self.run_via=(runner) if run_via.set? raise ArgumentError, "run_via already assigned" else run_via.runner = runner end end |