Sha256: 1fbdb8001221546cce335dd07cb6581f3c03deb730bb81c1eafe169a00895bba
Contents?: true
Size: 1.56 KB
Versions: 4
Compression:
Stored size: 1.56 KB
Contents
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
Version data entries
4 entries across 4 versions & 1 rubygems
Version | Path |
---|---|
minitest-5.11.1 | lib/minitest/parallel.rb |
minitest-5.11.0 | lib/minitest/parallel.rb |
minitest-5.11.0b1 | lib/minitest/parallel.rb |
minitest-5.10.3 | lib/minitest/parallel.rb |