Sha256: 5fa87873a121038b0d6bd16fdd7b11ef85b4bbd2188ba2d0b5d7e0a346421c56
Contents?: true
Size: 1.64 KB
Versions: 6
Compression:
Stored size: 1.64 KB
Contents
module Spec module Example class ExampleGroupFactory class << self def reset @example_group_types = nil default(ExampleGroup) end # Registers an example group class +klass+ with the symbol # +type+. For example: # # Spec::Example::ExampleGroupFactory.register(:farm, Spec::Farm::Example::FarmExampleGroup) # # This will cause Main#describe from a file living in # <tt>spec/farm</tt> to create example group instances of type # Spec::Farm::Example::FarmExampleGroup. def register(id, example_group_class) @example_group_types[id] = example_group_class end # Sets the default ExampleGroup class def default(example_group_class) old = @example_group_types @example_group_types = Hash.new(example_group_class) @example_group_types.merge!(old) if old end def get(id=nil) if @example_group_types.values.include?(id) id else @example_group_types[id] end end def create_example_group(*args, &block) opts = Hash === args.last ? args.last : {} superclass = determine_superclass(opts) superclass.describe(*args, &block) end protected def determine_superclass(opts) id = if opts[:type] opts[:type] elsif opts[:spec_path] =~ /spec(\\|\/)(#{@example_group_types.keys.join('|')})/ $2 == '' ? nil : $2.to_sym end get(id) end end self.reset end end end
Version data entries
6 entries across 6 versions & 1 rubygems