aslakhellesoy-cucumber 0.1.16.4 → 0.1.16.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. data/History.txt +75 -1
  2. data/Manifest.txt +58 -65
  3. data/examples/cs/features/step_definitons/calculator_steps.rb +1 -1
  4. data/examples/i18n/Rakefile +3 -3
  5. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -6
  6. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +1 -1
  7. data/examples/i18n/de/features/addition.feature +6 -6
  8. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +2 -2
  9. data/examples/i18n/en/features/addition.feature +6 -6
  10. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +2 -2
  11. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +1 -1
  12. data/examples/i18n/et/features/liitmine.feature +7 -6
  13. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +1 -1
  14. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +1 -1
  15. data/examples/i18n/fi/features/yhteenlasku.feature +2 -2
  16. data/examples/i18n/fr/features/addition.feature +2 -2
  17. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +1 -1
  18. data/examples/i18n/id/features/addition.feature +6 -6
  19. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +2 -2
  20. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +1 -1
  21. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +2 -3
  22. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
  23. data/examples/i18n/lt/features/addition.feature +7 -6
  24. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +2 -2
  25. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +7 -7
  26. data/examples/i18n/no/features/summering.feature +1 -0
  27. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +1 -1
  28. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +1 -1
  29. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +1 -1
  30. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +2 -2
  31. data/examples/jbehave/README.textile +17 -0
  32. data/examples/jbehave/features/support/env.rb +7 -0
  33. data/examples/jbehave/features/trading.feature +24 -0
  34. data/examples/jbehave/pom.xml +48 -0
  35. data/examples/self_test/README.textile +4 -1
  36. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  37. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  38. data/examples/self_test/features/outline_sample.feature +8 -5
  39. data/examples/self_test/features/sample.feature +5 -3
  40. data/examples/self_test/features/step_definitions/sample_steps.rb +15 -3
  41. data/features/cucumber_cli.feature +199 -97
  42. data/features/cucumber_cli_outlines.feature +46 -38
  43. data/features/report_called_undefined_steps.feature +31 -0
  44. data/features/step_definitions/cucumber_steps.rb +7 -3
  45. data/features/step_definitions/extra_steps.rb +1 -1
  46. data/features/support/env.rb +1 -1
  47. data/gem_tasks/features.rake +1 -1
  48. data/gem_tasks/flog.rake +1 -1
  49. data/lib/autotest/cucumber_mixin.rb +16 -23
  50. data/lib/cucumber/ast/comment.rb +26 -0
  51. data/lib/cucumber/ast/examples.rb +22 -0
  52. data/lib/cucumber/ast/feature.rb +60 -0
  53. data/lib/cucumber/ast/features.rb +39 -0
  54. data/lib/cucumber/ast/filter.rb +22 -0
  55. data/lib/cucumber/ast/outline_table.rb +49 -0
  56. data/lib/cucumber/ast/py_string.rb +52 -0
  57. data/lib/cucumber/ast/scenario.rb +91 -0
  58. data/lib/cucumber/ast/scenario_outline.rb +83 -0
  59. data/lib/cucumber/ast/step.rb +130 -0
  60. data/lib/cucumber/ast/table.rb +214 -0
  61. data/lib/cucumber/ast/tags.rb +33 -0
  62. data/lib/cucumber/ast/visitor.rb +93 -0
  63. data/lib/cucumber/ast.rb +27 -0
  64. data/lib/cucumber/broadcaster.rb +1 -6
  65. data/lib/cucumber/cli.rb +178 -128
  66. data/lib/cucumber/core_ext/exception.rb +41 -8
  67. data/lib/cucumber/core_ext/instance_exec.rb +54 -0
  68. data/lib/cucumber/core_ext/proc.rb +29 -65
  69. data/lib/cucumber/core_ext/string.rb +19 -0
  70. data/lib/cucumber/{formatters → formatter}/ansicolor.rb +11 -10
  71. data/lib/cucumber/formatter/console.rb +116 -0
  72. data/lib/cucumber/formatter/pretty.rb +158 -0
  73. data/lib/cucumber/formatter/profile.rb +77 -0
  74. data/lib/cucumber/formatter/progress.rb +68 -0
  75. data/lib/cucumber/formatter.rb +1 -0
  76. data/lib/cucumber/formatters/autotest_formatter.rb +0 -2
  77. data/lib/cucumber/formatters/html_formatter.rb +4 -3
  78. data/lib/cucumber/formatters/pretty_formatter.rb +1 -1
  79. data/lib/cucumber/formatters/unicode.rb +3 -3
  80. data/lib/cucumber/jbehave.rb +104 -0
  81. data/lib/cucumber/languages.yml +100 -73
  82. data/lib/cucumber/parser/basic.rb +0 -0
  83. data/lib/cucumber/parser/feature.rb +1694 -0
  84. data/lib/cucumber/parser/feature.tt +206 -0
  85. data/lib/cucumber/parser/file_parser.rb +50 -0
  86. data/lib/cucumber/parser/i18n.tt +26 -0
  87. data/lib/cucumber/parser/treetop_ext.rb +9 -0
  88. data/lib/cucumber/parser.rb +27 -0
  89. data/lib/cucumber/platform.rb +3 -17
  90. data/lib/cucumber/step_definition.rb +83 -0
  91. data/lib/cucumber/step_mother.rb +128 -72
  92. data/lib/cucumber/version.rb +1 -1
  93. data/lib/cucumber.rb +56 -9
  94. data/spec/cucumber/ast/feature_factory.rb +54 -0
  95. data/spec/cucumber/ast/feature_spec.rb +60 -0
  96. data/spec/cucumber/ast/py_string_spec.rb +40 -0
  97. data/spec/cucumber/ast/scenario_outline_spec.rb +64 -0
  98. data/spec/cucumber/ast/scenario_spec.rb +82 -0
  99. data/spec/cucumber/ast/step_spec.rb +45 -0
  100. data/spec/cucumber/ast/table_spec.rb +81 -0
  101. data/spec/cucumber/broadcaster_spec.rb +4 -17
  102. data/spec/cucumber/cli_spec.rb +43 -148
  103. data/spec/cucumber/core_ext/proc_spec.rb +27 -35
  104. data/spec/cucumber/core_ext/string_spec.rb +8 -0
  105. data/spec/cucumber/{formatters → formatter}/ansicolor_spec.rb +2 -2
  106. data/spec/cucumber/formatter/html/cucumber.css +37 -0
  107. data/spec/cucumber/formatter/html/cucumber.js +11 -0
  108. data/spec/cucumber/formatter/html/index.html +45 -0
  109. data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
  110. data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
  111. data/spec/cucumber/formatters/autotest_formatter_spec.rb +1 -0
  112. data/spec/cucumber/formatters/profile_formatter_spec.rb +17 -16
  113. data/spec/cucumber/parser/feature_parser_spec.rb +247 -0
  114. data/spec/cucumber/parser/table_parser_spec.rb +48 -0
  115. data/spec/cucumber/step_definition_spec.rb +62 -0
  116. data/spec/cucumber/step_mom_spec.rb +49 -0
  117. data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
  118. data/spec/cucumber/treetop_parser/spaces.feature +3 -1
  119. data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
  120. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  121. data/spec/cucumber/world/pending_spec.rb +13 -12
  122. data/spec/spec_helper.rb +1 -1
  123. metadata +59 -67
  124. data/examples/calculator_ruby_features/Rakefile +0 -6
  125. data/examples/calculator_ruby_features/features/addition.rb +0 -39
  126. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
  127. data/gem_tasks/treetop.rake +0 -41
  128. data/lib/cucumber/executor.rb +0 -205
  129. data/lib/cucumber/formatters/profile_formatter.rb +0 -92
  130. data/lib/cucumber/formatters/progress_formatter.rb +0 -61
  131. data/lib/cucumber/formatters.rb +0 -1
  132. data/lib/cucumber/model/table.rb +0 -32
  133. data/lib/cucumber/model.rb +0 -1
  134. data/lib/cucumber/step_methods.rb +0 -49
  135. data/lib/cucumber/tree/feature.rb +0 -105
  136. data/lib/cucumber/tree/features.rb +0 -21
  137. data/lib/cucumber/tree/given_scenario.rb +0 -13
  138. data/lib/cucumber/tree/scenario.rb +0 -240
  139. data/lib/cucumber/tree/step.rb +0 -173
  140. data/lib/cucumber/tree/table.rb +0 -26
  141. data/lib/cucumber/tree/top_down_visitor.rb +0 -23
  142. data/lib/cucumber/tree.rb +0 -16
  143. data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -254
  144. data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1951
  145. data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1951
  146. data/lib/cucumber/treetop_parser/feature_da.rb +0 -1951
  147. data/lib/cucumber/treetop_parser/feature_de.rb +0 -1951
  148. data/lib/cucumber/treetop_parser/feature_en-lol.rb +0 -1951
  149. data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1951
  150. data/lib/cucumber/treetop_parser/feature_en.rb +0 -1951
  151. data/lib/cucumber/treetop_parser/feature_es.rb +0 -1951
  152. data/lib/cucumber/treetop_parser/feature_et.rb +0 -1951
  153. data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1951
  154. data/lib/cucumber/treetop_parser/feature_id.rb +0 -1951
  155. data/lib/cucumber/treetop_parser/feature_it.rb +0 -1951
  156. data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1951
  157. data/lib/cucumber/treetop_parser/feature_ko.rb +0 -1951
  158. data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1951
  159. data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1951
  160. data/lib/cucumber/treetop_parser/feature_no.rb +0 -1951
  161. data/lib/cucumber/treetop_parser/feature_parser.rb +0 -36
  162. data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1951
  163. data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1951
  164. data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1951
  165. data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1951
  166. data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1951
  167. data/lib/cucumber/treetop_parser/feature_se.rb +0 -1951
  168. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1951
  169. data/lib/cucumber/world/pending.rb +0 -22
  170. data/lib/cucumber/world.rb +0 -1
  171. data/setup.rb +0 -1585
  172. data/spec/cucumber/executor_spec.rb +0 -382
  173. data/spec/cucumber/formatters/html_formatter_spec.rb +0 -104
  174. data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -410
  175. data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -81
  176. data/spec/cucumber/model/table_spec.rb +0 -32
  177. data/spec/cucumber/step_mother_spec.rb +0 -74
  178. data/spec/cucumber/tree/feature_spec.rb +0 -122
  179. data/spec/cucumber/tree/row_scenario_outline_spec.rb +0 -73
  180. data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
  181. data/spec/cucumber/tree/row_step_outline_spec.rb +0 -38
  182. data/spec/cucumber/tree/scenario_outline_spec.rb +0 -50
  183. data/spec/cucumber/tree/scenario_spec.rb +0 -134
  184. data/spec/cucumber/tree/step_outline_spec.rb +0 -17
  185. data/spec/cucumber/tree/step_spec.rb +0 -59
  186. data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -120
@@ -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