Sha256: d735cbdb66670883890d6975be48785754baed45110e42442b40375de505d869

Contents?: true

Size: 1.63 KB

Versions: 54

Compression:

Stored size: 1.63 KB

Contents

module Minitest
  module Parallel

    ##
    # 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  = size.times.map {
        #   Thread.new(@queue) do |queue|
        #     Thread.current.abort_on_exception = true
        #     while job = queue.pop
        #       klass, method, reporter = job
        #       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)
        @queue.each do |job|
          klass, method, reporter = job
          result = Minitest.run_one_method klass, method
          reporter.record result
          # reporter.synchronize { reporter.record result }
        end
      end
    end

    module Test
      def _synchronize; Test.io_lock.synchronize { yield }; end # :nodoc:

      module ClassMethods
        def run_one_method klass, method_name, reporter # :nodoc:
          Minitest.parallel_executor << [klass, method_name, reporter]
        end
        def test_order; :parallel; end # :nodoc:
      end
    end
  end
end

Version data entries

54 entries across 54 versions & 2 rubygems

Version Path
opal-0.9.0.beta2 vendored-minitest/minitest/parallel.rb
opal-0.9.0.beta1 vendored-minitest/minitest/parallel.rb
opal-0.8.1 vendored-minitest/minitest/parallel.rb
opal-0.8.1.rc1 vendored-minitest/minitest/parallel.rb
opal-wedge-0.9.0.dev vendored-minitest/minitest/parallel.rb
opal-0.8.0 vendored-minitest/minitest/parallel.rb
opal-0.8.0.rc3 vendored-minitest/minitest/parallel.rb
opal-0.8.0.rc2 vendored-minitest/minitest/parallel.rb
opal-0.8.0.rc1 vendored-minitest/minitest/parallel.rb
opal-0.8.0.beta1 stdlib/minitest/parallel.rb
opal-0.7.2 stdlib/minitest/parallel.rb
opal-0.7.1 stdlib/minitest/parallel.rb
opal-0.7.0 stdlib/minitest/parallel.rb
opal-0.7.0.rc1 stdlib/minitest/parallel.rb