Class/Module Index [+]

Quicksearch

RSpec::Core::SharedExampleGroup::Registry

@private

Used internally to manage the shared example groups and constants. We want to limit the number of methods we add to objects we don't own (main and Module) so this allows us to have helper methods that don't get added to those objects.

Public Class Methods

created_from_caller(other_caller) click to toggle source
# File lib/rspec/core/shared_example_group.rb, line 84
def self.created_from_caller(other_caller)
  @caller_line == other_caller.last
end
included(kls) click to toggle source
# File lib/rspec/core/shared_example_group.rb, line 88
def self.included(kls)
  kls.describe(&@shared_block)
  kls.children.first.metadata[:shared_group_name] = name
end

Public Instance Methods

add_const(name, &block) click to toggle source
# File lib/rspec/core/shared_example_group.rb, line 74
def add_const(name, &block)
  if Object.const_defined?(name)
    mod = Object.const_get(name)
    raise_name_error unless mod.created_from_caller(caller)
  end

  mod = Module.new do
    @shared_block = block
    @caller_line = caller.last

    def self.created_from_caller(other_caller)
      @caller_line == other_caller.last
    end

    def self.included(kls)
      kls.describe(&@shared_block)
      kls.children.first.metadata[:shared_group_name] = name
    end
  end

  shared_const = Object.const_set(name, mod)
  RSpec.world.shared_example_groups[shared_const] = block
end
add_group(*args, &block) click to toggle source
# File lib/rspec/core/shared_example_group.rb, line 56
def add_group(*args, &block)
  ensure_block_has_source_location(block, caller[1])

  if key? args.first
    key = args.shift
    warn_if_key_taken key, block
    RSpec.world.shared_example_groups[key] = block
  end

  unless args.empty?
    mod = Module.new
    (class << mod; self; end).send :define_method, :extended  do |host|
      host.class_eval(&block)
    end
    RSpec.configuration.extend mod, *args
  end
end

[Validate]

Generated with the Darkfish Rdoc Generator 2.