Class: RSpec::Core::Reporter

### Home Classes Methods

### In Files

- lib/rspec/core/reporter.rb

### Parent

Object

### Methods

- ::new
- #abort_with
- #close_after
- #deprecation
- #example_failed
- #example_group_finished
- #example_group_started
- #example_passed
- #example_pending
- #example_started
- #finish
- #message
- #notify
- #publish
- #register_listener
- #registered_listeners
- #report
- #reset
- #setup_profiler
- #start
- #stop

### Class/Module Index

Quicksearch

- RSpec
- RSpec::Core
- RSpec::Core::AnonymousExampleGroup
- RSpec::Core::BacktraceFormatter
- RSpec::Core::Bisect
- RSpec::Core::Bisect::Coordinator
- RSpec::Core::Bisect::ExampleMinimizer
- RSpec::Core::Bisect::Runner
- RSpec::Core::Bisect::Server
- RSpec::Core::Bisect::SubsetEnumerator
- RSpec::Core::Configuration
- RSpec::Core::Configuration::DeprecationReporterBuffer
- RSpec::Core::Configuration::ExposeCurrentExample
- RSpec::Core::Configuration::MustBeConfiguredBeforeExampleGroupsError
- RSpec::Core::ConfigurationOptions
- RSpec::Core::DRbOptions
- RSpec::Core::DRbRunner
- RSpec::Core::DSL
- RSpec::Core::DSL::RSpec
- RSpec::Core::Example
- RSpec::Core::Example::ExecutionResult
- RSpec::Core::Example::Procsy
- RSpec::Core::ExampleGroup
- RSpec::Core::ExampleStatusDumper
- RSpec::Core::ExampleStatusMerger
- RSpec::Core::ExampleStatusParser
- RSpec::Core::ExampleStatusPersister
- RSpec::Core::ExclusionRules
- RSpec::Core::FilterManager
- RSpec::Core::FilterRules
- RSpec::Core::FilterableItemRepository
- RSpec::Core::FilterableItemRepository::QueryOptimized
- RSpec::Core::FilterableItemRepository::UpdateOptimized
- RSpec::Core::FlatMap
- RSpec::Core::Formatters
- RSpec::Core::Formatters::BaseFormatter
- RSpec::Core::Formatters::BaseTextFormatter
- RSpec::Core::Formatters::BisectDebugFormatter
- RSpec::Core::Formatters::BisectFormatter
- RSpec::Core::Formatters::BisectProgressFormatter
- RSpec::Core::Formatters::ConsoleCodes
- RSpec::Core::Formatters::DeprecationFormatter
- RSpec::Core::Formatters::DeprecationFormatter::DelayedPrinter
- RSpec::Core::Formatters::DeprecationFormatter::FileStream
- RSpec::Core::Formatters::DeprecationFormatter::ImmediatePrinter
- RSpec::Core::Formatters::DeprecationFormatter::RaiseErrorStream
- RSpec::Core::Formatters::DocumentationFormatter
- RSpec::Core::Formatters::ExceptionPresenter
- RSpec::Core::Formatters::ExceptionPresenter::Factory
- RSpec::Core::Formatters::ExceptionPresenter::Factory::CommonBacktraceTruncater
- RSpec::Core::Formatters::ExceptionPresenter::Factory::EmptyBacktraceFormatter
- RSpec::Core::Formatters::FallbackMessageFormatter
- RSpec::Core::Formatters::Helpers
- RSpec::Core::Formatters::HtmlFormatter
- RSpec::Core::Formatters::HtmlPrinter
- RSpec::Core::Formatters::JsonFormatter
- RSpec::Core::Formatters::Loader
- RSpec::Core::Formatters::ProfileFormatter
- RSpec::Core::Formatters::ProgressFormatter
- RSpec::Core::Formatters::Protocol
- RSpec::Core::Formatters::SnippetExtractor
- RSpec::Core::Formatters::SnippetExtractor::CoderayConverter
- RSpec::Core::Formatters::SnippetExtractor::NullConverter
- RSpec::Core::HashImitatable
- RSpec::Core::HashImitatable::ClassMethods
- RSpec::Core::Hooks
- RSpec::Core::Hooks::AfterContextHook
- RSpec::Core::Hooks::AfterHook
- RSpec::Core::Hooks::AroundHook
- RSpec::Core::Hooks::BeforeHook
- RSpec::Core::Hooks::Hook
- RSpec::Core::Hooks::HookCollections
- RSpec::Core::InclusionRules
- RSpec::Core::LegacyExampleGroupHash
- RSpec::Core::MemoizedHelpers
- RSpec::Core::MemoizedHelpers::ClassMethods
- RSpec::Core::MemoizedHelpers::ContextHookMemoized
- RSpec::Core::MemoizedHelpers::ContextHookMemoized::After
- RSpec::Core::MemoizedHelpers::ContextHookMemoized::Before
- RSpec::Core::MemoizedHelpers::NonThreadSafeMemoized
- RSpec::Core::MemoizedHelpers::ThreadsafeMemoized
- RSpec::Core::Metadata
- RSpec::Core::Metadata::ExampleGroupHash
- RSpec::Core::Metadata::ExampleHash
- RSpec::Core::Metadata::HashPopulator
- RSpec::Core::MetadataFilter
- RSpec::Core::MinitestAssertionsAdapter
- RSpec::Core::MockingAdapters
- RSpec::Core::MockingAdapters::Flexmock
- RSpec::Core::MockingAdapters::Mocha
- RSpec::Core::MockingAdapters::Null
- RSpec::Core::MockingAdapters::RR
- RSpec::Core::MockingAdapters::RSpec
- RSpec::Core::MultipleExceptionError
- RSpec::Core::MultipleExceptionError::InterfaceTag
- RSpec::Core::Mutex
- RSpec::Core::Notifications
- RSpec::Core::Notifications::CustomNotification
- RSpec::Core::Notifications::DeprecationNotification
- RSpec::Core::Notifications::ExampleNotification
- RSpec::Core::Notifications::ExamplesNotification
- RSpec::Core::Notifications::FailedExampleNotification
- RSpec::Core::Notifications::NullColorizer
- RSpec::Core::Notifications::NullNotification
- RSpec::Core::Notifications::PendingExampleFailedAsExpectedNotification
- RSpec::Core::Notifications::PendingExampleFixedNotification
- RSpec::Core::Notifications::ProfileNotification
- RSpec::Core::Notifications::SeedNotification
- RSpec::Core::Notifications::SkippedExampleNotification
- RSpec::Core::Notifications::SummaryNotification
- RSpec::Core::NullReporter
- RSpec::Core::Ordering
- RSpec::Core::Ordering::ConfigurationManager
- RSpec::Core::Ordering::Custom
- RSpec::Core::Ordering::Identity
- RSpec::Core::Ordering::Random
- RSpec::Core::Ordering::Registry
- RSpec::Core::Parser
- RSpec::Core::Pending
- RSpec::Core::Pending::PendingExampleFixedError
- RSpec::Core::Pending::SkipDeclaredInExample
- RSpec::Core::Profiler
- RSpec::Core::ProjectInitializer
- RSpec::Core::RakeTask
- RSpec::Core::ReentrantMutex
- RSpec::Core::Reporter
- RSpec::Core::RubyProject
- RSpec::Core::Runner
- RSpec::Core::Sandbox
- RSpec::Core::Set
- RSpec::Core::SharedContext
- RSpec::Core::SharedExampleGroup
- RSpec::Core::SharedExampleGroup::Registry
- RSpec::Core::SharedExampleGroup::TopLevelDSL
- RSpec::Core::SharedExampleGroupInclusionStackFrame
- RSpec::Core::SharedExampleGroupModule
- RSpec::Core::ShellEscape
- RSpec::Core::SuiteHookContext
- RSpec::Core::TestUnitAssertionsAdapter
- RSpec::Core::Time
- RSpec::Core::Version
- RSpec::Core::Warnings
- RSpec::Core::World
- RSpec::ExampleGroups
- Object

No matching classes.

# RSpec::Core::Reporter

A reporter will send notifications to listeners, usually formatters for the spec suite run.

### Constants

RSPEC_NOTIFICATIONS

  @private

### Attributes

examples[R]

@private

failed_examples[R]

@private

pending_examples[R]

@private

### Public Class Methods

new(configuration) click to toggle source

    # File lib/rspec/core/reporter.rb, line 14
    def initialize(configuration)
      @configuration = configuration
      @listeners = Hash.new { |h, k| h[k] = Set.new }
      @examples = []
      @failed_examples = []
      @pending_examples = []
      @duration = @start = @load_time = nil
    end

### Public Instance Methods

abort_with(msg, exit_status) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 189
    def abort_with(msg, exit_status)
      message(msg)
      close
      exit!(exit_status)
    end

close_after() click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 169
    def close_after
      yield
    ensure
      close
    end

deprecation(hash) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 145
    def deprecation(hash)
      notify :deprecation, Notifications::DeprecationNotification.from_hash(hash)
    end

example_failed(example) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 133
    def example_failed(example)
      @failed_examples << example
      notify :example_failed, Notifications::ExampleNotification.for(example)
    end

example_group_finished(group) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 117
    def example_group_finished(group)
      notify :example_group_finished, Notifications::GroupNotification.new(group) unless group.descendant_filtered_examples.empty?
    end

example_group_started(group) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 112
    def example_group_started(group)
      notify :example_group_started, Notifications::GroupNotification.new(group) unless group.descendant_filtered_examples.empty?
    end

example_passed(example) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 128
    def example_passed(example)
      notify :example_passed, Notifications::ExampleNotification.for(example)
    end

example_pending(example) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 139
    def example_pending(example)
      @pending_examples << example
      notify :example_pending, Notifications::ExampleNotification.for(example)
    end

example_started(example) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 122
    def example_started(example)
      @examples << example
      notify :example_started, Notifications::ExampleNotification.for(example)
    end

finish() click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 150
    def finish
      close_after do
        stop
        notify :start_dump,    Notifications::NullNotification
        notify :dump_pending,  Notifications::ExamplesNotification.new(self)
        notify :dump_failures, Notifications::ExamplesNotification.new(self)
        notify :deprecation_summary, Notifications::NullNotification
        unless mute_profile_output?
          notify :dump_profile, Notifications::ProfileNotification.new(@duration, @examples,
                                                                       @configuration.profile_examples,
                                                                       @profiler.example_groups)
        end
        notify :dump_summary, Notifications::SummaryNotification.new(@duration, @examples, @failed_examples,
                                                                     @pending_examples, @load_time)
        notify :seed, Notifications::SeedNotification.new(@configuration.seed, seed_used?)
      end
    end

message(message) click to toggle source

@param message [to_s] A message object to send to formatters

Send a custom message to supporting formatters.

    # File lib/rspec/core/reporter.rb, line 94
    def message(message)
      notify :message, Notifications::MessageNotification.new(message)
    end

notify(event, notification) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 182
    def notify(event, notification)
      registered_listeners(event).each do |formatter|
        formatter.__send__(event, notification)
      end
    end

publish(event, options={}) click to toggle source

@param event [Symbol] Name of the custom event to trigger on formatters @param options [Hash] Hash of arguments to provide via `CustomNotification`

Publish a custom event to supporting registered formatters. @see RSpec::Core::Notifications::CustomNotification

    # File lib/rspec/core/reporter.rb, line 103
    def publish(event, options={})
      if RSPEC_NOTIFICATIONS.include? event
        raise "RSpec::Core::Reporter#publish is intended for sending custom "                "events not internal RSpec ones, please rename your custom event."
      end
      notify event, Notifications::CustomNotification.for(options)
    end

register_listener(listener, *notifications) click to toggle source

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

@param listener [Object] An obect that wishes to be notified of reporter

    events

@param notifications [Array] Array of symbols represents the events a

    listener wishes to subscribe too

    # File lib/rspec/core/reporter.rb, line 47
    def register_listener(listener, *notifications)
      notifications.each do |notification|
        @listeners[notification.to_sym] << listener
      end
      true
    end

registered_listeners(notification) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 55
    def registered_listeners(notification)
      @listeners[notification].to_a
    end

report(expected_example_count) click to toggle source

@overload report(count, &block) @overload report(count, &block) @param expected_example_count [Integer] the number of examples being run @yield [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.

@example

    reporter.report(group.examples.size) do |r|
      example_groups.map {|g| g.run(r) }
    end

    # File lib/rspec/core/reporter.rb, line 74
    def report(expected_example_count)
      start(expected_example_count)
      begin
        yield self
      ensure
        finish
      end
    end

reset() click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 27
    def reset
      @examples = []
      @failed_examples = []
      @pending_examples = []
      @profiler = Profiler.new if defined?(@profiler)
    end

setup_profiler() click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 35
    def setup_profiler
      @profiler = Profiler.new
      register_listener @profiler, *Profiler::NOTIFICATIONS
    end

start(expected_example_count, time=RSpec::Core::Time.now) click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 84
    def start(expected_example_count, time=RSpec::Core::Time.now)
      @start = time
      @load_time = (@start - @configuration.start_time).to_f
      notify :seed, Notifications::SeedNotification.new(@configuration.seed, seed_used?)
      notify :start, Notifications::StartNotification.new(expected_example_count, @load_time)
    end

stop() click to toggle source

@private

    # File lib/rspec/core/reporter.rb, line 176
    def stop
      @duration = (RSpec::Core::Time.now - @start).to_f if @start
      notify :stop, Notifications::ExamplesNotification.new(self)
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.