/usr/lib/ruby/vendor_ruby/minitest/parallel.rb is in ruby-minitest 5.10.3-1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 | module Minitest
module Parallel #:nodoc:
##
# The engine used to run multiple tests in parallel.
class Executor
##
# The size of the pool of workers.
attr_reader :size
##
# Create a parallel test executor of with +size+ workers.
def initialize size
@size = size
@queue = Queue.new
@pool = nil
end
##
# Start the executor
def start
@pool = size.times.map {
Thread.new(@queue) do |queue|
Thread.current.abort_on_exception = true
while (job = queue.pop)
klass, method, reporter = job
reporter.synchronize { reporter.prerecord klass, method }
result = Minitest.run_one_method klass, method
reporter.synchronize { reporter.record result }
end
end
}
end
##
# Add a job to the queue
def << work; @queue << work; end
##
# Shuts down the pool of workers by signalling them to quit and
# waiting for them all to finish what they're currently working
# on.
def shutdown
size.times { @queue << nil }
@pool.each(&:join)
end
end
module Test
def _synchronize; Minitest::Test.io_lock.synchronize { yield }; end # :nodoc:
module ClassMethods # :nodoc:
def run_one_method klass, method_name, reporter
Minitest.parallel_executor << [klass, method_name, reporter]
end
def test_order
:parallel
end
end
end
end
end
|