class DohTest::BacktraceParser
Public Class Methods
new(backtrace)
click to toggle source
# File lib/dohtest/backtrace_parser.rb, line 4 def initialize(backtrace) @backtrace = backtrace end
Public Instance Methods
relevant_stack()
click to toggle source
# File lib/dohtest/backtrace_parser.rb, line 8 def relevant_stack @relevant_stack ||= find_relevant_stack end
summary()
click to toggle source
# File lib/dohtest/backtrace_parser.rb, line 12 def summary @summary ||= build_summary end
Private Instance Methods
build_summary()
click to toggle source
# File lib/dohtest/backtrace_parser.rb, line 37 def build_summary retval = '' prev_filename = '' prev_simplified = '' relevant_stack.each do |path, line_number| filename = File.basename(path) simplified = "#{filename}:#{line_number}" if simplified == prev_simplified # ignore it elsif filename == prev_filename retval += ",#{line_number}" elsif retval.empty? retval = simplified else retval += ";#{simplified}" end prev_filename = filename prev_simplified = simplified end retval end
find_relevant_stack()
click to toggle source
# File lib/dohtest/backtrace_parser.rb, line 17 def find_relevant_stack retval = [] found_start = false @backtrace.each do |location| has_doh_test = location.index('dohtest') if found_start && has_doh_test break elsif has_doh_test # just ignore it and continue else found_start = true info = location.rpartition(':in').first parts = info.partition(':') raise "unexpected backtrace element: #{location}" if parts.first.nil? || parts.last.nil? retval << [parts.first, parts.last] end end retval end