Class: MiniTest::BacktraceFilter
- Inherits:
-
Object
- Object
- MiniTest::BacktraceFilter
- Defined in:
- lib/minitest/backtrace_filter.rb
Overview
Filters backtraces of exceptions that may arise when running tests.
Class Method Summary collapse
-
.default_filter ⇒ MiniTest::BacktraceFilter
Returns the default filter.
Instance Method Summary collapse
-
#add_filter(regex)
Adds a filter.
-
#filter(backtrace) ⇒ Array
Filters a backtrace.
-
#filters?(str) ⇒ Boolean
Determines if the string would be filtered.
-
#initialize ⇒ BacktraceFilter
constructor
Creates a new backtrace filter.
Constructor Details
#initialize ⇒ BacktraceFilter
Creates a new backtrace filter.
21 22 23 |
# File 'lib/minitest/backtrace_filter.rb', line 21 def initialize @filters = [] end |
Class Method Details
.default_filter ⇒ MiniTest::BacktraceFilter
Returns the default filter.
The default filter will filter out all MiniTest and minitest-reporters lines.
10 11 12 13 14 15 16 17 18 |
# File 'lib/minitest/backtrace_filter.rb', line 10 def self.default_filter unless defined? @default_filter filter = self.new filter.add_filter(/lib\/minitest/) @default_filter = filter end @default_filter end |
Instance Method Details
#add_filter(regex)
Adds a filter.
28 29 30 |
# File 'lib/minitest/backtrace_filter.rb', line 28 def add_filter(regex) @filters << regex end |
#filter(backtrace) ⇒ Array
This logic is based off of MiniTest's #filter_backtrace.
Filters a backtrace.
This will add new lines to the new backtrace until a filtered line is encountered. If there were lines added to the new backtrace, it returns those lines. However, if the first line in the backtrace was filtered, resulting in an empty backtrace, it returns all lines that would have been unfiltered. If that in turn does not contain any lines, it returns the original backtrace.
52 53 54 55 56 57 58 59 60 61 62 63 64 |
# File 'lib/minitest/backtrace_filter.rb', line 52 def filter(backtrace) result = [] backtrace.each do |line| break if filters?(line) result << line end result = backtrace.reject { |line| filters?(line) } if result.empty? result = backtrace.dup if result.empty? result end |
#filters?(str) ⇒ Boolean
Determines if the string would be filtered.
36 37 38 |
# File 'lib/minitest/backtrace_filter.rb', line 36 def filters?(str) @filters.any? { |filter| str =~ filter } end |