Sha256: a6a533e71128064de706c806a70dc38ebf010e08f8c288032c61d1239d226a49

Contents?: true

Size: 1.38 KB

Versions: 7

Compression:

Stored size: 1.38 KB

Contents

require 'test_queue/runner'
require 'stringio'

class MiniTestQueueRunner < MiniTest::Unit
  def _run_suites(suites, type)
    self.class.output = $stdout

    if defined?(ParallelEach)
      # Ignore its _run_suites implementation since we don't handle it gracefully.
      # If we don't do this #partition is called on the iterator and all suites
      # distributed immediately, instead of picked up as workers are available.
      suites.map { |suite| _run_suite suite, type }
    else
      super
    end
  end

  def _run_anything(*)
    ret = super
    output.puts
    ret
  end

  def _run_suite(suite, type)
    output.print '    '
    output.print suite
    output.print ': '

    start = Time.now
    ret = super
    diff = Time.now - start

    output.puts("  <%.3f>" % diff)
    ret
  end

  self.runner = self.new
  self.output = StringIO.new
end

class MiniTest::Unit::TestCase
  class << self
    attr_accessor :test_suites

    def original_test_suites
      @@test_suites.keys.reject{ |s| s.test_methods.empty? }
    end
  end
end

module TestQueue
  class Runner
    class MiniTest < Runner
      def initialize
        tests = ::MiniTest::Unit::TestCase.original_test_suites.sort_by{ |s| -(stats[s.to_s] || 0) }
        super(tests)
      end

      def run_worker(iterator)
        ::MiniTest::Unit::TestCase.test_suites = iterator
        ::MiniTest::Unit.new.run
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
test-queue-split-0.3.2 lib/test_queue/runner/minitest4.rb
test-queue-split-0.3.1 lib/test_queue/runner/minitest4.rb
test-queue-split-0.3.0 lib/test_queue/runner/minitest4.rb
test-queue-0.2.13 lib/test_queue/runner/minitest4.rb
test-queue-0.2.12 lib/test_queue/runner/minitest4.rb
test-queue-0.2.11 lib/test_queue/runner/minitest4.rb
test-queue-0.2.10 lib/test_queue/runner/minitest4.rb