Sha256: 544a06c617d099ec8027be9cd6622768cc716b5527a5ce8e482c6e1331a1081b

Contents?: true

Size: 985 Bytes

Versions: 8

Compression:

Stored size: 985 Bytes

Contents

module Minitest
  module Parallel
    class Executor
      attr_reader :size

      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

      def << work; @queue << work; end

      def shutdown
        size.times { @queue << nil }
        @pool.each(&:join)
      end
    end

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

      module ClassMethods
        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

8 entries across 8 versions & 3 rubygems

Version Path
arcabouco-0.2.13 vendor/bundle/gems/minitest-5.2.0/lib/minitest/parallel.rb
minitest-5.3.0 lib/minitest/parallel.rb
minitest-5.2.3 lib/minitest/parallel.rb
minitest-5.2.2 lib/minitest/parallel.rb
minitest-5.2.1 lib/minitest/parallel.rb
social_url_stats-0.0.1 vendor/ruby/1.9.1/gems/minitest-5.2.0/lib/minitest/parallel.rb
minitest-5.2.0 lib/minitest/parallel.rb
minitest-5.1.0 lib/minitest/parallel.rb