class TurboTests::Runner

def run

def run
  @num_processes = [
    ParallelTests.determine_number_of_processes(@count),
    ParallelTests::RSpec::Runner.tests_with_size(@files, {}).size
  ].min
  use_runtime_info = @files == ["spec"]
  group_opts = {}
  if use_runtime_info
    group_opts[:runtime_log] = @runtime_log
  else
    group_opts[:group_by] = :filesize
  end
  tests_in_groups =
    ParallelTests::RSpec::Runner.tests_in_groups(
      @files,
      @num_processes,
      **group_opts
    )
  setup_tmp_dir
  subprocess_opts = {
    record_runtime: use_runtime_info
  }
  report_number_of_tests(tests_in_groups)
  wait_threads = tests_in_groups.map.with_index do |tests, process_id|
    start_regular_subprocess(tests, process_id + 1, **subprocess_opts)
  end
  handle_messages
  @reporter.finish
  @threads.each(&:join)
  @reporter.failed_examples.empty? && wait_threads.map(&:value).all?(&:success?)
end