Methods
public instance
- []
- assign_scope
- create_example_group
- default
- example_group_creation_listeners
- register
- register_example_group
- reset
protected instance
Public instance methods
[]
(key)
[show source]
# File lib/spec/example/example_group_factory.rb, line 61 def [](key) @example_group_types[key] end
assign_scope
(scope, args)
[show source]
# File lib/spec/example/example_group_factory.rb, line 65 def assign_scope(scope, args) args.last[:scope] = scope end
create_example_group
(*args, &block)
[show source]
# File lib/spec/example/example_group_factory.rb, line 26 def create_example_group(*args, &block) raise ArgumentError if args.empty? raise ArgumentError unless block Spec::Example::add_spec_path_to(args) superclass = determine_superclass(args.last) superclass.describe(*args, &block) end
default
(example_group_class)
Sets the default ExampleGroup class
[show source]
# File lib/spec/example/example_group_factory.rb, line 53 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
example_group_creation_listeners
()
[show source]
# File lib/spec/example/example_group_factory.rb, line 11 def example_group_creation_listeners @example_group_creation_listeners ||= [] end
register
(key, example_group_class)
Registers an example group class klass with the symbol type. For example:
Spec::Example::ExampleGroupFactory.register(:farm, FarmExampleGroup)
With that you can append a hash with :type => :farm to the describe method and it will load an instance of FarmExampleGroup.
describe Pig, :type => :farm do ...
If you don’t use the hash explicitly, describe will implicitly use an instance of FarmExampleGroup for any file loaded from the ./spec/farm directory.
[show source]
# File lib/spec/example/example_group_factory.rb, line 48 def register(key, example_group_class) @example_group_types[key.to_sym] = example_group_class end
register_example_group
(klass)
[show source]
# File lib/spec/example/example_group_factory.rb, line 15 def register_example_group(klass) example_group_creation_listeners.each do |listener| listener.register_example_group(klass) end end
reset
()
[show source]
# File lib/spec/example/example_group_factory.rb, line 6 def reset @example_group_types = nil default(ExampleGroup) end
Protected instance methods
determine_superclass
(opts)
[show source]
# File lib/spec/example/example_group_factory.rb, line 71 def determine_superclass(opts) if type = opts[:type] self[type] elsif opts[:spec_path] =~ /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