Class: Tryouts::TestRunner

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

Constant Summary collapse

FRAMEWORKS =
{
  rspec: Translators::RSpecTranslator,
  minitest: Translators::MinitestTranslator,
}.freeze
FRAMEWORK_DEFAULTS =
{
  direct: { shared_context: true, generate_only: false },
  rspec: { shared_context: false, generate_only: false },
  minitest: { shared_context: false, generate_only: false },
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(files:, options:, output_manager:) ⇒ TestRunner

Returns a new instance of TestRunner.



26
27
28
29
30
31
32
33
# File 'lib/tryouts/test_runner.rb', line 26

def initialize(files:, options:, output_manager:)
  @files           = files
  @options         = apply_framework_defaults(options)
  @output_manager  = output_manager
  @translator      = initialize_translator
  @global_tally    = initialize_global_tally
  @file_line_specs = options[:file_line_specs] || {}
end

Instance Method Details

#runObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/tryouts/test_runner.rb', line 35

def run
  log_run_info
  validate_framework

  result = process_files
  show_failure_summary
  # Always show grand total for agent mode to ensure output, otherwise only for multiple files
  if @options[:agent] || @global_tally[:aggregator].get_file_counts[:total] > 1
    show_grand_total
  end

  # For agent critical mode, only count errors as failures
  if @options[:agent] && ([:critical, 'critical'].include?(@options[:agent_focus]))
    # Include infrastructure failures as errors for agent critical mode
    display_errors        = @global_tally[:aggregator].get_display_counts[:errors]
    infrastructure_errors = @global_tally[:aggregator].infrastructure_failure_count
    display_errors + infrastructure_errors
  else
    result
  end
end