Walks the AST, executing steps and notifying listeners
Print announcement. This method can be called from within StepDefinitions.
# File lib/cucumber/ast/tree_walker.rb, line 146 146: def announce(announcement) 147: broadcast(announcement) 148: end
Embed file of mime_type in the formatter. This method can be called from within StepDefinitions. For most formatters this is a no-op.
# File lib/cucumber/ast/tree_walker.rb, line 152 152: def embed(file, mime_type) 153: broadcast(file, mime_type) 154: end
# File lib/cucumber/ast/tree_walker.rb, line 55 55: def visit_background(background) 56: broadcast(background) do 57: background.accept(self) 58: end 59: end
# File lib/cucumber/ast/tree_walker.rb, line 61 61: def visit_background_name(keyword, name, file_colon_line, source_indent) 62: broadcast(keyword, name, file_colon_line, source_indent) 63: end
# File lib/cucumber/ast/tree_walker.rb, line 24 24: def visit_comment(comment) 25: broadcast(comment) do 26: comment.accept(self) 27: end 28: end
# File lib/cucumber/ast/tree_walker.rb, line 30 30: def visit_comment_line(comment_line) 31: broadcast(comment_line) 32: end
# File lib/cucumber/ast/tree_walker.rb, line 71 71: def visit_examples(examples) 72: broadcast(examples) do 73: examples.accept(self) 74: end 75: end
# File lib/cucumber/ast/tree_walker.rb, line 65 65: def visit_examples_array(examples_array) 66: broadcast(examples_array) do 67: examples_array.accept(self) 68: end 69: end
# File lib/cucumber/ast/tree_walker.rb, line 77 77: def visit_examples_name(keyword, name) 78: broadcast(keyword, name) 79: end
# File lib/cucumber/ast/tree_walker.rb, line 18 18: def visit_feature(feature) 19: broadcast(feature) do 20: feature.accept(self) 21: end 22: end
feature_element is either Scenario or ScenarioOutline
# File lib/cucumber/ast/tree_walker.rb, line 49 49: def visit_feature_element(feature_element) 50: broadcast(feature_element) do 51: feature_element.accept(self) 52: end 53: end
# File lib/cucumber/ast/tree_walker.rb, line 44 44: def visit_feature_name(keyword, name) 45: broadcast(keyword, name) 46: end
# File lib/cucumber/ast/tree_walker.rb, line 12 12: def visit_features(features) 13: broadcast(features) do 14: features.accept(self) 15: end 16: end
# File lib/cucumber/ast/tree_walker.rb, line 81 81: def visit_outline_table(outline_table) 82: broadcast(outline_table) do 83: outline_table.accept(self) 84: end 85: end
# File lib/cucumber/ast/tree_walker.rb, line 125 125: def visit_py_string(string) 126: broadcast(string) 127: end
# File lib/cucumber/ast/tree_walker.rb, line 87 87: def visit_scenario_name(keyword, name, file_colon_line, source_indent) 88: broadcast(keyword, name, file_colon_line, source_indent) 89: end
# File lib/cucumber/ast/tree_walker.rb, line 97 97: def visit_step(step) 98: broadcast(step) do 99: step.accept(self) 100: end 101: end
# File lib/cucumber/ast/tree_walker.rb, line 103 103: def visit_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background) 104: broadcast(keyword, step_match, multiline_arg, status, exception, source_indent, background) do 105: visit_step_name(keyword, step_match, status, source_indent, background) 106: visit_multiline_arg(multiline_arg) if multiline_arg 107: visit_exception(exception, status) if exception 108: end 109: end
# File lib/cucumber/ast/tree_walker.rb, line 91 91: def visit_steps(steps) 92: broadcast(steps) do 93: steps.accept(self) 94: end 95: end
# File lib/cucumber/ast/tree_walker.rb, line 135 135: def visit_table_cell(table_cell) 136: broadcast(table_cell) do 137: table_cell.accept(self) 138: end 139: end
# File lib/cucumber/ast/tree_walker.rb, line 141 141: def visit_table_cell_value(value, status) 142: broadcast(value, status) 143: end
# File lib/cucumber/ast/tree_walker.rb, line 158 158: def broadcast(*args, &block) 159: message = extract_method_name_from(caller) 160: message.gsub!('visit_', '') 161: 162: if block_given? 163: send_to_all("before_#{message}", *args) 164: yield if block_given? 165: send_to_all("after_#{message}", *args) 166: else 167: send_to_all(message, *args) 168: end 169: end
# File lib/cucumber/ast/tree_walker.rb, line 216 216: def extract_method_name_from(call_stack) 217: call_stack[0].match(/in `(.*)'/).captures[0] 218: end
# File lib/cucumber/ast/tree_walker.rb, line 203 203: def legacy_invoke(listener, message, *args) 204: case message.to_sym 205: when :feature_name 206: listener.feature_name("#{args[0]}: #{args[1]}") 207: when :scenario_name, :examples_name 208: args_with_colon = args.dup 209: args_with_colon[0] += ':' 210: listener.__send__(message, *args_with_colon) 211: else 212: listener.__send__(message, *args) 213: end 214: end
# File lib/cucumber/ast/tree_walker.rb, line 184 184: def legacy_listener?(listener) 185: listener.respond_to?(:feature_name) && 186: (listener.method(:feature_name) rescue false) && 187: listener.method(:feature_name).arity == 1 188: end
# File lib/cucumber/ast/tree_walker.rb, line 171 171: def send_to_all(message, *args) 172: @listeners.each do |listener| 173: if listener.respond_to?(message) 174: if legacy_listener?(listener) 175: warn_legacy(listener) 176: legacy_invoke(listener, message, *args) 177: else 178: listener.__send__(message, *args) 179: end 180: end 181: end 182: end
# File lib/cucumber/ast/tree_walker.rb, line 190 190: def warn_legacy(listener) 191: @warned_listeners ||= [] 192: unless @warned_listeners.index(listener) 193: warn("#{listener.class} is using a deprecated formatter API. Starting with Cucumber 0.7.0 the signatures\n" + 194: "that have changed are:\n" + 195: " feature_name(keyword, name) # Two arguments. The keyword argument will not contain a colon.\n" + 196: " scenario_name(keyword, name, file_colon_line, source_indent) # The keyword argument will not contain a colon.\n" + 197: " examples_name(keyword, name) # The keyword argument will not contain a colon.\n" 198: ) 199: end 200: @warned_listeners << listener 201: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.