Class: RSpec::Core::Runner

### Home Classes Methods

### In Files

- lib/rspec/core/runner.rb

### Parent

Object

### Methods

- ::autorun
- ::autorun_disabled?
- ::disable_autorun!
- ::installed_at_exit?
- ::invoke
- ::new
- ::run
- ::running_in_drb?
- ::trap_interrupt
- #run
- #run_specs
- #setup

### Class/Module Index

Quicksearch

- RSpec
- RSpec::Core
- RSpec::Core::AnonymousExampleGroup
- RSpec::Core::Backports
- RSpec::Core::Backports::Random
- RSpec::Core::Backports::Random::Implementation
- RSpec::Core::Backports::Random::MT19937
- RSpec::Core::BacktraceFormatter
- 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::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::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::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::ContextHookMemoizedHash
- RSpec::Core::MemoizedHelpers::ContextHookMemoizedHash::After
- RSpec::Core::MemoizedHelpers::ContextHookMemoizedHash::Before
- 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::Notifications
- 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::PendingExampleNotificationMethods
- 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::ProjectInitializer
- RSpec::Core::RakeTask
- RSpec::Core::RandomNumberGenerator
- RSpec::Core::Reporter
- RSpec::Core::RubyProject
- RSpec::Core::Runner
- RSpec::Core::Sandbox
- RSpec::Core::SharedContext
- RSpec::Core::SharedExampleGroup
- RSpec::Core::SharedExampleGroup::Registry
- RSpec::Core::SharedExampleGroup::TopLevelDSL
- RSpec::Core::SharedExampleGroupInclusionStackFrame
- RSpec::Core::SharedExampleGroupModule
- 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::Runner

Provides the main entry point to run a suite of RSpec examples.

### Public Class Methods

autorun() click to toggle source

Register an `at_exit` hook that runs the suite when the process exits.

@note This is not generally needed. The `rspec` command takes care

    of running examples for you without involving an `at_exit`
    hook. This is only needed if you are running specs using
    the `ruby` command, and even then, the normal way to invoke
    this is by requiring `rspec/autorun`.

    # File lib/rspec/core/runner.rb, line 12
    def self.autorun
      if autorun_disabled?
        RSpec.deprecate("Requiring `rspec/autorun` when running RSpec via the `rspec` command")
        return
      elsif installed_at_exit? || running_in_drb?
        return
      end

      at_exit do
        # Don't bother running any specs and just let the program terminate
        # if we got here due to an unrescued exception (anything other than
        # SystemExit, which is raised when somebody calls Kernel#exit).
        next unless $!.nil? || $!.is_a?(SystemExit)

        # We got here because either the end of the program was reached or
        # somebody called Kernel#exit. Run the specs and then override any
        # existing exit status with RSpec's exit status if any specs failed.
        invoke
      end
      @installed_at_exit = true
    end

autorun_disabled?() click to toggle source

@private

    # File lib/rspec/core/runner.rb, line 121
    def self.autorun_disabled?
      @autorun_disabled ||= false
    end

disable_autorun!() click to toggle source

@private

    # File lib/rspec/core/runner.rb, line 116
    def self.disable_autorun!
      @autorun_disabled = true
    end

installed_at_exit?() click to toggle source

@private

    # File lib/rspec/core/runner.rb, line 126
    def self.installed_at_exit?
      @installed_at_exit ||= false
    end

invoke() click to toggle source

Runs the suite of specs and exits the process with an appropriate exit code.

    # File lib/rspec/core/runner.rb, line 36
    def self.invoke
      disable_autorun!
      status = run(ARGV, $stderr, $stdout).to_i
      exit(status) if status != 0
    end

new(options, configuration=RSpec.configuration, world=RSpec.world) click to toggle source

    # File lib/rspec/core/runner.rb, line 74
    def initialize(options, configuration=RSpec.configuration, world=RSpec.world)
      @options       = options
      @configuration = configuration
      @world         = world
    end

run(args, err=$stderr, out=$stdout) click to toggle source

Run a suite of RSpec examples. Does not exit.

This is used internally by RSpec to run a suite, but is available for use by any other automation tool.

If you want to run this multiple times in the same process, and you want files like `spec_helper.rb` to be reloaded, be sure to load `load` instead of `require`.

@param args [Array] command-line-supported arguments @param err [IO] error stream @param out [IO] output stream @return [Fixnum] exit status code. 0 if all specs passed,

    or the configured failure exit code (1 by default) if specs
    failed.

    # File lib/rspec/core/runner.rb, line 57
    def self.run(args, err=$stderr, out=$stdout)
      trap_interrupt
      options = ConfigurationOptions.new(args)

      if options.options[:drb]
        require 'rspec/core/drb'
        begin
          DRbRunner.new(options).run(err, out)
        rescue DRb::DRbConnError
          err.puts "No DRb server is running. Running in local process instead ..."
          new(options).run(err, out)
        end
      else
        new(options).run(err, out)
      end
    end

running_in_drb?() click to toggle source

@private rubocop:disable Lint/EnsureReturn

    # File lib/rspec/core/runner.rb, line 132
    def self.running_in_drb?
      if defined?(DRb) && DRb.current_server
        require 'socket'
        require 'uri'
        local_ipv4 = IPSocket.getaddress(Socket.gethostname)
        local_drb = ["127.0.0.1", "localhost", local_ipv4].any? { |addr| addr == URI(DRb.current_server.uri).host }
      end
    rescue DRb::DRbServerNotFound
    ensure
      return local_drb || false
    end

trap_interrupt() click to toggle source

@private

    # File lib/rspec/core/runner.rb, line 146
    def self.trap_interrupt
      trap('INT') do
        exit!(1) if RSpec.world.wants_to_quit
        RSpec.world.wants_to_quit = true
        STDERR.puts "\nRSpec is shutting down and will print the summary report... Interrupt again to force quit."
      end
    end

### Public Instance Methods

run(err, out) click to toggle source

Configures and runs a spec suite.

@param err [IO] error stream @param out [IO] output stream

    # File lib/rspec/core/runner.rb, line 84
    def run(err, out)
      setup(err, out)
      run_specs(@world.ordered_example_groups)
    end

run_specs(example_groups) click to toggle source

Runs the provided example groups.

@param example_groups [Array<RSpec::Core::ExampleGroup>] groups to run @return [Fixnum] exit status code. 0 if all specs passed,

    or the configured failure exit code (1 by default) if specs
    failed.

    # File lib/rspec/core/runner.rb, line 107
    def run_specs(example_groups)
      @configuration.reporter.report(@world.example_count(example_groups)) do |reporter|
        @configuration.with_suite_hooks do
          example_groups.map { |g| g.run(reporter) }.all? ? 0 : @configuration.failure_exit_code
        end
      end
    end

setup(err, out) click to toggle source

Wires together the various configuration objects and state holders.

@param err [IO] error stream @param out [IO] output stream

    # File lib/rspec/core/runner.rb, line 93
    def setup(err, out)
      @configuration.error_stream = err
      @configuration.output_stream = out if @configuration.output_stream == $stdout
      @options.configure(@configuration)
      @configuration.load_spec_files
      @world.announce_filters
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.