class RSpec::Core::Bisect::Server

@private A DRb server that receives run results from a separate RSpec process started by the bisect process.

Attributes

expected_failures[RW]

Fetched via DRb by the BisectDRbFormatter to determine when to abort.

files_or_directories_to_run[RW]

Fetched via DRb to tell clients which files to run

latest_run_results[RW]

Set via DRb by the BisectDRbFormatter with the results of the run.

Public Class Methods

run() { |server| ... } click to toggle source
# File lib/rspec/core/bisect/server.rb, line 13
def self.run
  server = new
  server.start
  yield server
ensure
  server.stop
end

Public Instance Methods

capture_run_results(files_or_directories_to_run=[], expected_failures=[]) { || ... } click to toggle source
# File lib/rspec/core/bisect/server.rb, line 21
def capture_run_results(files_or_directories_to_run=[], expected_failures=[])
  self.expected_failures  = expected_failures
  self.files_or_directories_to_run = files_or_directories_to_run
  self.latest_run_results = nil
  run_output = yield

  if latest_run_results.nil? || latest_run_results.all_example_ids.empty?
    raise BisectFailedError.for_failed_spec_run(run_output)
  end

  latest_run_results
end
drb_port() click to toggle source
# File lib/rspec/core/bisect/server.rb, line 46
def drb_port
  @drb_port ||= Integer(@drb.uri[/\d+$/])
end
start() click to toggle source
# File lib/rspec/core/bisect/server.rb, line 34
def start
  # Only allow remote DRb requests from this machine.
  DRb.install_acl ACL.new(%w[ deny all allow localhost allow 127.0.0.1 allow ::1 ])

  # We pass `nil` as the first arg to allow it to pick a DRb port.
  @drb = DRb.start_service(nil, self)
end
stop() click to toggle source
# File lib/rspec/core/bisect/server.rb, line 42
def stop
  @drb.stop_service
end