module Spec::Example::ExampleGroupFactory::ClassMethods
def [](key)
def [](key) @example_group_types[key] end
def create_example_group(*args, &block)
def create_example_group(*args, &block) raise ArgumentError if args.empty? raise ArgumentError unless block superclass = determine_superclass(args.last) superclass.describe(*args, &block) end
def create_shared_example_group(*args, &example_group_block) # :nodoc:
def create_shared_example_group(*args, &example_group_block) # :nodoc: ::Spec::Example::SharedExampleGroup.register(*args, &example_group_block) end
def default(example_group_class)
def default(example_group_class) Spec.__send__ :remove_const, :ExampleGroup if Spec.const_defined?(:ExampleGroup) Spec.const_set(:ExampleGroup, example_group_class) old = @example_group_types @example_group_types = Hash.new(example_group_class) @example_group_types.merge!(old) if old end
def determine_superclass(opts)
def determine_superclass(opts) if type = opts[:type] self[type] elsif opts[:location] =~ /spec(\\|\/)(#{@example_group_types.keys.sort_by{|k| k.to_s.length}.reverse.join('|')})/ self[$2 == '' ? nil : $2.to_sym] else self[nil] end end
def example_group_creation_listeners
def example_group_creation_listeners @example_group_creation_listeners ||= [] end
def register(key, example_group_class)
implicitly use an instance of FarmExampleGroup for any file loaded
If you don't use the hash explicitly, describe will
...
describe Pig, :type => :farm do
method and it will load an instance of FarmExampleGroup.
With that you can append a hash with :type => :farm to the describe
Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
example:
Registers an example group class +klass+ with the symbol +type+. For
def register(key, example_group_class) @example_group_types[key.to_sym] = example_group_class end
def register_example_group(klass)
def register_example_group(klass) example_group_creation_listeners.each do |listener| listener.register_example_group(klass) end end
def reset
def reset @example_group_types = nil default(ExampleGroup) end