class Minitest::Heat::Backtrace
Wrapper for separating backtrace into component parts
Constants
- Line
- UNREADABLE_FILE_ATTRIBUTES
- UNREADABLE_LINE
Attributes
raw_backtrace[R]
Public Class Methods
new(raw_backtrace)
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 45 def initialize(raw_backtrace) @raw_backtrace = raw_backtrace end
Public Instance Methods
empty?()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 49 def empty? raw_backtrace.nil? || raw_backtrace.empty? end
final_location()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 53 def final_location parsed_lines.first end
final_project_location()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 57 def final_project_location project_lines.first end
final_source_code_location()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 65 def final_source_code_location source_code_lines.first end
final_test_location()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 69 def final_test_location test_lines.first end
freshest_project_location()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 61 def freshest_project_location recently_modified_lines.first end
parsed_lines()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 89 def parsed_lines return [] if raw_backtrace.nil? @parsed_lines ||= raw_backtrace.map { |line| parse(line) } end
project_lines()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 73 def project_lines @project_lines ||= parsed_lines.select { |line| line[:path].include?(Dir.pwd) } end
recently_modified_lines()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 77 def recently_modified_lines @recently_modified_lines ||= project_lines.sort_by { |line| line[:mtime] }.reverse end
source_code_lines()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 85 def source_code_lines @source_code_lines ||= project_lines - test_lines end
test_lines()
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 81 def test_lines @tests_lines ||= project_lines.select { |line| test_file?(line) } end
Private Instance Methods
line_attributes(line)
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 105 def line_attributes(line) parts = line.split(':') pathname = Pathname.new(parts[0]) { path: pathname.dirname.to_s, file: pathname.basename.to_s, number: parts[1], container: reduce_container(parts[2]), mtime: pathname.exist? ? pathname.mtime : nil } rescue UNREADABLE_FILE_ATTRIBUTES end
parse(line)
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 101 def parse(line) Line.new(line_attributes(line)) end
reduce_container(container)
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 97 def reduce_container(container) container.delete_prefix('in `').delete_suffix("'") end
test_file?(line)
click to toggle source
# File lib/minitest/heat/backtrace.rb, line 120 def test_file?(line) line[:file].end_with?('_test.rb') || line[:file].start_with?('test_') end