Class: Tryouts::FailureCollector

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

Overview

Collects and organizes failed test results across files for summary display Similar to RSpec's failure summary at the end of test runs

Defined Under Namespace

Classes: FailureEntry

Instance Method Summary collapse

Constructor Details

#initializeFailureCollector

Returns a new instance of FailureCollector.



49
50
51
52
# File 'lib/tryouts/failure_collector.rb', line 49

def initialize
  @failures            = []
  @files_with_failures = Set.new
end

Instance Method Details

#add_failure(file_path, result_packet) ⇒ Object

Add a failed test result



55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/tryouts/failure_collector.rb', line 55

def add_failure(file_path, result_packet)
  return unless result_packet.failed? || result_packet.error?

  entry = FailureEntry.new(
    file_path: file_path,
    test_case: result_packet.test_case,
    result_packet: result_packet,
  )

  @failures << entry
  @files_with_failures << file_path
end

#all_failuresObject

Get all failure entries (for detailed processing)



101
102
103
# File 'lib/tryouts/failure_collector.rb', line 101

def all_failures
  @failures.dup
end

#any_failures?Boolean

Check if any failures were collected

Returns:

  • (Boolean)


69
70
71
# File 'lib/tryouts/failure_collector.rb', line 69

def any_failures?
  !@failures.empty?
end

#clearObject

Reset the collector (useful for testing)



106
107
108
109
# File 'lib/tryouts/failure_collector.rb', line 106

def clear
  @failures.clear
  @files_with_failures.clear
end

#error_countObject

Get count of total errors



79
80
81
# File 'lib/tryouts/failure_collector.rb', line 79

def error_count
  @failures.count { |f| f.result_packet.error? }
end

#failure_countObject

Get count of total failures



74
75
76
# File 'lib/tryouts/failure_collector.rb', line 74

def failure_count
  @failures.count { |f| f.result_packet.failed? }
end

#failures_by_fileObject

Get failures grouped by file for summary display



94
95
96
97
98
# File 'lib/tryouts/failure_collector.rb', line 94

def failures_by_file
  @failures.group_by(&:file_path).transform_values do |file_failures|
    file_failures.sort_by(&:line_number)
  end
end

#files_with_failures_countObject

Get count of files with failures



89
90
91
# File 'lib/tryouts/failure_collector.rb', line 89

def files_with_failures_count
  @files_with_failures.size
end

#total_issuesObject

Get total issues (failures + errors)



84
85
86
# File 'lib/tryouts/failure_collector.rb', line 84

def total_issues
  @failures.size
end