Module: Minitest::Queue

Defined in:
lib/minitest/queue.rb,
lib/minitest/queue/runner.rb

Defined Under Namespace

Classes: Runner, SingleExample

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#queue ⇒ Object

Returns the value of attribute queue.



67
68
69
# File 'lib/minitest/queue.rb', line 67

def queue
  @queue
end

Instance Method Details

#__run(*args) ⇒ Object



93
94
95
96
97
98
99
# File 'lib/minitest/queue.rb', line 93

def __run(*args)
  if queue
    run_from_queue(*args)
  else
    super
  end
end

#loaded_tests ⇒ Object



85
86
87
88
89
90
91
# File 'lib/minitest/queue.rb', line 85

def loaded_tests
  Minitest::Test.runnables.flat_map do |runnable|
    runnable.runnable_methods.map do |method_name|
      SingleExample.new(runnable, method_name)
    end
  end
end

#queue_reporters=(reporters) ⇒ Object



78
79
80
81
82
83
# File 'lib/minitest/queue.rb', line 78

def queue_reporters=(reporters)
  @queue_reporters ||= []
  Reporters.use!(((Reporters.reporters || []) - @queue_reporters) + reporters)
  Minitest.backtrace_filter.add_filter(%r{exe/minitest-queue|lib/ci/queue/})
  @queue_reporters = reporters
end

#run_from_queue(reporter) ⇒ Object



101
102
103
104
105
106
107
108
109
110
111
112
113
114
# File 'lib/minitest/queue.rb', line 101

def run_from_queue(reporter, *)
  queue.poll do |example|
    result = example.run
    failed = !(result.passed? || result.skipped?)
    if failed && queue.requeue(example)
      result.requeue!
      reporter.record(result)
    elsif queue.acknowledge(example) || !failed
      # If the test was already acknowledged by another worker (we timed out)
      # Then we only record it if it is successful.
      reporter.record(result)
    end
  end
end