Module: RSpec

Extended by:
Core::Warnings
Defined in:
lib/rspec/core.rb,
lib/rspec/core/drb.rb,
lib/rspec/core/dsl.rb,
lib/rspec/core/set.rb,
lib/rspec/core/hooks.rb,
lib/rspec/core/world.rb,
lib/rspec/core/runner.rb,
lib/rspec/core/example.rb,
lib/rspec/core/pending.rb,
lib/rspec/core/sandbox.rb,
lib/rspec/core/version.rb,
lib/rspec/core/flat_map.rb,
lib/rspec/core/metadata.rb,
lib/rspec/core/ordering.rb,
lib/rspec/core/profiler.rb,
lib/rspec/core/warnings.rb,
lib/rspec/core/rake_task.rb,
lib/rspec/core/invocations.rb,
lib/rspec/core/ruby_project.rb,
lib/rspec/core/shell_escape.rb,
lib/rspec/core/bisect/server.rb,
lib/rspec/core/configuration.rb,
lib/rspec/core/example_group.rb,
lib/rspec/core/filter_manager.rb,
lib/rspec/core/output_wrapper.rb,
lib/rspec/core/shared_context.rb,
lib/rspec/core/metadata_filter.rb,
lib/rspec/core/bisect/utilities.rb,
lib/rspec/core/memoized_helpers.rb,
lib/rspec/core/bisect/coordinator.rb,
lib/rspec/core/formatters/helpers.rb,
lib/rspec/core/backtrace_formatter.rb,
lib/rspec/core/bisect/shell_runner.rb,
lib/rspec/core/formatters/protocol.rb,
lib/rspec/core/mocking_adapters/rr.rb,
lib/rspec/core/project_initializer.rb,
lib/rspec/core/bisect/shell_command.rb,
lib/rspec/core/shared_example_group.rb,
lib/rspec/core/configuration_options.rb,
lib/rspec/core/mocking_adapters/null.rb,
lib/rspec/core/mocking_adapters/mocha.rb,
lib/rspec/core/mocking_adapters/rspec.rb,
lib/rspec/core/formatters/html_printer.rb,
lib/rspec/core/bisect/example_minimizer.rb,
lib/rspec/core/example_status_persister.rb,
lib/rspec/core/formatters/console_codes.rb,
lib/rspec/core/formatters/base_formatter.rb,
lib/rspec/core/formatters/html_formatter.rb,
lib/rspec/core/formatters/json_formatter.rb,
lib/rspec/core/mocking_adapters/flexmock.rb,
lib/rspec/core/minitest_assertions_adapter.rb,
lib/rspec/core/formatters/profile_formatter.rb,
lib/rspec/core/formatters/snippet_extractor.rb,
lib/rspec/core/test_unit_assertions_adapter.rb,
lib/rspec/core/formatters/progress_formatter.rb,
lib/rspec/core/formatters/syntax_highlighter.rb,
lib/rspec/core/formatters/base_text_formatter.rb,
lib/rspec/core/formatters/exception_presenter.rb,
lib/rspec/core/formatters/bisect_drb_formatter.rb,
lib/rspec/core/formatters/base_bisect_formatter.rb,
lib/rspec/core/formatters/deprecation_formatter.rb,
lib/rspec/core/formatters/html_snippet_extractor.rb,
lib/rspec/core/formatters/documentation_formatter.rb,
lib/rspec/core/formatters/bisect_progress_formatter.rb,
lib/rspec/core/formatters/fallback_message_formatter.rb

Overview

This is borrowed (slightly modified) from Scott Taylor's project_path project:

http://github.com/smtlaissezfaire/project_path

Defined Under Namespace

Modules: Core, ExampleGroups

Constant Summary

MODULES_TO_AUTOLOAD =
{
  :Matchers     => "rspec/expectations",
  :Expectations => "rspec/expectations",
  :Mocks        => "rspec/mocks"
}
SharedContext =
Core::SharedContext

Class Attribute Summary collapse

Class Method Summary collapse

Methods included from Core::Warnings

deprecate, warn_deprecation, warn_with

Class Attribute Details

.configurationObject

Returns the global [Configuration](RSpec/Core/Configuration) object. While you can use this method to access the configuration, the more common convention is to use [RSpec.configure](RSpec#configure-class_method).

Examples:

RSpec.configuration.drb_port = 1234

See Also:



85
86
87
# File 'lib/rspec/core.rb', line 85

def self.configuration
  @configuration ||= RSpec::Core::Configuration.new
end

.worldObject

Internal container for global non-configuration data.



134
135
136
# File 'lib/rspec/core.rb', line 134

def self.world
  @world ||= RSpec::Core::World.new
end

Class Method Details

.clear_examplesObject

Used to ensure examples get reloaded between multiple runs in the same process and ensures user configuration is persisted.

Users must invoke this if they want to clear all examples but preserve current configuration when they use the runner multiple times within the same process.



70
71
72
73
74
75
# File 'lib/rspec/core.rb', line 70

def self.clear_examples
  world.reset
  configuration.reset_reporter
  configuration.start_time = ::RSpec::Core::Time.now
  configuration.reset_filters
end

.configure {|Configuration| ... } ⇒ Object

Yields the global configuration to a block.

Examples:

RSpec.configure do |config|
  config.add_formatter 'documentation'
end

Yields:

  • (Configuration)

    global configuration

See Also:



97
98
99
# File 'lib/rspec/core.rb', line 97

def self.configure
  yield configuration if block_given?
end

.const_missing(name) ⇒ Object



167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
# File 'lib/rspec/core.rb', line 167

def self.const_missing(name)
  # Load rspec-expectations when RSpec::Matchers is referenced. This allows
  # people to define custom matchers (using `RSpec::Matchers.define`) before
  # rspec-core has loaded rspec-expectations (since it delays the loading of
  # it to allow users to configure a different assertion/expectation
  # framework). `autoload` can't be used since it works with ruby's built-in
  # require (e.g. for files that are available relative to a load path dir),
  # but not with rubygems' extended require.
  #
  # As of rspec 2.14.1, we no longer require `rspec/mocks` and
  # `rspec/expectations` when `rspec` is required, so we want
  # to make them available as an autoload.
  require MODULES_TO_AUTOLOAD.fetch(name) { return super }
  ::RSpec.const_get(name)
end

.current_exampleObject

The example being executed.

The primary audience for this method is library authors who need access to the example currently being executed and also want to support all versions of RSpec 2 and 3.

Examples:


RSpec.configure do |c|
  # context.example is deprecated, but RSpec.current_example is not
  # available until RSpec 3.0.
  fetch_current_example = RSpec.respond_to?(:current_example) ?
    proc { RSpec.current_example } : proc { |context| context.example }

  c.before(:example) do
    example = fetch_current_example.call(self)

    # ...
  end
end


122
123
124
# File 'lib/rspec/core.rb', line 122

def self.current_example
  RSpec::Support.thread_local_data[:current_example]
end

.current_example=(example) ⇒ Object

This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.

Set the current example being executed.



128
129
130
# File 'lib/rspec/core.rb', line 128

def self.current_example=(example)
  RSpec::Support.thread_local_data[:current_example] = example
end

.resetObject

Used to ensure examples get reloaded and user configuration gets reset to defaults between multiple runs in the same process.

Users must invoke this if they want to have the configuration reset when they use the runner multiple times within the same process. Users must deal themselves with re-configuration of RSpec before run.



58
59
60
61
62
# File 'lib/rspec/core.rb', line 58

def self.reset
  RSpec::ExampleGroups.remove_all_constants
  @world = nil
  @configuration = nil
end