class RSpec::Core::Formatters::BisectFormatter

@private
after each example.
opting to communicate only at the start and the end of the run, rather than
method calls, we try to minimize the number of DRb calls for perf reasons,
Note that since DRb calls carry considerable overhead compared to normal
this formatter as a means to have the status reported back to it, via DRb.
Used by ‘–bisect`. When it shells out and runs a portion of the suite, it uses

def example_failed(notification)

def example_failed(notification)
  @failed_example_ids << notification.example.id
  example_finished(notification, :failed)
end

def example_finished(notification, status)

def example_finished(notification, status)
  return unless @remaining_failures.include?(notification.example.id)
  @remaining_failures.delete(notification.example.id)
  return if status == :failed && !@remaining_failures.empty?
  RSpec.world.wants_to_quit = true
end

def example_passed(notification)

def example_passed(notification)
  example_finished(notification, :passed)
end

def example_pending(notification)

def example_pending(notification)
  example_finished(notification, :pending)
end

def example_started(notification)

def example_started(notification)
  @all_example_ids << notification.example.id
end

def initialize(_output)

def initialize(_output)
  port                = RSpec.configuration.drb_port
  drb_uri             = "druby://localhost:#{port}"
  @all_example_ids    = []
  @failed_example_ids = []
  @bisect_server      = DRbObject.new_with_uri(drb_uri)
  @remaining_failures = []
end

def start(_notification)

def start(_notification)
  @remaining_failures = Set.new(@bisect_server.expected_failures)
end

def start_dump(_notification)

def start_dump(_notification)
  @bisect_server.latest_run_results = RunResults.new(
    @all_example_ids, @failed_example_ids
  )
end