class ParallelTests::Test::Runner
def execute_command_and_capture_output(env, cmd, options)
def execute_command_and_capture_output(env, cmd, options) popen_options = {} # do not add `pgroup: true`, it will break `binding.irb` inside the test popen_options[:err] = [:child, :out] if options[:combine_stderr] pid = nil output = IO.popen(env, cmd, popen_options) do |io| pid = io.pid ParallelTests.pids.add(pid) capture_output(io, env, options) end ParallelTests.pids.delete(pid) if pid exitstatus = $?.exitstatus seed = output[/seed (\d+)/, 1] output = "#{Shellwords.shelljoin(cmd)}\n#{output}" if report_process_command?(options) && options[:serialize_stdout] { env: env, stdout: output, exit_status: exitstatus, command: cmd, seed: seed } end