class TestRunner::Runner::ProcessSet
Public Class Methods
new()
click to toggle source
# File lib/test_runner/runner.rb, line 38 def initialize @set = [] @passed = true end
Public Instance Methods
<<(file)
click to toggle source
# File lib/test_runner/runner.rb, line 43 def << file wait Config.child_count - 1 @set.<< spawn_child file end
failed?()
click to toggle source
# File lib/test_runner/runner.rb, line 89 def failed? not success? end
finish()
click to toggle source
# File lib/test_runner/runner.rb, line 48 def finish wait 0 @passed end
reap(reads)
click to toggle source
# File lib/test_runner/runner.rb, line 70 def reap reads @set.delete_if do |process| next unless reads.include? process.fd Config.internal_logger.debug "Reaping #{process.file}:#{process.pid}" process.finish or @passed = false true end shutdown if failed? and Config.fail_fast end
shutdown()
click to toggle source
# File lib/test_runner/runner.rb, line 81 def shutdown @set.each do |process| ::Process.kill "TERM", process.pid end ::Process.waitall exit 1 end
spawn_child(file)
click to toggle source
# File lib/test_runner/runner.rb, line 64 def spawn_child file process = Process.new file process.start process end
success?()
click to toggle source
# File lib/test_runner/runner.rb, line 93 def success? @passed end
tick()
click to toggle source
# File lib/test_runner/runner.rb, line 57 def tick loop do reads, _, _ = IO.select @set.map(&:fd), [], [], 1 return reap reads if reads end end
wait(max_count)
click to toggle source
# File lib/test_runner/runner.rb, line 53 def wait max_count tick while @set.size > max_count end