Module: RSpec::Core::Hooks
Defined Under Namespace
Classes: AfterHook, AfterHooks, AroundHook, AroundHooks, BeforeHook, BeforeHooks, Hook, HookCollection
Instance Method Summary
collapse
-
#after(*args, &block) ⇒ Object
-
#around(*args, &block) ⇒ Object
-
#before(*args, &block) ⇒ Object
-
#find_hook(hook, scope, example_group_class, example = nil) ⇒ Object
-
#hooks ⇒ Object
-
#run_hook(hook, scope, example_group_instance = nil) ⇒ Object
Runs all of the blocks stored with the hook in the context of the example.
-
#run_hook!(hook, scope, example_group_instance) ⇒ Object
Just like run_hook, except it removes the blocks as it evalutes them, ensuring that they will only be run once.
-
#run_hook_filtered(hook, scope, group, example_group_instance, example = nil) ⇒ Object
#build_metadata_hash_from
Instance Method Details
#after(*args, &block) ⇒ Object
103
104
105
106
|
# File 'lib/rspec/core/hooks.rb', line 103
def after(*args, &block)
scope, options = scope_and_options_from(*args)
hooks[:after][scope] << AfterHook.new(options, &block)
end
|
#around(*args, &block) ⇒ Object
108
109
110
111
|
# File 'lib/rspec/core/hooks.rb', line 108
def around(*args, &block)
scope, options = scope_and_options_from(*args)
hooks[:around][scope] << AroundHook.new(options, &block)
end
|
#before(*args, &block) ⇒ Object
98
99
100
101
|
# File 'lib/rspec/core/hooks.rb', line 98
def before(*args, &block)
scope, options = scope_and_options_from(*args)
hooks[:before][scope] << BeforeHook.new(options, &block)
end
|
#find_hook(hook, scope, example_group_class, example = nil) ⇒ Object
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
# File 'lib/rspec/core/hooks.rb', line 129
def find_hook(hook, scope, example_group_class, example = nil)
found_hooks = hooks[hook][scope].find_hooks_for(example || example_group_class)
if scope == :all
super_klass = example_group_class.superclass
while super_klass != RSpec::Core::ExampleGroup
found_hooks = found_hooks.without_hooks_for(super_klass)
super_klass = super_klass.superclass
end
end
found_hooks
end
|
#run_hook(hook, scope, example_group_instance = nil) ⇒ Object
Runs all of the blocks stored with the hook in the context of the example. If no example is provided, just calls the hook directly.
115
116
117
|
# File 'lib/rspec/core/hooks.rb', line 115
def run_hook(hook, scope, example_group_instance=nil)
hooks[hook][scope].run_all(example_group_instance)
end
|
#run_hook!(hook, scope, example_group_instance) ⇒ Object
Just like run_hook, except it removes the blocks as it evalutes them, ensuring that they will only be run once.
121
122
123
|
# File 'lib/rspec/core/hooks.rb', line 121
def run_hook!(hook, scope, example_group_instance)
hooks[hook][scope].run_all!(example_group_instance)
end
|
#run_hook_filtered(hook, scope, group, example_group_instance, example = nil) ⇒ Object
125
126
127
|
# File 'lib/rspec/core/hooks.rb', line 125
def run_hook_filtered(hook, scope, group, example_group_instance, example = nil)
find_hook(hook, scope, group, example).run_all(example_group_instance)
end
|