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.