class Tryouts::FailureCollector

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

def add_failure(file_path, result_packet)

Add a failed test result
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

def all_failures

Get all failure entries (for detailed processing)
def all_failures
  @failures.dup
end

def any_failures?

Check if any failures were collected
def any_failures?
  !@failures.empty?
end

def clear

Reset the collector (useful for testing)
def clear
  @failures.clear
  @files_with_failures.clear
end

def error_count

Get count of total errors
def error_count
  @failures.count { |f| f.result_packet.error? }
end

def failure_count

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

def failures_by_file

Get failures grouped by file for summary display
def failures_by_file
  @failures.group_by(&:file_path).transform_values do |file_failures|
    file_failures.sort_by(&:line_number)
  end
end

def files_with_failures_count

Get count of files with failures
def files_with_failures_count
  @files_with_failures.size
end

def initialize

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

def total_issues

Get total issues (failures + errors)
def total_issues
  @failures.size
end