class RSpec::Core::Bisect::Server

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

Attributes

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

Fetched via DRb to tell clients which files to run

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

Public Class Methods

# File rspec-core/lib/rspec/core/bisect/server.rb, line 13
def self.run
  server = new
  server.start
  yield server
ensure
  server.stop
end

Public Instance Methods

# File rspec-core/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
# File rspec-core/lib/rspec/core/bisect/server.rb, line 46
def drb_port
  @drb_port ||= Integer(@drb.uri[/\d+$/])
end
# File rspec-core/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
# File rspec-core/lib/rspec/core/bisect/server.rb, line 42
def stop
  @drb.stop_service
end