class Cucumber::Runtime::SupportCode

Attributes

ruby[R]

Public Class Methods

new(user_interface, configuration=Configuration.default) click to toggle source
# 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

Public Instance Methods

apply_after_hooks(test_case) click to toggle source
# 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
apply_before_hooks(test_case) click to toggle source
# 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
configure(new_configuration) click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 54
def configure(new_configuration)
  @configuration = Configuration.new(new_configuration)
end
find_after_step_hooks(test_case) click to toggle source
# 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
find_around_hooks(test_case) click to toggle source
# 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
fire_hook(name, *args) click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 98
def fire_hook(name, *args)
  @ruby.send(name, *args)
end
invoke_dynamic_step(step_name, multiline_argument, location=nil) click to toggle source

@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
invoke_dynamic_steps(steps_text, i18n, location) click to toggle source

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
load_files!(files) click to toggle source
# 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
load_files_from_paths(paths) click to toggle source
# 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
step_definitions() click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 102
def step_definitions
  @ruby.step_definitions
end
unmatched_step_definitions() click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 94
def unmatched_step_definitions
  @ruby.unmatched_step_definitions
end

Private Instance Methods

load_file(file) click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 140
def load_file(file)
  log.debug("  * #{file}\n")
  @ruby.load_code_file(file)
end
log() click to toggle source
# File lib/cucumber/runtime/support_code.rb, line 145
def log
  Cucumber.logger
end
step_matches(step_name) click to toggle source
# 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