mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Decorate Rails' backtrace cleaner before passing to minitest
The minitest database cleaner never returns empty traces so we need to make sure ours also have the same behavior before passing to minitest.
This commit is contained in:
parent
d98d749222
commit
0c8df42b50
2 changed files with 14 additions and 2 deletions
|
@ -35,12 +35,24 @@ module Minitest
|
||||||
options[:output_inline] = true
|
options[:output_inline] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
|
class RailsBacktraceCleanerDecorator
|
||||||
|
def initialize(backtrace_cleaner)
|
||||||
|
@backtrace_cleaner = backtrace_cleaner
|
||||||
|
end
|
||||||
|
|
||||||
|
def filter(backtrace)
|
||||||
|
filtered = @backtrace_cleaner.filter(backtrace)
|
||||||
|
filtered = backtrace.dup if filtered.empty?
|
||||||
|
filtered
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
# Owes great inspiration to test runner trailblazers like RSpec,
|
# Owes great inspiration to test runner trailblazers like RSpec,
|
||||||
# minitest-reporters, maxitest and others.
|
# minitest-reporters, maxitest and others.
|
||||||
def self.plugin_rails_init(options)
|
def self.plugin_rails_init(options)
|
||||||
unless options[:full_backtrace] || ENV["BACKTRACE"]
|
unless options[:full_backtrace] || ENV["BACKTRACE"]
|
||||||
# Plugin can run without Rails loaded, check before filtering.
|
# Plugin can run without Rails loaded, check before filtering.
|
||||||
Minitest.backtrace_filter = ::Rails.backtrace_cleaner if ::Rails.respond_to?(:backtrace_cleaner)
|
Minitest.backtrace_filter = RailsBacktraceCleanerDecorator.new(::Rails.backtrace_cleaner) if ::Rails.respond_to?(:backtrace_cleaner)
|
||||||
end
|
end
|
||||||
|
|
||||||
# Suppress summary reports when outputting inline rerun snippets.
|
# Suppress summary reports when outputting inline rerun snippets.
|
||||||
|
|
|
@ -514,7 +514,7 @@ module ApplicationTests
|
||||||
def test_shows_filtered_backtrace_by_default
|
def test_shows_filtered_backtrace_by_default
|
||||||
create_backtrace_test
|
create_backtrace_test
|
||||||
|
|
||||||
assert_match "Rails::BacktraceCleaner", run_test_command("test/unit/backtrace_test.rb")
|
assert_match "Minitest::RailsBacktraceCleanerDecorator", run_test_command("test/unit/backtrace_test.rb")
|
||||||
end
|
end
|
||||||
|
|
||||||
def test_backtrace_option
|
def test_backtrace_option
|
||||||
|
|
Loading…
Reference in a new issue