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.
Files changed (248) hide show
  1. data/History.txt +126 -2
  2. data/License.txt +1 -1
  3. data/Manifest.txt +0 -270
  4. data/Rakefile +1 -1
  5. data/bin/cucumber +2 -2
  6. data/config/hoe.rb +7 -2
  7. data/examples/cs/features/step_definitons/calculator_steps.rb +1 -1
  8. data/examples/i18n/README.textile +1 -1
  9. data/examples/i18n/Rakefile +3 -3
  10. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -6
  11. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +1 -1
  12. data/examples/i18n/de/features/addition.feature +6 -6
  13. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +2 -2
  14. data/examples/i18n/en/features/addition.feature +6 -6
  15. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +2 -2
  16. data/examples/i18n/es/features/adicion.feature +11 -12
  17. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +7 -10
  18. data/examples/i18n/es/lib/calculador.rb +4 -1
  19. data/examples/i18n/et/features/liitmine.feature +7 -6
  20. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +1 -1
  21. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +1 -1
  22. data/examples/i18n/fi/features/yhteenlasku.feature +2 -2
  23. data/examples/i18n/fr/features/addition.feature +2 -2
  24. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +1 -1
  25. data/examples/i18n/id/features/addition.feature +6 -6
  26. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +2 -2
  27. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +1 -1
  28. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +2 -3
  29. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -1
  30. data/examples/i18n/lt/features/addition.feature +7 -6
  31. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +2 -2
  32. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +7 -7
  33. data/examples/i18n/no/features/summering.feature +1 -0
  34. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +1 -1
  35. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +1 -1
  36. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +1 -1
  37. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +2 -2
  38. data/examples/java/src/cucumber/demo/Hello.java +16 -0
  39. data/examples/jbehave/README.textile +17 -0
  40. data/examples/jbehave/features/support/env.rb +7 -0
  41. data/examples/jbehave/features/trading.feature +24 -0
  42. data/examples/jbehave/pom.xml +48 -0
  43. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +32 -0
  44. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +42 -0
  45. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +29 -0
  46. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +22 -0
  47. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +65 -0
  48. data/examples/self_test/README.textile +4 -1
  49. data/examples/{calculator_ruby_features → self_test}/Rakefile +3 -3
  50. data/examples/self_test/features/background/failing_background.feature +10 -0
  51. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  52. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  53. data/examples/self_test/features/background/passing_background.feature +10 -0
  54. data/examples/self_test/features/background/pending_background.feature +10 -0
  55. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  56. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  57. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  58. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  59. data/examples/self_test/features/outline_sample.feature +11 -5
  60. data/examples/self_test/features/sample.feature +8 -3
  61. data/examples/self_test/features/step_definitions/sample_steps.rb +53 -4
  62. data/examples/self_test/features/support/env.rb +1 -0
  63. data/examples/self_test/features/support/tag_count_formatter.rb +25 -0
  64. data/examples/tickets/features/172.feature +28 -0
  65. data/examples/tickets/features/177/1.feature +29 -0
  66. data/examples/tickets/features/177/2.feature +21 -0
  67. data/examples/tickets/features/177/3.feature +18 -0
  68. data/examples/tickets/features/180.feature +7 -0
  69. data/examples/tickets/features/scenario_outline.feature +6 -1
  70. data/examples/tickets/features/step_definitons/tickets_steps.rb +27 -3
  71. data/examples/tickets/features/tickets.feature +4 -0
  72. data/features/background.feature +223 -0
  73. data/features/cucumber_cli.feature +218 -98
  74. data/features/cucumber_cli_outlines.feature +54 -37
  75. data/features/custom_formatter.feature +11 -0
  76. data/features/report_called_undefined_steps.feature +32 -0
  77. data/features/step_definitions/cucumber_steps.rb +7 -3
  78. data/features/step_definitions/extra_steps.rb +1 -1
  79. data/features/support/env.rb +2 -1
  80. data/gem_tasks/flog.rake +1 -1
  81. data/gem_tasks/gemspec.rake +2 -2
  82. data/gem_tasks/jar.rake +67 -0
  83. data/lib/autotest/cucumber_mixin.rb +17 -23
  84. data/lib/cucumber.rb +63 -11
  85. data/lib/cucumber/ast.rb +29 -0
  86. data/lib/cucumber/ast/background.rb +88 -0
  87. data/lib/cucumber/ast/comment.rb +26 -0
  88. data/lib/cucumber/ast/examples.rb +26 -0
  89. data/lib/cucumber/ast/feature.rb +66 -0
  90. data/lib/cucumber/ast/features.rb +39 -0
  91. data/lib/cucumber/ast/filter.rb +22 -0
  92. data/lib/cucumber/ast/outline_table.rb +49 -0
  93. data/lib/cucumber/ast/py_string.rb +52 -0
  94. data/lib/cucumber/ast/scenario.rb +103 -0
  95. data/lib/cucumber/ast/scenario_outline.rb +92 -0
  96. data/lib/cucumber/ast/step.rb +161 -0
  97. data/lib/cucumber/ast/steps.rb +13 -0
  98. data/lib/cucumber/ast/table.rb +218 -0
  99. data/lib/cucumber/ast/tags.rb +40 -0
  100. data/lib/cucumber/ast/visitor.rb +109 -0
  101. data/lib/cucumber/broadcaster.rb +1 -6
  102. data/lib/cucumber/cli/configuration.rb +339 -0
  103. data/lib/cucumber/cli/language_help_formatter.rb +59 -0
  104. data/lib/cucumber/cli/main.rb +100 -0
  105. data/lib/cucumber/core_ext/exception.rb +41 -8
  106. data/lib/cucumber/core_ext/instance_exec.rb +54 -0
  107. data/lib/cucumber/core_ext/proc.rb +29 -65
  108. data/lib/cucumber/core_ext/string.rb +19 -0
  109. data/lib/cucumber/formatter.rb +1 -0
  110. data/lib/cucumber/{formatters → formatter}/ansicolor.rb +14 -16
  111. data/lib/cucumber/formatter/color_io.rb +17 -0
  112. data/lib/cucumber/formatter/console.rb +119 -0
  113. data/lib/cucumber/formatter/cucumber.css +55 -0
  114. data/lib/cucumber/formatter/cucumber.sass +49 -0
  115. data/lib/cucumber/formatter/html.rb +121 -0
  116. data/lib/cucumber/formatter/pretty.rb +167 -0
  117. data/lib/cucumber/formatter/profile.rb +77 -0
  118. data/lib/cucumber/formatter/progress.rb +68 -0
  119. data/lib/cucumber/formatter/rerun.rb +35 -0
  120. data/lib/cucumber/formatter/unicode.rb +35 -0
  121. data/lib/cucumber/formatters/unicode.rb +2 -35
  122. data/lib/cucumber/jbehave.rb +102 -0
  123. data/lib/cucumber/languages.yml +128 -75
  124. data/lib/cucumber/parser.rb +43 -0
  125. data/lib/cucumber/parser/basic.rb +0 -0
  126. data/lib/cucumber/parser/feature.rb +1490 -0
  127. data/lib/cucumber/parser/feature.tt +188 -0
  128. data/lib/cucumber/parser/i18n.tt +31 -0
  129. data/lib/cucumber/parser/table.rb +402 -0
  130. data/lib/cucumber/parser/table.tt +59 -0
  131. data/lib/cucumber/parser/treetop_ext.rb +75 -0
  132. data/lib/cucumber/platform.rb +3 -17
  133. data/lib/cucumber/rails/rspec.rb +5 -2
  134. data/lib/cucumber/step_definition.rb +87 -0
  135. data/lib/cucumber/step_mother.rb +151 -66
  136. data/lib/cucumber/version.rb +2 -2
  137. data/rails_generators/cucumber/USAGE +3 -2
  138. data/rails_generators/cucumber/cucumber_generator.rb +33 -23
  139. data/rails_generators/cucumber/templates/cucumber +2 -1
  140. data/rails_generators/cucumber/templates/cucumber.rake +6 -1
  141. data/rails_generators/cucumber/templates/env.rb +1 -1
  142. data/rails_generators/feature/USAGE +3 -0
  143. data/rails_generators/feature/feature_generator.rb +30 -6
  144. data/spec/cucumber/ast/background_spec.rb +58 -0
  145. data/spec/cucumber/ast/feature_factory.rb +54 -0
  146. data/spec/cucumber/ast/feature_spec.rb +60 -0
  147. data/spec/cucumber/ast/py_string_spec.rb +40 -0
  148. data/spec/cucumber/ast/scenario_outline_spec.rb +64 -0
  149. data/spec/cucumber/ast/scenario_spec.rb +82 -0
  150. data/spec/cucumber/ast/step_spec.rb +45 -0
  151. data/spec/cucumber/ast/table_spec.rb +81 -0
  152. data/spec/cucumber/ast/tags_spec.rb +23 -0
  153. data/spec/cucumber/broadcaster_spec.rb +4 -17
  154. data/spec/cucumber/cli/configuration_spec.rb +239 -0
  155. data/spec/cucumber/cli/main_spec.rb +164 -0
  156. data/spec/cucumber/core_ext/proc_spec.rb +27 -35
  157. data/spec/cucumber/core_ext/string_spec.rb +8 -0
  158. data/spec/cucumber/{formatters → formatter}/ansicolor_spec.rb +2 -2
  159. data/spec/cucumber/formatter/html/cucumber.css +37 -0
  160. data/spec/cucumber/formatter/html/cucumber.js +13 -0
  161. data/spec/cucumber/formatter/html/index.html +45 -0
  162. data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
  163. data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
  164. data/spec/cucumber/formatters/profile_formatter_spec.rb +17 -16
  165. data/spec/cucumber/parser/feature_parser_spec.rb +281 -0
  166. data/spec/cucumber/parser/table_parser_spec.rb +48 -0
  167. data/spec/cucumber/step_definition_spec.rb +62 -0
  168. data/spec/cucumber/step_mother_spec.rb +50 -51
  169. data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
  170. data/spec/cucumber/treetop_parser/scenario_outline.feature +1 -1
  171. data/spec/cucumber/treetop_parser/spaces.feature +3 -1
  172. data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
  173. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  174. data/spec/cucumber/world/pending_spec.rb +13 -12
  175. data/spec/spec_helper.rb +1 -1
  176. metadata +107 -79
  177. data/examples/calculator_ruby_features/features/addition.rb +0 -39
  178. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
  179. data/gem_tasks/treetop.rake +0 -41
  180. data/lib/cucumber/cli.rb +0 -355
  181. data/lib/cucumber/executor.rb +0 -205
  182. data/lib/cucumber/formatters.rb +0 -1
  183. data/lib/cucumber/formatters/autotest_formatter.rb +0 -23
  184. data/lib/cucumber/formatters/cucumber.css +0 -132
  185. data/lib/cucumber/formatters/cucumber.js +0 -11
  186. data/lib/cucumber/formatters/html_formatter.rb +0 -152
  187. data/lib/cucumber/formatters/jquery.js +0 -32
  188. data/lib/cucumber/formatters/pretty_formatter.rb +0 -285
  189. data/lib/cucumber/formatters/profile_formatter.rb +0 -92
  190. data/lib/cucumber/formatters/progress_formatter.rb +0 -61
  191. data/lib/cucumber/model.rb +0 -1
  192. data/lib/cucumber/model/table.rb +0 -32
  193. data/lib/cucumber/step_methods.rb +0 -49
  194. data/lib/cucumber/tree.rb +0 -16
  195. data/lib/cucumber/tree/feature.rb +0 -105
  196. data/lib/cucumber/tree/features.rb +0 -21
  197. data/lib/cucumber/tree/given_scenario.rb +0 -13
  198. data/lib/cucumber/tree/scenario.rb +0 -240
  199. data/lib/cucumber/tree/step.rb +0 -173
  200. data/lib/cucumber/tree/table.rb +0 -26
  201. data/lib/cucumber/tree/top_down_visitor.rb +0 -23
  202. data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -254
  203. data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1951
  204. data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1951
  205. data/lib/cucumber/treetop_parser/feature_da.rb +0 -1951
  206. data/lib/cucumber/treetop_parser/feature_de.rb +0 -1951
  207. data/lib/cucumber/treetop_parser/feature_en-lol.rb +0 -1951
  208. data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1951
  209. data/lib/cucumber/treetop_parser/feature_en.rb +0 -1951
  210. data/lib/cucumber/treetop_parser/feature_es.rb +0 -1951
  211. data/lib/cucumber/treetop_parser/feature_et.rb +0 -1951
  212. data/lib/cucumber/treetop_parser/feature_fi.rb +0 -1951
  213. data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1951
  214. data/lib/cucumber/treetop_parser/feature_id.rb +0 -1951
  215. data/lib/cucumber/treetop_parser/feature_it.rb +0 -1951
  216. data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1951
  217. data/lib/cucumber/treetop_parser/feature_ko.rb +0 -1951
  218. data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1951
  219. data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1951
  220. data/lib/cucumber/treetop_parser/feature_no.rb +0 -1951
  221. data/lib/cucumber/treetop_parser/feature_parser.rb +0 -36
  222. data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1951
  223. data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1951
  224. data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1951
  225. data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1951
  226. data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1951
  227. data/lib/cucumber/treetop_parser/feature_se.rb +0 -1951
  228. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1951
  229. data/lib/cucumber/world.rb +0 -1
  230. data/lib/cucumber/world/pending.rb +0 -22
  231. data/setup.rb +0 -1585
  232. data/spec/cucumber/cli_spec.rb +0 -521
  233. data/spec/cucumber/executor_spec.rb +0 -382
  234. data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -26
  235. data/spec/cucumber/formatters/features.html +0 -269
  236. data/spec/cucumber/formatters/html_formatter_spec.rb +0 -110
  237. data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -410
  238. data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -81
  239. data/spec/cucumber/model/table_spec.rb +0 -32
  240. data/spec/cucumber/tree/feature_spec.rb +0 -122
  241. data/spec/cucumber/tree/row_scenario_outline_spec.rb +0 -73
  242. data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
  243. data/spec/cucumber/tree/row_step_outline_spec.rb +0 -38
  244. data/spec/cucumber/tree/scenario_outline_spec.rb +0 -50
  245. data/spec/cucumber/tree/scenario_spec.rb +0 -134
  246. data/spec/cucumber/tree/step_outline_spec.rb +0 -17
  247. data/spec/cucumber/tree/step_spec.rb +0 -59
  248. data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -120
@@ -1,134 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe Scenario do
6
- xit "should reuse steps in GivenScenario" do
7
- given_scenario = GivenScenario.new(scenario_2, "First", 99)
8
-
9
- scenario_2.create_step(given_scenario)
10
- scenario_2.create_step(step_a)
11
- scenario_2.steps.should == [step_1, step_2, step_a]
12
- end
13
-
14
- it "should have padding_length 2 when alone" do
15
- scenario = Scenario.new(nil, 'test', 1)
16
- scenario.padding_length.should == 2
17
- end
18
-
19
- it "should include indent when padding to step" do
20
- scenario = Scenario.new(nil, '', 1)
21
- scenario.create_step('Given', 'a long step', 1)
22
-
23
- #Scenario: *********
24
- # Given a long step
25
- scenario.padding_length.should == 9 + Scenario::INDENT
26
- end
27
-
28
- it "should ignore step padding if scenario is longer than all steps" do
29
- scenario = Scenario.new(nil, 'Very long scenario and then some', 1)
30
- scenario.create_step('Given', 'test', 1)
31
-
32
- scenario.padding_length.should == 2
33
- end
34
-
35
- describe "utf-8 strings" do
36
- describe "when calculating padding" do
37
-
38
- it "should take into consideration utf-8 scenario names" do
39
- scenario = Scenario.new(nil, 'こんばんは', 1)
40
- scenario.create_step('Given', 'a long step', 1)
41
-
42
- #Scenario: こんばんは****
43
- # Given a long step
44
- scenario.padding_length.should == 4 + Scenario::INDENT
45
- end
46
-
47
- it "should take into consideration a utf-8 keyword for 'scenario'" do
48
- Cucumber.language.stub!(:[]).with('scenario').and_return("シナリオ")
49
- scenario = Scenario.new(nil, '', 1)
50
- scenario.create_step('Given', 'step', 1)
51
-
52
- #シナリオ: ******
53
- # Given step
54
- scenario.padding_length.should == 6 + Scenario::INDENT
55
- end
56
-
57
- end
58
- end
59
-
60
- describe "pending?" do
61
- before :each do
62
- @scenario = Scenario.new(nil, '', 1)
63
- end
64
-
65
- it "should return true if there aren't any steps" do
66
- @scenario.should be_pending
67
- end
68
-
69
- it "should return false if there are steps" do
70
- @scenario.create_step('Given', 'a long step', 1)
71
- @scenario.should_not be_pending
72
- end
73
- end
74
-
75
- describe "at_line?" do
76
-
77
- describe "when there is a next scenario" do
78
-
79
- before :each do
80
- feature = Feature.new(nil)
81
- @scenario = feature.add_scenario('', 5)
82
- feature.add_scenario('', 10)
83
- end
84
-
85
- it "should return false if the line is lesser than the scenario's line" do
86
- @scenario.should_not be_at_line(4)
87
- end
88
-
89
- it "should return true if the line is equal to the scenario's line" do
90
- @scenario.should be_at_line(5)
91
- end
92
-
93
- it "should return false if the line is equal to the next scenario's line" do
94
- @scenario.should_not be_at_line(10)
95
- end
96
-
97
- it "should return false if the line is greater than the next scenario's line" do
98
- @scenario.should_not be_at_line(11)
99
- end
100
-
101
- it "should return true if the line is lesser then the next scenario's line" do
102
- @scenario.should be_at_line(9)
103
- end
104
-
105
- end
106
-
107
- describe "when there is no next scenario" do
108
-
109
- before :each do
110
- feature = Feature.new(nil)
111
- feature.stub!(:lines => 20)
112
- @scenario = feature.add_scenario('', 12)
113
- end
114
-
115
- it "should return false if the line is lesser than the scenario's line" do
116
- @scenario.should_not be_at_line(11)
117
- end
118
-
119
- it "should return true if the line is within the scenario's line and the lines of the feature" do
120
- @scenario.should be_at_line(12)
121
- @scenario.should be_at_line(20)
122
- end
123
-
124
- it "should return false if the line is greater than the lines of the feature" do
125
- @scenario.should_not be_at_line(21)
126
- end
127
-
128
- end
129
-
130
- end
131
-
132
- end
133
- end
134
- end
@@ -1,17 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe StepOutline do
6
-
7
- it "should be a outline" do
8
- step_outline = StepOutline.new(mock("scenario"), 'Given', 'outline', 1)
9
-
10
- step_outline.should be_a_outline
11
- end
12
-
13
- end
14
- end
15
- end
16
-
17
-
@@ -1,59 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe Step do
6
- it "should have padding_length 2 when alone" do
7
- scenario = Scenario.new(nil, nil, 1)
8
- step = scenario.create_step('Given', '666666', 98)
9
- step.padding_length.should == 2
10
- end
11
-
12
- it "should have padding_length 5 when 3 shorter" do
13
- scenario = Scenario.new(nil, nil, 1)
14
- long = scenario.create_step('Given', '999999999', 80)
15
- step = scenario.create_step('Given', '666666', 98)
16
- step.padding_length.should == 5
17
- end
18
-
19
- it "should remove indent from padding_length if padding to scenario" do
20
- scenario = Scenario.new(nil, '9', 1)
21
- step = scenario.create_step('Given', '9', 80)
22
-
23
- #Scenario: 9 #
24
- # Given 9****
25
- step.padding_length.should == 4
26
- end
27
-
28
- it "should default step arity to 0" do
29
- scenario = Scenario.new(nil, '9', 1)
30
- step = scenario.create_step('Given', '9', 80)
31
-
32
- step.arity.should == 0
33
- end
34
-
35
- describe "utf-8 strings" do
36
-
37
- it "should have padding_length 6 when 4 shorter" do
38
- scenario = Scenario.new(nil, nil, 1)
39
- long = scenario.create_step('Given', '999999999', 2)
40
- step = scenario.create_step('Given', "こんばんは", 3)
41
-
42
- step.padding_length.should == 6
43
- end
44
-
45
- end
46
-
47
- it "should indicate if a forced pending exception occured" do
48
- scenario = Scenario.new(nil, '9', 1)
49
- step = scenario.create_step('Given', '666666', 98)
50
-
51
- step.instance_variable_set("@error", ForcedPending.new)
52
-
53
- step.should be_forced_to_pending
54
- end
55
-
56
- end
57
- end
58
- end
59
-
@@ -1,120 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module TreetopParser
5
- describe FeatureParser do
6
- it "should parse features with weird spaces" do
7
- p = FeatureParser.new
8
- f = p.parse_feature(File.dirname(__FILE__) + '/spaces.feature')
9
- f.header.should == "Some title"
10
- f.should have(2).scenarios
11
-
12
- first = f.scenarios[0]
13
- first.name.should == "first"
14
- first.should have(1).steps
15
- first.steps[0].name.should == "a"
16
-
17
- second = f.scenarios[1]
18
- second.name.should == "second"
19
- second.should have(1).steps
20
- second.steps[0].name.should == "b"
21
- end
22
-
23
- it "should parse GivenScenario" do
24
- p = FeatureParser.new
25
- f = p.parse_feature(File.dirname(__FILE__) + '/given_scenario.feature')
26
-
27
- f.header.should == "Some title"
28
- f.should have(2).scenarios
29
-
30
- first = f.scenarios[0]
31
- first.should have(2).steps
32
-
33
- second = f.scenarios[1]
34
- second.should have(3).steps
35
- end
36
-
37
- it "should allow spaces between FIT values" do
38
- p = FeatureParser.new
39
- Cucumber::Tree::RowScenario.should_receive(:new).with(anything, anything, ['I can have spaces'], anything)
40
-
41
- f = p.parse_feature(File.dirname(__FILE__) + '/fit_scenario.feature')
42
- end
43
-
44
- it "should allow comments in feature files" do
45
- p = FeatureParser.new
46
- f = p.parse_feature(File.dirname(__FILE__) + '/with_comments.feature')
47
- f.scenarios[0].should have(2).steps
48
- end
49
-
50
- it "should skip comments in feature header" do
51
- p = FeatureParser.new
52
- f = p.parse_feature(File.dirname(__FILE__) + '/with_comments.feature')
53
- f.header.should == "Some header"
54
- end
55
-
56
- it "should skip comments in scenario header" do
57
- p = FeatureParser.new
58
- f = p.parse_feature(File.dirname(__FILE__) + '/with_comments.feature')
59
- f.scenarios[0].name.should == "Some scenario"
60
- end
61
-
62
- it "should allow empty scenarios" do
63
- p = FeatureParser.new
64
- f = p.parse_feature(File.dirname(__FILE__) + '/empty_scenario.feature')
65
- f.scenarios[0].should have(1).steps
66
- f.scenarios[1].should have(0).steps
67
- f.scenarios[2].should have(1).steps
68
- end
69
-
70
- it "should allow empty scenario outlines" do
71
- p = FeatureParser.new
72
- f = p.parse_feature(File.dirname(__FILE__) + '/empty_scenario_outline.feature')
73
-
74
- f.scenarios[0].should have(0).steps
75
- end
76
-
77
- it "should allow multiple tables" do
78
- p = FeatureParser.new
79
- f = p.parse_feature(File.dirname(__FILE__) + '/multiple_tables.feature')
80
- f.should have(6).scenarios
81
- f.scenarios[0].should have(4).steps
82
- end
83
-
84
- it "should allow empty features" do
85
- p = FeatureParser.new
86
- f = p.parse_feature(File.dirname(__FILE__) + '/empty_feature.feature')
87
- f.should have(0).scenarios
88
- end
89
-
90
- it "should parse features with dos line endings" do
91
- p = FeatureParser.new
92
- f = p.parse_feature(File.dirname(__FILE__) + '/test_dos.feature')
93
- f.should have(5).scenarios
94
- end
95
-
96
- it "should parse multiline steps" do
97
- p = FeatureParser.new
98
- f = p.parse_feature(File.dirname(__FILE__) + '/multiline_steps.feature')
99
- f.should have(1).scenarios
100
- step = f.scenarios[0].steps[3]
101
- step.extra_args[0].should == "A string\n that \"indents\"\nand spans\nseveral lines\n"
102
- end
103
-
104
- it "should parse scenario outlines" do
105
- p = FeatureParser.new
106
- f = p.parse_feature(File.dirname(__FILE__) + '/scenario_outline.feature')
107
-
108
- f.should have(4).scenarios
109
- end
110
-
111
- it "should not allow a scenario outline with an example table but no steps" do
112
- p = FeatureParser.new
113
- lambda{
114
- p.parse_feature(File.dirname(__FILE__) + '/invalid_scenario_outlines.feature')
115
- }.should raise_error(Feature::SyntaxError)
116
- end
117
-
118
- end
119
- end
120
- end