Class: Cucumber::Formatter::LegacyApi::BacktraceFilter

Inherits:
Object
  • Object
show all
Defined in:
lib/cucumber/formatter/legacy_api/adapter.rb

Constant Summary collapse

BACKTRACE_FILTER_PATTERNS =
[/vendor\/rails|lib\/cucumber|bin\/cucumber:|lib\/rspec|gems\/|minitest|test\/unit|.gem\/ruby|lib\/ruby/]
PWD_PATTERN =
/#{::Regexp.escape(::Dir.pwd)}\//m

Instance Method Summary collapse

Constructor Details

#initialize(exception) ⇒ BacktraceFilter

Returns a new instance of BacktraceFilter.



1034
1035
1036
# File 'lib/cucumber/formatter/legacy_api/adapter.rb', line 1034

def initialize(exception)
  @exception = exception
end

Instance Method Details

#exceptionObject



1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
# File 'lib/cucumber/formatter/legacy_api/adapter.rb', line 1038

def exception
  return @exception if ::Cucumber.use_full_backtrace
  @exception.backtrace.each{|line| line.gsub!(PWD_PATTERN, "./")}

  filtered = (@exception.backtrace || []).reject do |line|
    BACKTRACE_FILTER_PATTERNS.detect { |p| line =~ p }
  end

  if ::ENV['CUCUMBER_TRUNCATE_OUTPUT']
    # Strip off file locations
    filtered = filtered.map do |line|
      line =~ /(.*):in `/ ? $1 : line
    end
  end

  @exception.set_backtrace(filtered)
  @exception
end