Class: Tryouts::FailureCollector::FailureEntry

Inherits:
Data
  • Object
show all
Defined in:
lib/tryouts/failure_collector.rb

Overview

Data structure for a single failure entry

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#file_pathObject (readonly)

Returns the value of attribute file_path

Returns:

  • (Object)

    the current value of file_path



12
13
14
# File 'lib/tryouts/failure_collector.rb', line 12

def file_path
  @file_path
end

#result_packetObject (readonly)

Returns the value of attribute result_packet

Returns:

  • (Object)

    the current value of result_packet



12
13
14
# File 'lib/tryouts/failure_collector.rb', line 12

def result_packet
  @result_packet
end

#test_caseObject (readonly)

Returns the value of attribute test_case

Returns:

  • (Object)

    the current value of test_case



12
13
14
# File 'lib/tryouts/failure_collector.rb', line 12

def test_case
  @test_case
end

Instance Method Details

#descriptionObject



18
19
20
21
# File 'lib/tryouts/failure_collector.rb', line 18

def description
  desc = test_case.description.to_s.strip
  desc.empty? ? 'unnamed test' : desc
end

#failure_reasonObject



23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/tryouts/failure_collector.rb', line 23

def failure_reason
  case result_packet.status
  when :failed
    if result_packet.actual_results.any? && result_packet.expected_results.any?
      "expected #{result_packet.first_expected.inspect}, got #{result_packet.first_actual.inspect}"
    else
      'test failed'
    end
  when :error
    error_msg = result_packet.error&.message || 'unknown error'
    "#{result_packet.error&.class&.name || 'Error'}: #{error_msg}"
  else
    'test did not pass'
  end
end

#line_numberObject



13
14
15
16
# File 'lib/tryouts/failure_collector.rb', line 13

def line_number
  # Use first expectation line for consistency with main error display
  test_case.first_expectation_line || test_case.line_range&.first || 0
end

#source_contextObject



39
40
41
42
43
44
45
46
# File 'lib/tryouts/failure_collector.rb', line 39

def source_context
  return [] unless test_case.source_lines

  # Show the test code (excluding setup/teardown)
  test_case.source_lines.reject do |line|
    line.strip.empty? || line.strip.start_with?('#')
  end.first(3) # Limit to first 3 relevant lines
end