# File lib/cucumber/runtime/support_code.rb, line 48 def initialize(user_interface, configuration=Configuration.default) @configuration = configuration @runtime_facade = Runtime::ForProgrammingLanguages.new(self, user_interface) @ruby = Cucumber::RbSupport::RbLanguage.new(@runtime_facade, @configuration) end
# File lib/cucumber/runtime/support_code.rb, line 118 def apply_after_hooks(test_case) scenario = RunningTestCase.new(test_case) hooks = @ruby.hooks_for(:after, scenario) AfterHooks.new(hooks, scenario).apply_to(test_case) end
# File lib/cucumber/runtime/support_code.rb, line 112 def apply_before_hooks(test_case) scenario = RunningTestCase.new(test_case) hooks = @ruby.hooks_for(:before, scenario) BeforeHooks.new(hooks, scenario).apply_to(test_case) end
# File lib/cucumber/runtime/support_code.rb, line 54 def configure(new_configuration) @configuration = Configuration.new(new_configuration) end
# File lib/cucumber/runtime/support_code.rb, line 106 def find_after_step_hooks(test_case) scenario = RunningTestCase.new(test_case) hooks = @ruby.hooks_for(:after_step, scenario) StepHooks.new hooks end
# File lib/cucumber/runtime/support_code.rb, line 124 def find_around_hooks(test_case) scenario = RunningTestCase.new(test_case) @ruby.hooks_for(:around, scenario).map do |hook| Hooks.around_hook(test_case.source) do |run_scenario| hook.invoke('Around', scenario, &run_scenario) end end end
# File lib/cucumber/runtime/support_code.rb, line 98 def fire_hook(name, *args) @ruby.send(name, *args) 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.
# File lib/cucumber/runtime/support_code.rb, line 75 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
Invokes a series of steps steps_text
. Example:
invoke(%Q{ Given I have 8 cukes in my belly Then I should not be thirsty })
# File lib/cucumber/runtime/support_code.rb, line 64 def invoke_dynamic_steps(steps_text, i18n, location) parser = Cucumber::Gherkin::StepsParser.new(StepInvoker.new(self), i18n.iso_code) parser.parse(steps_text) end
# File lib/cucumber/runtime/support_code.rb, line 81 def load_files!(files) log.debug("Code:\n") files.each do |file| load_file(file) end log.debug("\n") end
# File lib/cucumber/runtime/support_code.rb, line 89 def load_files_from_paths(paths) files = paths.map { |path| Dir["#{path}/**/*.rb"] }.flatten load_files! files end
# File lib/cucumber/runtime/support_code.rb, line 102 def step_definitions @ruby.step_definitions end
# File lib/cucumber/runtime/support_code.rb, line 94 def unmatched_step_definitions @ruby.unmatched_step_definitions end
# File lib/cucumber/runtime/support_code.rb, line 140 def load_file(file) log.debug(" * #{file}\n") @ruby.load_code_file(file) end
# File lib/cucumber/runtime/support_code.rb, line 145 def log Cucumber.logger end
# File lib/cucumber/runtime/support_code.rb, line 136 def step_matches(step_name) StepMatchSearch.new(@ruby.method(:step_matches), @configuration).call(step_name) end