class Cucumber::Runtime::SupportCode
Attributes
Public Class Methods
Source
# File lib/cucumber/runtime/support_code.rb, line 44 def initialize(user_interface, configuration = Configuration.default) @configuration = configuration # TODO: needs a better name, or inlining its methods @runtime_facade = Runtime::ForProgrammingLanguages.new(self, user_interface) @registry = Cucumber::Glue::RegistryAndMore.new(@runtime_facade, @configuration) end
Public Instance Methods
Source
# File lib/cucumber/runtime/support_code.rb, line 117 def apply_after_hooks(test_case) return test_case if test_case.test_steps.empty? scenario = RunningTestCase.new(test_case) hooks = registry.hooks_for(:after, scenario) AfterHooks.new(@configuration.id_generator, hooks, scenario, @configuration.event_bus).apply_to(test_case) end
Source
# File lib/cucumber/runtime/support_code.rb, line 110 def apply_before_hooks(test_case) return test_case if test_case.test_steps.empty? scenario = RunningTestCase.new(test_case) hooks = registry.hooks_for(:before, scenario) BeforeHooks.new(@configuration.id_generator, hooks, scenario, @configuration.event_bus).apply_to(test_case) end
Source
# File lib/cucumber/runtime/support_code.rb, line 51 def configure(new_configuration) @configuration = Configuration.new(new_configuration) end
Source
# File lib/cucumber/runtime/support_code.rb, line 104 def find_after_step_hooks(test_case) scenario = RunningTestCase.new(test_case) hooks = registry.hooks_for(:after_step, scenario) StepHooks.new(@configuration.id_generator, hooks, @configuration.event_bus) end
Source
# File lib/cucumber/runtime/support_code.rb, line 124 def find_around_hooks(test_case) scenario = RunningTestCase.new(test_case) registry.hooks_for(:around, scenario).map do |hook| Hooks.around_hook do |run_scenario| hook.invoke('Around', scenario, &run_scenario) end end end
Source
# File lib/cucumber/runtime/support_code.rb, line 95 def fire_hook(name, *args) # TODO: kill with fire registry.send(name, *args) end
Source
# File lib/cucumber/runtime/support_code.rb, line 72 def invoke_dynamic_step(step_name, multiline_argument, _location = nil) matches = step_matches(step_name) raise UndefinedDynamicStep, step_name if matches.empty? matches.first.invoke(multiline_argument) end
@api private This allows users to attempt to find, match and execute steps from code as the features are running, as opposed to regular steps which are compiled into test steps before execution.
These are commonly called nested steps.
Source
# File lib/cucumber/runtime/support_code.rb, line 61 def invoke_dynamic_steps(steps_text, iso_code, _location) parser = Cucumber::Gherkin::StepsParser.new(StepInvoker.new(self), iso_code) parser.parse(steps_text) end
Invokes a series of steps steps_text
. Example:
invoke(%Q{ Given I have 8 cukes in my belly Then I should not be thirsty })
Source
# File lib/cucumber/runtime/support_code.rb, line 78 def load_files!(files) log.debug("Code:\n") files.each do |file| load_file(file) end log.debug("\n") end
Source
# File lib/cucumber/runtime/support_code.rb, line 86 def load_files_from_paths(paths) files = paths.map { |path| Dir["#{path}/**/*.rb"] }.flatten load_files! files end
Source
# File lib/cucumber/runtime/support_code.rb, line 100 def step_definitions registry.step_definitions end
Source
# File lib/cucumber/runtime/support_code.rb, line 91 def unmatched_step_definitions registry.unmatched_step_definitions end
Private Instance Methods
Source
# File lib/cucumber/runtime/support_code.rb, line 140 def load_file(file) log.debug(" * #{file}\n") registry.load_code_file(file) end
Source
# File lib/cucumber/runtime/support_code.rb, line 136 def step_matches(step_name) StepMatchSearch.new(registry.method(:step_matches), @configuration).call(step_name) end