class Tryouts::FileProcessor

def execute_tests(testrun)

def execute_tests(testrun)
  tex = TestExecutor.new(@file, testrun, @options, @output_manager, @translator, @global_tally)
  tex.execute
end

def handle_general_error(ex)

def handle_general_error(ex)
  @global_tally[:total_errors] += 1 if @global_tally
  @output_manager.file_failure(@file, ex.message, ex.backtrace)
  1
end

def handle_generate_only_mode(testrun)

def handle_generate_only_mode(testrun)
  mode = Tryouts::CLI::GenerateMode.new(@file, testrun, @options, @output_manager, @translator)
  mode.handle
  0
end

def handle_inspect_mode(testrun)

def handle_inspect_mode(testrun)
  mode = Tryouts::CLI::InspectMode.new(@file, testrun, @options, @output_manager, @translator)
  mode.handle
  0
end

def handle_syntax_error(ex)

def handle_syntax_error(ex)
  @output_manager.file_failure(@file, "Syntax error: #{ex.message}")
  1
end

def initialize(file:, options:, output_manager:, translator:, global_tally:)

def initialize(file:, options:, output_manager:, translator:, global_tally:)
  @file           = file
  @options        = options
  @output_manager = output_manager
  @translator     = translator
  @global_tally   = global_tally
end

def process

def process
  testrun                     = PrismParser.new(@file).parse
  @global_tally[:file_count] += 1
  @output_manager.file_parsed(@file, testrun.total_tests)
  if @options[:inspect]
    handle_inspect_mode(testrun)
  elsif @options[:generate_only]
    handle_generate_only_mode(testrun)
  else
    execute_tests(testrun)
  end
rescue TryoutSyntaxError => ex
  handle_syntax_error(ex)
rescue StandardError, SystemStackError, LoadError, SecurityError, NoMemoryError => ex
  handle_general_error(ex)
end