Skip to content

Commit

Permalink
optimization: cache example group ancestor lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
dchelimsky committed Jan 4, 2009
1 parent 6bc6af1 commit 51d8efc
Showing 1 changed file with 12 additions and 11 deletions.
23 changes: 12 additions & 11 deletions lib/spec/example/example_group_methods.rb
Expand Up @@ -312,20 +312,21 @@ def example_objects
end

def each_ancestor_example_group_class(superclass_last=false)
classes = []
current_class = self
while is_example_group_class?(current_class)
superclass_last ? classes << current_class : classes.unshift(current_class)
current_class = current_class.superclass
end

classes.each do |example_group|
(superclass_last ? ancestor_example_group_classes.reverse : ancestor_example_group_classes).each do |example_group|
yield example_group
end
end

def is_example_group_class?(klass)
klass.kind_of?(ExampleGroupMethods) && klass.included_modules.include?(ExampleMethods)

def ancestor_example_group_classes
unless @ancestor_example_group_classes
@ancestor_example_group_classes = []
current_class = self
while current_class.kind_of?(ExampleGroupMethods)
@ancestor_example_group_classes.unshift(current_class)
current_class = current_class.superclass
end
end
@ancestor_example_group_classes
end

def plugin_mock_framework(run_options)
Expand Down

0 comments on commit 51d8efc

Please sign in to comment.