Class: ParallelTests::FineGrainTest::Minitest::Suite

Inherits:
Object
  • Object
show all
Defined in:
lib/parallel_tests/fine_grain_test/minitest/suite.rb

Instance Method Summary collapse

Constructor Details

#initialize(file_queue = FileQueue.new, runtime_logger = RuntimeLogger.new) ⇒ Suite

Returns a new instance of Suite.



9
10
11
12
13
# File 'lib/parallel_tests/fine_grain_test/minitest/suite.rb', line 9

def initialize(file_queue = FileQueue.new, runtime_logger = RuntimeLogger.new)
  @test_cases = []
  @file_queue = file_queue
  @runtime_logger = runtime_logger
end

Instance Method Details

#add(klass, method_name) ⇒ Object



15
16
17
# File 'lib/parallel_tests/fine_grain_test/minitest/suite.rb', line 15

def add(klass, method_name)
  @test_cases << TestCase.new(klass, method_name)
end

#run(reporter, _) ⇒ Object



19
20
21
22
23
24
25
26
27
28
29
30
31
# File 'lib/parallel_tests/fine_grain_test/minitest/suite.rb', line 19

def run(reporter, _)
  @file_queue.enq_all(@test_cases) do |tcs|
    runtimes = @runtime_logger.runtimes
    @runtime_logger.reset
    tcs.sort_by { |test_case| runtimes[test_case] || 0 }.reverse
  end

  until (test_case = @file_queue.deq).nil?
    @runtime_logger.log_runtime(test_case) do
      reporter.record ::Minitest.run_one_method(test_case.suite, test_case.name)
    end
  end
end