class Cucumber::Formatter::BacktraceFilter
Public Class Methods
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 8 def initialize(exception) @exception = exception @backtrace_filters = standard_ruby_paths + dynamic_ruby_paths end
Public Instance Methods
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 13 def exception return @exception if ::Cucumber.use_full_backtrace backtrace = @exception.backtrace.map { |line| line.gsub(pwd_pattern, './') } filtered = backtrace.reject { |line| line.match?(backtrace_filter_patterns) } if ::ENV['CUCUMBER_TRUNCATE_OUTPUT'] filtered = filtered.map do |line| # Strip off file locations match = regexp_filter.match(line) match ? match[1] : line end end @exception.tap { |error_object| error_object.set_backtrace(filtered) } end
Private Instance Methods
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 32 def backtrace_filter_patterns Regexp.new(@backtrace_filters.join('|')) end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 36 def dynamic_ruby_paths [].tap do |paths| paths << RbConfig::CONFIG['rubyarchdir'] if RbConfig::CONFIG['rubyarchdir'] paths << RbConfig::CONFIG['rubylibdir'] if RbConfig::CONFIG['rubylibdir'] paths << 'org/jruby/' if ::Cucumber::JRUBY paths << '<internal:' if RUBY_ENGINE == 'truffleruby' end end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 46 def pwd_pattern /#{::Regexp.escape(::Dir.pwd)}\//m end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 50 def regexp_filter ruby_greater_than_three_four? ? three_four_filter : three_three_filter end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 54 def ruby_greater_than_three_four? RUBY_VERSION.to_f >= 3.4 end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 58 def standard_ruby_paths %w[ /vendor/rails lib/cucumber bin/cucumber: lib/rspec gems/ site_ruby/ minitest test/unit .gem/ruby bin/bundle rdebug-ide ] end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 74 def three_four_filter /(.*):in '/ end
Source
# File lib/cucumber/formatter/backtrace_filter.rb, line 78 def three_three_filter /(.*):in `/ end