class RSpec::Queue::Runner

Public Instance Methods

run_specs(example_groups) click to toggle source
# File lib/rspec/queue.rb, line 364
def run_specs(example_groups)
  examples = example_groups.flat_map(&:descendants).flat_map do |example_group|
    example_group.filtered_examples.map do |example|
      SingleExample.new(example_group, example)
    end
  end

  queue = CI::Queue.from_uri(queue_url, RSpec::Queue.config)

  if queue.retrying?
    retry_queue = queue.retry_queue
    if retry_queue.exhausted?
      puts "Found 0 tests to retry, processing the main queue."
    else
      puts "Retrying #{retry_queue.size} failed tests."
      queue = retry_queue
    end
  end

  BuildStatusRecorder.build = queue.build
  queue.populate(examples, random: ordering_seed, &:id)
  examples_count = examples.size # TODO: figure out which stub value would be best
  success = true
  @configuration.reporter.report(examples_count) do |reporter|
    @configuration.add_formatter(BuildStatusRecorder)
    FileUtils.mkdir_p('log')
    @configuration.add_formatter(OrderRecorder, open('log/test_order.log', 'w+'))

    @configuration.with_suite_hooks do
      break if @world.wants_to_quit
      queue.poll do |example|
        success &= example.run(QueueReporter.new(reporter, queue, example))
        break if @world.wants_to_quit
      end
    end
  end

  return 0 if @world.non_example_failure
  success ? 0 : @configuration.failure_exit_code
end
setup(err, out) click to toggle source
Calls superclass method
# File lib/rspec/queue.rb, line 356
def setup(err, out)
  super
  invalid_usage!('Missing --queue parameter') unless queue_url
  invalid_usage!('Missing --build parameter') unless RSpec::Queue.config.build_id
  invalid_usage!('Missing --worker parameter') unless RSpec::Queue.config.worker_id
  RSpec.configuration.backtrace_formatter.filter_gem('ci-queue')
end

Private Instance Methods

ordering_seed() click to toggle source
# File lib/rspec/queue.rb, line 407
def ordering_seed
  if RSpec::Queue.config.seed
    Random.new(Digest::MD5.hexdigest(RSpec::Queue.config.seed).to_i(16))
  else
    Random.new
  end
end