kosmas58-cucumber 0.1.16.6 → 0.1.99.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/History.txt +126 -2
- data/License.txt +1 -1
- data/Manifest.txt +0 -270
- data/Rakefile +1 -1
- data/bin/cucumber +2 -2
- data/config/hoe.rb +7 -2
- data/examples/cs/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/README.textile +1 -1
- data/examples/i18n/Rakefile +3 -3
- data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -6
- data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +1 -1
- data/examples/i18n/de/features/addition.feature +6 -6
- data/examples/i18n/de/features/step_definitons/calculator_steps.rb +2 -2
- data/examples/i18n/en/features/addition.feature +6 -6
- data/examples/i18n/en/features/step_definitons/calculator_steps.rb +2 -2
- data/examples/i18n/es/features/adicion.feature +11 -12
- data/examples/i18n/es/features/step_definitons/calculador_steps.rb +7 -10
- data/examples/i18n/es/lib/calculador.rb +4 -1
- data/examples/i18n/et/features/liitmine.feature +7 -6
- data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +1 -1
- data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +1 -1
- data/examples/i18n/fi/features/yhteenlasku.feature +2 -2
- data/examples/i18n/fr/features/addition.feature +2 -2
- data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +1 -1
- data/examples/i18n/id/features/addition.feature +6 -6
- data/examples/i18n/id/features/step_definitons/calculator_steps.rb +2 -2
- data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +1 -1
- data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +2 -3
- data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/lt/features/addition.feature +7 -6
- data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +2 -2
- data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +7 -7
- data/examples/i18n/no/features/summering.feature +1 -0
- data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +1 -1
- data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +1 -1
- data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +1 -1
- data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +2 -2
- data/examples/java/src/cucumber/demo/Hello.java +16 -0
- data/examples/jbehave/README.textile +17 -0
- data/examples/jbehave/features/support/env.rb +7 -0
- data/examples/jbehave/features/trading.feature +24 -0
- data/examples/jbehave/pom.xml +48 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +32 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +42 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +29 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +22 -0
- data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +65 -0
- data/examples/self_test/README.textile +4 -1
- data/examples/{calculator_ruby_features → self_test}/Rakefile +3 -3
- data/examples/self_test/features/background/failing_background.feature +10 -0
- data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
- data/examples/self_test/features/background/multiline_args_background.feature +32 -0
- data/examples/self_test/features/background/passing_background.feature +10 -0
- data/examples/self_test/features/background/pending_background.feature +10 -0
- data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
- data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
- data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
- data/examples/self_test/features/lots_of_undefined.feature +8 -0
- data/examples/self_test/features/outline_sample.feature +11 -5
- data/examples/self_test/features/sample.feature +8 -3
- data/examples/self_test/features/step_definitions/sample_steps.rb +53 -4
- data/examples/self_test/features/support/env.rb +1 -0
- data/examples/self_test/features/support/tag_count_formatter.rb +25 -0
- data/examples/tickets/features/172.feature +28 -0
- data/examples/tickets/features/177/1.feature +29 -0
- data/examples/tickets/features/177/2.feature +21 -0
- data/examples/tickets/features/177/3.feature +18 -0
- data/examples/tickets/features/180.feature +7 -0
- data/examples/tickets/features/scenario_outline.feature +6 -1
- data/examples/tickets/features/step_definitons/tickets_steps.rb +27 -3
- data/examples/tickets/features/tickets.feature +4 -0
- data/features/background.feature +223 -0
- data/features/cucumber_cli.feature +218 -98
- data/features/cucumber_cli_outlines.feature +54 -37
- data/features/custom_formatter.feature +11 -0
- data/features/report_called_undefined_steps.feature +32 -0
- data/features/step_definitions/cucumber_steps.rb +7 -3
- data/features/step_definitions/extra_steps.rb +1 -1
- data/features/support/env.rb +2 -1
- data/gem_tasks/flog.rake +1 -1
- data/gem_tasks/gemspec.rake +2 -2
- data/gem_tasks/jar.rake +67 -0
- data/lib/autotest/cucumber_mixin.rb +17 -23
- data/lib/cucumber.rb +63 -11
- data/lib/cucumber/ast.rb +29 -0
- data/lib/cucumber/ast/background.rb +88 -0
- data/lib/cucumber/ast/comment.rb +26 -0
- data/lib/cucumber/ast/examples.rb +26 -0
- data/lib/cucumber/ast/feature.rb +66 -0
- data/lib/cucumber/ast/features.rb +39 -0
- data/lib/cucumber/ast/filter.rb +22 -0
- data/lib/cucumber/ast/outline_table.rb +49 -0
- data/lib/cucumber/ast/py_string.rb +52 -0
- data/lib/cucumber/ast/scenario.rb +103 -0
- data/lib/cucumber/ast/scenario_outline.rb +92 -0
- data/lib/cucumber/ast/step.rb +161 -0
- data/lib/cucumber/ast/steps.rb +13 -0
- data/lib/cucumber/ast/table.rb +218 -0
- data/lib/cucumber/ast/tags.rb +40 -0
- data/lib/cucumber/ast/visitor.rb +109 -0
- data/lib/cucumber/broadcaster.rb +1 -6
- data/lib/cucumber/cli/configuration.rb +339 -0
- data/lib/cucumber/cli/language_help_formatter.rb +59 -0
- data/lib/cucumber/cli/main.rb +100 -0
- data/lib/cucumber/core_ext/exception.rb +41 -8
- data/lib/cucumber/core_ext/instance_exec.rb +54 -0
- data/lib/cucumber/core_ext/proc.rb +29 -65
- data/lib/cucumber/core_ext/string.rb +19 -0
- data/lib/cucumber/formatter.rb +1 -0
- data/lib/cucumber/{formatters → formatter}/ansicolor.rb +14 -16
- data/lib/cucumber/formatter/color_io.rb +17 -0
- data/lib/cucumber/formatter/console.rb +119 -0
- data/lib/cucumber/formatter/cucumber.css +55 -0
- data/lib/cucumber/formatter/cucumber.sass +49 -0
- data/lib/cucumber/formatter/html.rb +121 -0
- data/lib/cucumber/formatter/pretty.rb +167 -0
- data/lib/cucumber/formatter/profile.rb +77 -0
- data/lib/cucumber/formatter/progress.rb +68 -0
- data/lib/cucumber/formatter/rerun.rb +35 -0
- data/lib/cucumber/formatter/unicode.rb +35 -0
- data/lib/cucumber/formatters/unicode.rb +2 -35
- data/lib/cucumber/jbehave.rb +102 -0
- data/lib/cucumber/languages.yml +128 -75
- data/lib/cucumber/parser.rb +43 -0
- data/lib/cucumber/parser/basic.rb +0 -0
- data/lib/cucumber/parser/feature.rb +1490 -0
- data/lib/cucumber/parser/feature.tt +188 -0
- data/lib/cucumber/parser/i18n.tt +31 -0
- data/lib/cucumber/parser/table.rb +402 -0
- data/lib/cucumber/parser/table.tt +59 -0
- data/lib/cucumber/parser/treetop_ext.rb +75 -0
- data/lib/cucumber/platform.rb +3 -17
- data/lib/cucumber/rails/rspec.rb +5 -2
- data/lib/cucumber/step_definition.rb +87 -0
- data/lib/cucumber/step_mother.rb +151 -66
- data/lib/cucumber/version.rb +2 -2
- data/rails_generators/cucumber/USAGE +3 -2
- data/rails_generators/cucumber/cucumber_generator.rb +33 -23
- data/rails_generators/cucumber/templates/cucumber +2 -1
- data/rails_generators/cucumber/templates/cucumber.rake +6 -1
- data/rails_generators/cucumber/templates/env.rb +1 -1
- data/rails_generators/feature/USAGE +3 -0
- data/rails_generators/feature/feature_generator.rb +30 -6
- data/spec/cucumber/ast/background_spec.rb +58 -0
- data/spec/cucumber/ast/feature_factory.rb +54 -0
- data/spec/cucumber/ast/feature_spec.rb +60 -0
- data/spec/cucumber/ast/py_string_spec.rb +40 -0
- data/spec/cucumber/ast/scenario_outline_spec.rb +64 -0
- data/spec/cucumber/ast/scenario_spec.rb +82 -0
- data/spec/cucumber/ast/step_spec.rb +45 -0
- data/spec/cucumber/ast/table_spec.rb +81 -0
- data/spec/cucumber/ast/tags_spec.rb +23 -0
- data/spec/cucumber/broadcaster_spec.rb +4 -17
- data/spec/cucumber/cli/configuration_spec.rb +239 -0
- data/spec/cucumber/cli/main_spec.rb +164 -0
- data/spec/cucumber/core_ext/proc_spec.rb +27 -35
- data/spec/cucumber/core_ext/string_spec.rb +8 -0
- data/spec/cucumber/{formatters → formatter}/ansicolor_spec.rb +2 -2
- data/spec/cucumber/formatter/html/cucumber.css +37 -0
- data/spec/cucumber/formatter/html/cucumber.js +13 -0
- data/spec/cucumber/formatter/html/index.html +45 -0
- data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
- data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
- data/spec/cucumber/formatters/profile_formatter_spec.rb +17 -16
- data/spec/cucumber/parser/feature_parser_spec.rb +281 -0
- data/spec/cucumber/parser/table_parser_spec.rb +48 -0
- data/spec/cucumber/step_definition_spec.rb +62 -0
- data/spec/cucumber/step_mother_spec.rb +50 -51
- data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
- data/spec/cucumber/treetop_parser/scenario_outline.feature +1 -1
- data/spec/cucumber/treetop_parser/spaces.feature +3 -1
- data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
- data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
- data/spec/cucumber/world/pending_spec.rb +13 -12
- data/spec/spec_helper.rb +1 -1
- metadata +107 -79
- data/examples/calculator_ruby_features/features/addition.rb +0 -39
- data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
- data/gem_tasks/treetop.rake +0 -41
- data/lib/cucumber/cli.rb +0 -355
- data/lib/cucumber/executor.rb +0 -205
- data/lib/cucumber/formatters.rb +0 -1
- data/lib/cucumber/formatters/autotest_formatter.rb +0 -23
- data/lib/cucumber/formatters/cucumber.css +0 -132
- data/lib/cucumber/formatters/cucumber.js +0 -11
- data/lib/cucumber/formatters/html_formatter.rb +0 -152
- data/lib/cucumber/formatters/jquery.js +0 -32
- data/lib/cucumber/formatters/pretty_formatter.rb +0 -285
- data/lib/cucumber/formatters/profile_formatter.rb +0 -92
- data/lib/cucumber/formatters/progress_formatter.rb +0 -61
- data/lib/cucumber/model.rb +0 -1
- data/lib/cucumber/model/table.rb +0 -32
- data/lib/cucumber/step_methods.rb +0 -49
- data/lib/cucumber/tree.rb +0 -16
- data/lib/cucumber/tree/feature.rb +0 -105
- data/lib/cucumber/tree/features.rb +0 -21
- data/lib/cucumber/tree/given_scenario.rb +0 -13
- data/lib/cucumber/tree/scenario.rb +0 -240
- data/lib/cucumber/tree/step.rb +0 -173
- data/lib/cucumber/tree/table.rb +0 -26
- data/lib/cucumber/tree/top_down_visitor.rb +0 -23
- data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -254
- data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_da.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_de.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_en-lol.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_en.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_es.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_et.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_fi.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_id.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_it.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_ko.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_no.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_parser.rb +0 -36
- data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_se.rb +0 -1951
- data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1951
- data/lib/cucumber/world.rb +0 -1
- data/lib/cucumber/world/pending.rb +0 -22
- data/setup.rb +0 -1585
- data/spec/cucumber/cli_spec.rb +0 -521
- data/spec/cucumber/executor_spec.rb +0 -382
- data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -26
- data/spec/cucumber/formatters/features.html +0 -269
- data/spec/cucumber/formatters/html_formatter_spec.rb +0 -110
- data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -410
- data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -81
- data/spec/cucumber/model/table_spec.rb +0 -32
- data/spec/cucumber/tree/feature_spec.rb +0 -122
- data/spec/cucumber/tree/row_scenario_outline_spec.rb +0 -73
- data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
- data/spec/cucumber/tree/row_step_outline_spec.rb +0 -38
- data/spec/cucumber/tree/scenario_outline_spec.rb +0 -50
- data/spec/cucumber/tree/scenario_spec.rb +0 -134
- data/spec/cucumber/tree/step_outline_spec.rb +0 -17
- data/spec/cucumber/tree/step_spec.rb +0 -59
- data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -120
data/lib/cucumber/tree/step.rb
DELETED
@@ -1,173 +0,0 @@
|
|
1
|
-
module Cucumber
|
2
|
-
module Tree
|
3
|
-
class BaseStep
|
4
|
-
attr_reader :scenario
|
5
|
-
attr_accessor :error
|
6
|
-
|
7
|
-
def self.new_id!
|
8
|
-
@next_id ||= -1
|
9
|
-
@next_id += 1
|
10
|
-
end
|
11
|
-
|
12
|
-
attr_reader :error
|
13
|
-
|
14
|
-
def file
|
15
|
-
@scenario.file
|
16
|
-
end
|
17
|
-
|
18
|
-
def steps
|
19
|
-
self
|
20
|
-
end
|
21
|
-
|
22
|
-
def length
|
23
|
-
keyword.jlength + 1 + name.jlength
|
24
|
-
end
|
25
|
-
|
26
|
-
if defined?(JRUBY_VERSION)
|
27
|
-
PENDING_ADJUSTMENT = 2
|
28
|
-
REGULAR_ADJUSTMENT = 1
|
29
|
-
else
|
30
|
-
PENDING_ADJUSTMENT = 3
|
31
|
-
REGULAR_ADJUSTMENT = 2
|
32
|
-
end
|
33
|
-
|
34
|
-
def execute_in(world, regexp, args, proc)
|
35
|
-
strip_pos = nil
|
36
|
-
begin
|
37
|
-
proc.call_in(world, *args)
|
38
|
-
rescue ArityMismatchError => e
|
39
|
-
e.backtrace[0] = proc.to_backtrace_line
|
40
|
-
strip_pos = e.backtrace.index("#{__FILE__}:#{__LINE__ - 3}:in `execute_in'")
|
41
|
-
format_error(strip_pos, proc, e)
|
42
|
-
rescue => e
|
43
|
-
method_line = "#{__FILE__}:#{__LINE__ - 6}:in `execute_in'"
|
44
|
-
|
45
|
-
# IronRuby returns nil for backtrace...
|
46
|
-
if e.backtrace.nil?
|
47
|
-
def e.backtrace
|
48
|
-
@cucumber_backtrace ||= []
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
method_line_pos = e.backtrace.index(method_line)
|
53
|
-
if method_line_pos
|
54
|
-
strip_pos = method_line_pos - (Pending === e ? PENDING_ADJUSTMENT : REGULAR_ADJUSTMENT)
|
55
|
-
else
|
56
|
-
# This happens with rails, because they screw up the backtrace
|
57
|
-
# before we get here (injecting erb stacktrace and such)
|
58
|
-
end
|
59
|
-
format_error(strip_pos, proc, e)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def format_error(strip_pos, proc, e)
|
64
|
-
@error = e
|
65
|
-
# Remove lines underneath the plain text step
|
66
|
-
e.backtrace[strip_pos..-1] = nil unless strip_pos.nil?
|
67
|
-
e.backtrace.compact!
|
68
|
-
# Replace the step line with something more readable
|
69
|
-
e.backtrace.replace(e.backtrace.map{|l| l.gsub(/`#{proc.meth}'/, "`#{keyword} #{proc.name}'")})
|
70
|
-
if row?
|
71
|
-
e.backtrace << "#{file}:#{line}:in `#{proc.name}'"
|
72
|
-
else
|
73
|
-
e.backtrace << "#{file}:#{line}:in `#{keyword} #{name}'"
|
74
|
-
end
|
75
|
-
raise e
|
76
|
-
end
|
77
|
-
|
78
|
-
def id
|
79
|
-
@id ||= self.class.new_id!
|
80
|
-
end
|
81
|
-
|
82
|
-
def actual_keyword
|
83
|
-
keyword == Cucumber.language['and'] ? previous_step.actual_keyword : keyword
|
84
|
-
end
|
85
|
-
|
86
|
-
def previous_step
|
87
|
-
@scenario.previous_step(self)
|
88
|
-
end
|
89
|
-
|
90
|
-
def padding_length
|
91
|
-
@scenario.step_padding_length(self)
|
92
|
-
end
|
93
|
-
|
94
|
-
def forced_to_pending?
|
95
|
-
@error.kind_of?(ForcedPending)
|
96
|
-
end
|
97
|
-
|
98
|
-
def outline?
|
99
|
-
false
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
class Step < BaseStep
|
104
|
-
attr_reader :keyword, :name, :line
|
105
|
-
attr_accessor :arity, :extra_args
|
106
|
-
|
107
|
-
def row?
|
108
|
-
false
|
109
|
-
end
|
110
|
-
|
111
|
-
def initialize(scenario, keyword, name, line)
|
112
|
-
@scenario, @keyword, @name, @line = scenario, keyword, name, line
|
113
|
-
@extra_args ||= []
|
114
|
-
@arity = 0
|
115
|
-
end
|
116
|
-
|
117
|
-
def regexp_args_proc(step_mother)
|
118
|
-
regexp, args, proc = step_mother.regexp_args_proc(name)
|
119
|
-
@arity = args.length
|
120
|
-
[regexp, (args + extra_args), proc]
|
121
|
-
end
|
122
|
-
|
123
|
-
def format(regexp, format=nil, &proc)
|
124
|
-
regexp.nil? ? name : name.gzub(regexp, format, &proc)
|
125
|
-
end
|
126
|
-
end
|
127
|
-
|
128
|
-
class StepOutline < Step
|
129
|
-
def outline?
|
130
|
-
true
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
class RowStep < BaseStep
|
135
|
-
attr_reader :keyword
|
136
|
-
|
137
|
-
def initialize(scenario, step, args)
|
138
|
-
@scenario, @step, @args = scenario, step, args
|
139
|
-
end
|
140
|
-
|
141
|
-
def regexp_args_proc(step_mother)
|
142
|
-
regexp, _, proc = @step.regexp_args_proc(step_mother)
|
143
|
-
[regexp, @args, proc]
|
144
|
-
end
|
145
|
-
|
146
|
-
def row?
|
147
|
-
true
|
148
|
-
end
|
149
|
-
|
150
|
-
def line
|
151
|
-
@scenario.line
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
class RowStepOutline < Step
|
156
|
-
attr_reader :visible_args
|
157
|
-
|
158
|
-
def initialize(scenario, step, name, visible_args, line)
|
159
|
-
@visible_args = visible_args
|
160
|
-
@extra_args = step.extra_args
|
161
|
-
super(scenario, keyword, name, line)
|
162
|
-
end
|
163
|
-
|
164
|
-
def row?
|
165
|
-
true
|
166
|
-
end
|
167
|
-
|
168
|
-
def outline?
|
169
|
-
true
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
173
|
-
end
|
data/lib/cucumber/tree/table.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
module Cucumber
|
2
|
-
module Tree
|
3
|
-
class Table
|
4
|
-
def initialize(rows)
|
5
|
-
@rows = rows
|
6
|
-
end
|
7
|
-
|
8
|
-
def |(cell)
|
9
|
-
@row ||= []
|
10
|
-
if cell == self
|
11
|
-
line = *caller[0].split(':')[1].to_i
|
12
|
-
@row.instance_eval %{
|
13
|
-
def line
|
14
|
-
#{line}
|
15
|
-
end
|
16
|
-
}
|
17
|
-
@rows << @row
|
18
|
-
@row = nil
|
19
|
-
else
|
20
|
-
@row << cell.to_s
|
21
|
-
end
|
22
|
-
self
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
module Cucumber
|
2
|
-
module Tree
|
3
|
-
class TopDownVisitor
|
4
|
-
def visit_features(features)
|
5
|
-
features.accept(self)
|
6
|
-
end
|
7
|
-
|
8
|
-
def visit_feature(feature)
|
9
|
-
feature.accept(self)
|
10
|
-
end
|
11
|
-
|
12
|
-
def visit_header(header)
|
13
|
-
end
|
14
|
-
|
15
|
-
def visit_scenario(scenario)
|
16
|
-
scenario.accept(self)
|
17
|
-
end
|
18
|
-
|
19
|
-
def visit_step(step)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,254 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
module Cucumber
|
3
|
-
# :stopdoc:
|
4
|
-
module TreetopParser
|
5
|
-
grammar Feature
|
6
|
-
rule root
|
7
|
-
space? header scenario_sequence space? {
|
8
|
-
def compile
|
9
|
-
feature = Tree::Feature.new(header.text_value.strip)
|
10
|
-
scenario_sequence.compile(feature)
|
11
|
-
feature
|
12
|
-
end
|
13
|
-
}
|
14
|
-
end
|
15
|
-
|
16
|
-
rule header
|
17
|
-
(!(scenario_keyword / scenario_outline_keyword / comment_to_eol) .)+
|
18
|
-
end
|
19
|
-
|
20
|
-
rule scenario_sequence
|
21
|
-
head:scenario_outline_or_scenario? tail:(space scenario_or_scenario_outline_or_table)* {
|
22
|
-
def compile(feature)
|
23
|
-
([head] + tail).each do |scenario_or_scenario_outline_or_table|
|
24
|
-
scenario_or_scenario_outline_or_table.compile(feature) if scenario_or_scenario_outline_or_table.respond_to?(:compile)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
def tail
|
29
|
-
super.elements.map { |elt| elt.scenario_or_scenario_outline_or_table }
|
30
|
-
end
|
31
|
-
}
|
32
|
-
end
|
33
|
-
|
34
|
-
rule scenario_outline_or_scenario
|
35
|
-
scenario_outline / scenario
|
36
|
-
end
|
37
|
-
|
38
|
-
rule scenario
|
39
|
-
scenario_keyword space? name:line_to_eol steps:(space step_sequence)? {
|
40
|
-
def compile(feature)
|
41
|
-
line = input.line_of(interval.first)
|
42
|
-
scenario = feature.add_scenario(name.text_value.strip, line)
|
43
|
-
steps.step_sequence.compile(scenario) if steps.respond_to?(:step_sequence)
|
44
|
-
# TODO - GET RID OF THIS last_scenario NASTINESS
|
45
|
-
# Use a better datastructure, like a linked list...
|
46
|
-
Feature.last_scenario = scenario
|
47
|
-
end
|
48
|
-
}
|
49
|
-
end
|
50
|
-
|
51
|
-
rule scenario_outline
|
52
|
-
scenario_outline_keyword space? name:line_to_eol outline_body:(steps_and_optional_examples)? {
|
53
|
-
def compile(feature)
|
54
|
-
line = input.line_of(interval.first)
|
55
|
-
scenario = feature.add_scenario_outline(name.text_value.strip, line)
|
56
|
-
Feature.last_scenario = scenario
|
57
|
-
outline_body.compile(feature, scenario) if outline_body.respond_to?(:compile)
|
58
|
-
end
|
59
|
-
}
|
60
|
-
end
|
61
|
-
|
62
|
-
rule scenario_or_scenario_outline_or_table
|
63
|
-
scenario_outline / (scenario / more_examples)
|
64
|
-
end
|
65
|
-
|
66
|
-
rule steps_and_optional_examples
|
67
|
-
steps:(space step_sequence) table:(space examples)? {
|
68
|
-
def compile(feature, scenario)
|
69
|
-
steps.step_sequence.compile(scenario) if steps.respond_to?(:step_sequence)
|
70
|
-
table.examples.compile(feature, scenario) if table.respond_to?(:examples) && table.examples.respond_to?(:compile)
|
71
|
-
end
|
72
|
-
}
|
73
|
-
end
|
74
|
-
|
75
|
-
rule more_examples
|
76
|
-
more_examples_keyword table {
|
77
|
-
def compile(f)
|
78
|
-
table.compile(f)
|
79
|
-
end
|
80
|
-
}
|
81
|
-
end
|
82
|
-
|
83
|
-
rule examples
|
84
|
-
examples_keyword table {
|
85
|
-
def compile(feature, scenario)
|
86
|
-
table.compile_examples(feature, scenario)
|
87
|
-
end
|
88
|
-
}
|
89
|
-
end
|
90
|
-
|
91
|
-
rule table
|
92
|
-
space head:table_line body:(blank* eol space? table_line)* {
|
93
|
-
def compile(feature)
|
94
|
-
Feature.last_scenario.table_header = head.cell_values
|
95
|
-
body.each do |table_line|
|
96
|
-
feature.add_row_scenario(Feature.last_scenario, table_line.cell_values, table_line.line)
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
def compile_examples(feature, scenario)
|
101
|
-
scenario.table_header = head.cell_values
|
102
|
-
body.each do |table_line|
|
103
|
-
feature.add_row_scenario_outline(scenario, table_line.cell_values, table_line.line)
|
104
|
-
end
|
105
|
-
end
|
106
|
-
|
107
|
-
def matrix
|
108
|
-
([head] + body).map do |table_line|
|
109
|
-
table_line.cell_values # We're losing the line - we'll get it back when we make our own class
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def to_arg
|
114
|
-
Model::Table.new(matrix)
|
115
|
-
end
|
116
|
-
|
117
|
-
def body
|
118
|
-
super.elements.map { |elt| elt.table_line }
|
119
|
-
end
|
120
|
-
}
|
121
|
-
end
|
122
|
-
|
123
|
-
rule table_line
|
124
|
-
separator cells:(blank* cell_value blank* separator)+ {
|
125
|
-
def cell_values
|
126
|
-
cells.elements.map { |elt| elt.cell_value.text_value.strip }
|
127
|
-
end
|
128
|
-
|
129
|
-
def line
|
130
|
-
input.line_of(interval.first)
|
131
|
-
end
|
132
|
-
}
|
133
|
-
end
|
134
|
-
|
135
|
-
rule cell_value
|
136
|
-
(!(separator / eol) .)*
|
137
|
-
end
|
138
|
-
|
139
|
-
rule step_sequence
|
140
|
-
head:step tail:(space step)* {
|
141
|
-
def compile(scenario)
|
142
|
-
([head] + tail).each do |step|
|
143
|
-
step.compile(scenario)
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
def tail
|
148
|
-
super.elements.map { |elt| elt.step }
|
149
|
-
end
|
150
|
-
}
|
151
|
-
end
|
152
|
-
|
153
|
-
rule step
|
154
|
-
given_scenario / plain_step
|
155
|
-
end
|
156
|
-
|
157
|
-
rule given_scenario
|
158
|
-
given_scenario_keyword space? name:line_to_eol {
|
159
|
-
def compile(scenario)
|
160
|
-
line = input.line_of(interval.first)
|
161
|
-
scenario.create_given_scenario(name.text_value.strip, line)
|
162
|
-
end
|
163
|
-
}
|
164
|
-
end
|
165
|
-
|
166
|
-
rule plain_step
|
167
|
-
step_keyword space? name:line_to_eol multi:multiline_arg? {
|
168
|
-
def compile(scenario)
|
169
|
-
line = input.line_of(interval.first)
|
170
|
-
step = scenario.create_step(step_keyword.text_value, name.text_value.strip, line)
|
171
|
-
|
172
|
-
if multi.respond_to?(:to_arg)
|
173
|
-
step.extra_args << multi.to_arg
|
174
|
-
end
|
175
|
-
end
|
176
|
-
}
|
177
|
-
end
|
178
|
-
|
179
|
-
rule multiline_arg
|
180
|
-
table / multiline_string
|
181
|
-
end
|
182
|
-
|
183
|
-
rule multiline_string
|
184
|
-
eol indent:space triple_quote string:(!triple_quote .)* triple_quote {
|
185
|
-
def to_arg
|
186
|
-
indent_length = indent.text_value.length
|
187
|
-
significant_lines = string.text_value.split("\n")[1..-2]
|
188
|
-
significant_lines.map do |l|
|
189
|
-
l[indent_length..-1]
|
190
|
-
end.join("\n")
|
191
|
-
end
|
192
|
-
}
|
193
|
-
end
|
194
|
-
|
195
|
-
rule triple_quote
|
196
|
-
'"""'
|
197
|
-
end
|
198
|
-
|
199
|
-
rule separator
|
200
|
-
'|'
|
201
|
-
end
|
202
|
-
|
203
|
-
rule space
|
204
|
-
(white / comment_to_eol)+
|
205
|
-
end
|
206
|
-
|
207
|
-
rule line_to_eol
|
208
|
-
(!eol .)*
|
209
|
-
end
|
210
|
-
|
211
|
-
rule comment_to_eol
|
212
|
-
'#' line_to_eol
|
213
|
-
end
|
214
|
-
|
215
|
-
rule white
|
216
|
-
blank / eol
|
217
|
-
end
|
218
|
-
|
219
|
-
rule blank
|
220
|
-
[ \t]
|
221
|
-
end
|
222
|
-
|
223
|
-
rule eol
|
224
|
-
("\r" "\n"?) / "\n"
|
225
|
-
end
|
226
|
-
|
227
|
-
rule step_keyword
|
228
|
-
"<%= words['given'] %>" / "<%= words['when'] %>" / "<%= words['then'] %>" / "<%= words['and'] %>" / "<%= words['but'] %>"
|
229
|
-
end
|
230
|
-
|
231
|
-
rule scenario_keyword
|
232
|
-
"<%= words['scenario'] %>" ":"?
|
233
|
-
end
|
234
|
-
|
235
|
-
rule scenario_outline_keyword
|
236
|
-
"<%= words['scenario_outline'] %>" ":"?
|
237
|
-
end
|
238
|
-
|
239
|
-
rule more_examples_keyword
|
240
|
-
"<%= words['more_examples'] %>" ":"?
|
241
|
-
end
|
242
|
-
|
243
|
-
rule examples_keyword
|
244
|
-
"<%= words['examples'] %>" ":"?
|
245
|
-
end
|
246
|
-
|
247
|
-
rule given_scenario_keyword
|
248
|
-
"<%= words['given_scenario'] %>" ":"?
|
249
|
-
end
|
250
|
-
|
251
|
-
end
|
252
|
-
|
253
|
-
end
|
254
|
-
end
|