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