Module: Minitest::ParallelForkInterrupt

Includes:
ParallelForkHalt
Defined in:
lib/minitest/parallel_fork/interrupt.rb

Instance Method Summary collapse

Methods included from ParallelForkHalt

#parallel_fork_child_data, #parallel_fork_data_from_marshal, #parallel_fork_data_to_marshal, #parallel_fork_run_test_suites

Instance Method Details

#parallel_fork_fork_child(i, suites, reporter, options) ⇒ Object



28
29
30
31
32
# File 'lib/minitest/parallel_fork/interrupt.rb', line 28

def parallel_fork_fork_child(i, suites, reporter, options)
  res = super
  @parallel_fork_child_pids << res[0]
  res
end

#parallel_fork_kill_all(signal) ⇒ Object



34
35
36
37
38
39
40
41
42
# File 'lib/minitest/parallel_fork/interrupt.rb', line 34

def parallel_fork_kill_all(signal)
  @parallel_fork_child_pids.each do |pid|
    begin
      Process.kill(signal, pid)
    rescue Errno::ESRCH
      # Process already terminated
    end
  end
end

#run_after_parallel_fork_hook(i) ⇒ Object



23
24
25
26
# File 'lib/minitest/parallel_fork/interrupt.rb', line 23

def run_after_parallel_fork_hook(i)
  super
  Signal.trap(:INT, 'IGNORE')
end

#run_before_parallel_fork_hookObject



13
14
15
16
17
18
19
20
21
# File 'lib/minitest/parallel_fork/interrupt.rb', line 13

def run_before_parallel_fork_hook
  Signal.trap(:INT) do
    Signal.trap(:INT) do
      parallel_fork_kill_all :KILL
    end
    $stderr.puts "\nInterrupted.\nExiting ...\nInterrupt again to exit immediately."
    parallel_fork_kill_all :USR1
  end
end