Class: Test::Unit::FaultLocationDetector

Inherits:
Object
  • Object
show all
Defined in:
lib/test/unit/fault-location-detector.rb

Instance Method Summary collapse

Constructor Details

#initialize(fault, code_snippet_fetcher) ⇒ FaultLocationDetector

Returns a new instance of FaultLocationDetector



10
11
12
13
14
# File 'lib/test/unit/fault-location-detector.rb', line 10

def initialize(fault, code_snippet_fetcher)
  @fault = fault
  @code_snippet_fetcher = code_snippet_fetcher
  extract_fault_information
end

Instance Method Details

#split_backtrace_entry(entry) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# File 'lib/test/unit/fault-location-detector.rb', line 16

def split_backtrace_entry(entry)
  match_data = /\A(.+):(\d+)(?::(.*))?\z/.match(entry)
  return nil if match_data.nil?
  file, line_number, context = match_data.to_a[1..-1]
  line_number = line_number.to_i
  if /\Ain `(.+?)'/ =~ context
    method_name = $1
    if /\Ablock (?:\(.+?\) )?in / =~ method_name
      method_name = $POSTMATCH
    end
  else
    method_name = nil
  end
  [file, line_number, context, method_name]
end

#target?(backtrace_entry) ⇒ Boolean

Returns:

  • (Boolean)


32
33
34
35
36
37
38
39
40
41
42
43
44
45
# File 'lib/test/unit/fault-location-detector.rb', line 32

def target?(backtrace_entry)
  file, line_number, context, method_name =
    split_backtrace_entry(backtrace_entry)
  _ = context
  return false if file.nil?

  if @fault_source_location
    target_source_location?(file, line_number, method_name)
  elsif @fault_method_name
    target_method?(method_name)
  else
    true
  end
end