class RSpec::Core::Reporter

Constants

NOTIFICATIONS

Public Class Methods

new(*formatters) click to toggle source
# File lib/rspec/core/reporter.rb, line 7
def initialize(*formatters)
  @listeners = Hash.new { |h,k| h[k] = [] }
  formatters.each do |formatter|
    register_listener(formatter, *NOTIFICATIONS)
  end
  @example_count = @failure_count = @pending_count = 0
  @duration = @start = nil
end

Public Instance Methods

abort(seed)
Alias for: finish
deprecation(message) click to toggle source
# File lib/rspec/core/reporter.rb, line 100
def deprecation(message)
  notify :deprecation, message
end
example_failed(example) click to toggle source
# File lib/rspec/core/reporter.rb, line 90
def example_failed(example)
  @failure_count += 1
  notify :example_failed, example
end
example_group_finished(group) click to toggle source
# File lib/rspec/core/reporter.rb, line 77
def example_group_finished(group)
  notify :example_group_finished, group unless group.descendant_filtered_examples.empty?
end
example_group_started(group) click to toggle source
# File lib/rspec/core/reporter.rb, line 73
def example_group_started(group)
  notify :example_group_started, group unless group.descendant_filtered_examples.empty?
end
example_passed(example) click to toggle source
# File lib/rspec/core/reporter.rb, line 86
def example_passed(example)
  notify :example_passed, example
end
example_pending(example) click to toggle source
# File lib/rspec/core/reporter.rb, line 95
def example_pending(example)
  @pending_count += 1
  notify :example_pending, example
end
example_started(example) click to toggle source
# File lib/rspec/core/reporter.rb, line 81
def example_started(example)
  @example_count += 1
  notify :example_started, example
end
finish(seed) click to toggle source
# File lib/rspec/core/reporter.rb, line 104
def finish(seed)
  begin
    stop
    notify :start_dump
    notify :dump_pending
    notify :dump_failures
    notify :dump_summary, @duration, @example_count, @failure_count, @pending_count
    notify :deprecation_summary
    notify :seed, seed if seed
  ensure
    notify :close
  end
end
Also aliased as: abort
message(message) click to toggle source
# File lib/rspec/core/reporter.rb, line 69
def message(message)
  notify :message, message
end
notify(event, *args, &block) click to toggle source
# File lib/rspec/core/reporter.rb, line 125
def notify(event, *args, &block)
  registered_listeners(event).each do |formatter|
    formatter.send(event, *args, &block)
  end
end
register_listener(listener, *notifications) click to toggle source

@api @param [Object] An obect that wishes to be notified of reporter events @param [Array] Array of symbols represents the events a listener wishes to subscribe too

Registers a listener to a list of notifications. The reporter will send notification of events to all registered listeners

# File lib/rspec/core/reporter.rb, line 22
def register_listener(listener, *notifications)
  notifications.each do |notification|
    @listeners[notification.to_sym] << listener if listener.respond_to?(notification)
  end
  true
end
registered_listeners(notification) click to toggle source
# File lib/rspec/core/reporter.rb, line 29
def registered_listeners(notification)
  @listeners[notification]
end
report(expected_example_count, seed=nil) { |self| ... } click to toggle source

@api @overload report(count, &block) @overload report(count, seed, &block) @param [Integer] count the number of examples being run @param [Integer] seed the seed used to randomize the spec run @param [Block] block yields itself for further reporting.

Initializes the report run and yields itself for further reporting. The block is required, so that the reporter can manage cleaning up after the run.

### Warning:

The `seed` argument is an internal API and is not guaranteed to be supported in the future.

@example

reporter.report(group.examples.size) do |r|
  example_groups.map {|g| g.run(r) }
end
# File lib/rspec/core/reporter.rb, line 55
def report(expected_example_count, seed=nil)
  start(expected_example_count)
  begin
    yield self
  ensure
    finish(seed)
  end
end
start(expected_example_count) click to toggle source
# File lib/rspec/core/reporter.rb, line 64
def start(expected_example_count)
  @start = RSpec::Core::Time.now
  notify :start, expected_example_count
end
stop() click to toggle source
# File lib/rspec/core/reporter.rb, line 120
def stop
  @duration = (RSpec::Core::Time.now - @start).to_f if @start
  notify :stop
end