class TestQueue::Runner::RSpec

Public Class Methods

new() click to toggle source
Calls superclass method TestQueue::Runner::new
# File lib/test_queue/runner/rspec.rb, line 16
def initialize
  # Require spec helper immediately
  require File.join(::RSpec::Core::RubyProject.root,  'spec', 'spec_helper')
  super(TestFramework::RSpec.new)
end

Public Instance Methods

after_fork(num) click to toggle source

set env number for simplecov

# File lib/test_queue/runner/rspec.rb, line 43
def after_fork(num)
  ENV['TEST_ENV_NUMBER'] = num > 1 ? num.to_s : ''
end
cleanup_worker() click to toggle source

clean exit to make sure at_exit {} hooks run (used by simplecov)

# File lib/test_queue/runner/rspec.rb, line 48
def cleanup_worker
  Kernel.exit @run_worker_exit_code || 0
end
run_worker(iterator) click to toggle source
# File lib/test_queue/runner/rspec.rb, line 22
def run_worker(iterator)
  rspec = ::RSpec::Core::QueueRunner.new
  # Save worker return value so we can exit in cleanup_worker
  @run_worker_exit_code = rspec.run_each(iterator).to_i
end
summarize() click to toggle source

clean exit to make sure at_exit {} hooks run (used by simplecov) test-queue will invoke exit! by default which doesn't run at_exit github.com/instructure/canvas-lms/blob/039207c04faa67503633e4caf554dbc49cc78549/script/rspec-queue#L43

# File lib/test_queue/runner/rspec.rb, line 36
def summarize
  estatus = @completed.inject(0) { |s, worker| s + (worker.status.exitstatus || 1) }
  estatus = [estatus, 255].min
  exit estatus
end
summarize_worker(worker) click to toggle source
# File lib/test_queue/runner/rspec.rb, line 28
def summarize_worker(worker)
  worker.summary  = worker.lines.grep(/ examples?, /).first
  worker.failure_output = worker.output[/^Failures:\n\n(.*)\n^Finished/m, 1]
end