module Minitest::ParallelForkHalt
Public Instance Methods
Source
# File lib/minitest/parallel_fork/halt.rb 29 def parallel_fork_child_data(data) 30 threads = {} 31 data.each{|pid, read| threads[pid] = Thread.new(read, &:read)} 32 results = [] 33 34 while sleep(0.01) && !threads.empty? 35 threads.to_a.each do |pid, thread| 36 unless thread.alive? 37 threads.delete(pid) 38 results << parallel_fork_data_from_marshal(thread.value) 39 40 if @parallel_fork_stop 41 # If halt is requested, signal other children to halt 42 threads.each_key do |pid| 43 Process.kill(:USR1, pid) 44 end 45 46 # Set a flag indicating that all child processes have been signaled 47 @parallel_fork_stop = :FINISHED 48 end 49 end 50 end 51 end 52 53 results 54 end
Source
# File lib/minitest/parallel_fork/halt.rb 13 def parallel_fork_data_from_marshal(data) 14 data = Marshal.load(data) 15 @parallel_fork_stop = true if data.pop 16 data 17 end
Source
# File lib/minitest/parallel_fork/halt.rb 9 def parallel_fork_data_to_marshal 10 super << @parallel_fork_stop 11 end
Calls superclass method
Source
# File lib/minitest/parallel_fork/halt.rb 19 def parallel_fork_run_test_suites(suites, reporter, options) 20 suites.each do |suite| 21 parallel_fork_run_test_suite(suite, reporter, options) 22 23 # Halt if this child process requested an exit, 24 # Or other child processes requested an exit. 25 break if @parallel_fork_stop 26 end 27 end
Source
# File lib/minitest/parallel_fork/halt.rb 2 def run_after_parallel_fork_hook(i) 3 super 4 Signal.trap(:USR1) do 5 @parallel_fork_stop = true 6 end 7 end
Calls superclass method