Class: Henitai::Integration::RspecProcessRunner

Inherits:
Object
  • Object
show all
Defined in:
lib/henitai/integration/rspec_process_runner.rb

Overview

Runs RSpec child and suite processes on behalf of the integration.

Instance Method Summary collapse

Instance Method Details

#run_mutant(integration, mutant:, test_files:, timeout:) ⇒ Object



7
8
9
10
11
12
13
14
# File 'lib/henitai/integration/rspec_process_runner.rb', line 7

def run_mutant(integration, mutant:, test_files:, timeout:)
  log_paths = integration.scenario_log_paths(mutant_log_name(mutant))
  pid = fork_mutant_process(integration, mutant, test_files, log_paths)
  wait_result = integration.wait_with_timeout(pid, timeout)
  integration.build_result(wait_result, log_paths)
ensure
  finalize_mutant_run(integration, pid, wait_result)
end

#run_suite(integration, test_files, timeout:) ⇒ Object



16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/henitai/integration/rspec_process_runner.rb', line 16

def run_suite(integration, test_files, timeout:)
  log_paths = integration.scenario_log_paths("baseline")
  wait_result = nil
  FileUtils.mkdir_p(File.dirname(log_paths[:stdout_path]))
  pid = integration.spawn_suite_process(test_files, log_paths)
  wait_result = integration.wait_with_timeout(pid, timeout)
  integration.build_result(wait_result, log_paths)
ensure
  if pid
    integration.cleanup_process_group(pid) unless wait_result == :timeout
    integration.reap_child(pid) if wait_result.nil?
  end
end