@private A DRb server that receives run results from a separate RSpec process started by the bisect process.
Fetched via DRb by the BisectFormatter to determine when to abort.
Fetched via DRb to tell clients which files to run
Set via DRb by the BisectFormatter with the results of the run.
# File lib/rspec/core/bisect/server.rb, line 15 def self.run server = new server.start yield server ensure server.stop end
# File lib/rspec/core/bisect/server.rb, line 23 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 latest_run_results || raise_bisect_failed(run_output) end
# File lib/rspec/core/bisect/server.rb, line 43 def drb_port @drb_port ||= Integer(@drb.uri[/\d+$/]) end
# File lib/rspec/core/bisect/server.rb, line 31 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 ]) # We pass `nil` as the first arg to allow it to pick a DRb port. @drb = DRb.start_service(nil, self) end
# File lib/rspec/core/bisect/server.rb, line 39 def stop @drb.stop_service end
# File lib/rspec/core/bisect/server.rb, line 58 def raise_bisect_failed(run_output) raise BisectFailedError, "Failed to get results from the spec " "run. Spec run output:\n\n#{run_output}" end