cucumber 0.1.16 → 0.2.0

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 (322) hide show
  1. data/History.txt +111 -5
  2. data/License.txt +1 -1
  3. data/Manifest.txt +141 -83
  4. data/Rakefile +1 -1
  5. data/bin/cucumber +2 -2
  6. data/config/hoe.rb +8 -2
  7. data/examples/cs/features/addition.feature +4 -5
  8. data/examples/cs/features/step_definitons/calculator_steps.rb +1 -5
  9. data/examples/i18n/README.textile +1 -1
  10. data/examples/i18n/Rakefile +5 -5
  11. data/examples/i18n/ar/features/addition.feature +10 -11
  12. data/examples/i18n/ar/features/step_definitons/calculator_steps.rb +1 -10
  13. data/examples/i18n/da/features/step_definitons/kalkulator_steps.rb +1 -1
  14. data/examples/i18n/de/features/addition.feature +10 -11
  15. data/examples/i18n/de/features/division.feature +0 -1
  16. data/examples/i18n/de/features/step_definitons/calculator_steps.rb +2 -10
  17. data/examples/i18n/en-lol/Rakefile +6 -0
  18. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +16 -0
  19. data/examples/i18n/en-lol/features/stuffing.feature +8 -0
  20. data/examples/i18n/en-lol/features/support/env.rb +8 -0
  21. data/examples/i18n/en-lol/lib/basket.rb +12 -0
  22. data/examples/i18n/en-lol/lib/belly.rb +11 -0
  23. data/examples/i18n/en/features/addition.feature +10 -11
  24. data/examples/i18n/en/features/division.feature +0 -1
  25. data/examples/i18n/en/features/step_definitons/calculator_steps.rb +2 -6
  26. data/examples/i18n/es/features/adicion.feature +11 -12
  27. data/examples/i18n/es/features/step_definitons/calculador_steps.rb +7 -10
  28. data/examples/i18n/es/lib/calculador.rb +4 -1
  29. data/examples/i18n/et/features/jagamine.feature +9 -0
  30. data/examples/i18n/et/features/liitmine.feature +10 -11
  31. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +4 -8
  32. data/examples/i18n/et/lib/kalkulaator.rb +5 -1
  33. data/examples/i18n/fi/Rakefile +6 -0
  34. data/examples/i18n/fi/features/jakolasku.feature +9 -0
  35. data/examples/i18n/fi/features/step_definitons/laskin_steps.rb +24 -0
  36. data/examples/i18n/fi/features/yhteenlasku.feature +16 -0
  37. data/examples/i18n/fi/lib/laskin.rb +14 -0
  38. data/examples/i18n/fr/features/addition.feature +14 -12
  39. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +11 -13
  40. data/examples/i18n/fr/lib/calculatrice.rb +1 -1
  41. data/examples/i18n/id/features/addition.feature +10 -11
  42. data/examples/i18n/id/features/division.feature +0 -1
  43. data/examples/i18n/id/features/step_definitons/calculator_steps.rb +2 -11
  44. data/examples/i18n/it/features/step_definitons/calcolatrice_steps.rb +1 -1
  45. data/examples/i18n/ja/features/addition.feature +10 -11
  46. data/examples/i18n/ja/features/division.feature +2 -3
  47. data/examples/i18n/ja/features/step_definitons/calculator_steps.rb +4 -13
  48. data/examples/i18n/ko/features/addition.feature +7 -8
  49. data/examples/i18n/ko/features/division.feature +3 -4
  50. data/examples/i18n/ko/features/step_definitons/calculator_steps.rb +1 -5
  51. data/examples/i18n/lt/features/addition.feature +11 -11
  52. data/examples/i18n/lt/features/division.feature +0 -1
  53. data/examples/i18n/lt/features/step_definitons/calculator_steps.rb +2 -11
  54. data/examples/i18n/no/features/step_definitons/kalkulator_steps.rb +3 -10
  55. data/examples/i18n/no/features/summering.feature +1 -0
  56. data/examples/i18n/no/features/support/env.rb +6 -0
  57. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +1 -1
  58. data/examples/i18n/ro/features/step_definitons/calculator_steps.rb +1 -1
  59. data/examples/i18n/ru/Rakefile +6 -0
  60. data/examples/i18n/ru/features/addition.feature +10 -0
  61. data/examples/i18n/ru/features/consecutive_calculations.feature +16 -0
  62. data/examples/i18n/ru/features/division.feature +15 -0
  63. data/examples/i18n/ru/features/step_definitons/calculator_steps.rb +19 -0
  64. data/examples/i18n/ru/features/support/env.rb +6 -0
  65. data/examples/i18n/ru/features/support/world.rb +7 -0
  66. data/examples/i18n/ru/lib/calculator.rb +24 -0
  67. data/examples/i18n/se/features/step_definitons/kalkulator_steps.rb +1 -1
  68. data/examples/i18n/zh-CN/features/step_definitons/calculator_steps.rb +2 -2
  69. data/examples/i18n/zh-TW/Rakefile +6 -0
  70. data/examples/i18n/zh-TW/features/addition.feature +16 -0
  71. data/examples/i18n/zh-TW/features/division.feature +10 -0
  72. data/examples/i18n/zh-TW/features/step_definitons/calculator_steps.rb +24 -0
  73. data/examples/i18n/zh-TW/lib/calculator.rb +14 -0
  74. data/examples/java/src/cucumber/demo/Hello.java +16 -0
  75. data/examples/jbehave/README.textile +20 -0
  76. data/examples/jbehave/features/support/env.rb +7 -0
  77. data/examples/jbehave/features/trading.feature +28 -0
  78. data/examples/jbehave/pom.xml +53 -0
  79. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/converters/TraderConverter.java +32 -0
  80. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Stock.java +42 -0
  81. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/model/Trader.java +29 -0
  82. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/persistence/TraderPersister.java +22 -0
  83. data/examples/jbehave/src/main/java/cukes/jbehave/examples/trader/scenarios/TraderSteps.java +70 -0
  84. data/examples/selenium/features/step_definitons/search_steps.rb +13 -0
  85. data/examples/selenium/features/support/env.rb +19 -0
  86. data/examples/{calculator_ruby_features → selenium_webrat}/Rakefile +0 -0
  87. data/examples/selenium_webrat/features/search.feature +9 -0
  88. data/examples/selenium_webrat/features/step_definitons/search_steps.rb +13 -0
  89. data/examples/selenium_webrat/features/support/env.rb +41 -0
  90. data/examples/self_test/README.textile +4 -1
  91. data/examples/self_test/Rakefile +6 -0
  92. data/examples/self_test/features/background/failing_background.feature +11 -0
  93. data/examples/self_test/features/background/failing_background_after_success.feature +11 -0
  94. data/examples/self_test/features/background/multiline_args_background.feature +32 -0
  95. data/examples/self_test/features/background/passing_background.feature +10 -0
  96. data/examples/self_test/features/background/pending_background.feature +10 -0
  97. data/examples/self_test/features/background/scenario_outline_failing_background.feature +16 -0
  98. data/examples/self_test/features/background/scenario_outline_passing_background.feature +16 -0
  99. data/examples/self_test/features/call_undefined_step_from_step_def.feature +7 -0
  100. data/examples/self_test/features/failing_expectation.feature +4 -0
  101. data/examples/self_test/features/lots_of_undefined.feature +8 -0
  102. data/examples/self_test/features/outline_sample.feature +11 -5
  103. data/examples/self_test/features/sample.feature +8 -3
  104. data/examples/self_test/features/step_definitions/sample_steps.rb +55 -4
  105. data/examples/self_test/features/support/env.rb +1 -0
  106. data/examples/self_test/features/support/tag_count_formatter.rb +25 -0
  107. data/examples/sinatra/Rakefile +6 -0
  108. data/examples/sinatra/app.rb +14 -0
  109. data/examples/sinatra/features/add.feature +11 -0
  110. data/examples/sinatra/features/step_definitions/add_steps.rb +15 -0
  111. data/examples/sinatra/features/support/env.rb +20 -0
  112. data/examples/sinatra/views/add.erb +5 -0
  113. data/examples/sinatra/views/layout.erb +8 -0
  114. data/examples/tickets/Rakefile +13 -8
  115. data/examples/tickets/cucumber.yml +2 -1
  116. data/examples/tickets/features/172.feature +28 -0
  117. data/examples/tickets/features/177/1.feature +29 -0
  118. data/examples/tickets/features/177/2.feature +21 -0
  119. data/examples/tickets/features/177/3.feature +18 -0
  120. data/examples/tickets/features/180.feature +7 -0
  121. data/examples/tickets/features/236.feature +13 -0
  122. data/examples/tickets/features/241.feature +13 -0
  123. data/examples/tickets/features/scenario_outline.feature +6 -1
  124. data/examples/tickets/features/step_definitons/tickets_steps.rb +41 -4
  125. data/examples/tickets/features/tickets.feature +5 -1
  126. data/features/background.feature +221 -0
  127. data/features/cucumber_cli.feature +263 -97
  128. data/features/cucumber_cli_diff_disabled.feature +45 -0
  129. data/features/cucumber_cli_outlines.feature +50 -42
  130. data/features/custom_formatter.feature +11 -0
  131. data/features/report_called_undefined_steps.feature +34 -0
  132. data/features/step_definitions/cucumber_steps.rb +6 -3
  133. data/features/step_definitions/extra_steps.rb +1 -1
  134. data/features/support/env.rb +3 -2
  135. data/gem_tasks/features.rake +1 -1
  136. data/gem_tasks/flog.rake +1 -1
  137. data/gem_tasks/gemspec.rake +2 -2
  138. data/gem_tasks/jar.rake +67 -0
  139. data/gem_tasks/rspec.rake +2 -0
  140. data/lib/autotest/cucumber_mixin.rb +18 -23
  141. data/lib/cucumber.rb +55 -11
  142. data/lib/cucumber/ast.rb +29 -0
  143. data/lib/cucumber/ast/background.rb +50 -0
  144. data/lib/cucumber/ast/comment.rb +26 -0
  145. data/lib/cucumber/ast/examples.rb +38 -0
  146. data/lib/cucumber/ast/feature.rb +62 -0
  147. data/lib/cucumber/ast/feature_element.rb +46 -0
  148. data/lib/cucumber/ast/features.rb +20 -0
  149. data/lib/cucumber/ast/outline_table.rb +81 -0
  150. data/lib/cucumber/ast/py_string.rb +58 -0
  151. data/lib/cucumber/ast/scenario.rb +64 -0
  152. data/lib/cucumber/ast/scenario_outline.rb +90 -0
  153. data/lib/cucumber/ast/step.rb +122 -0
  154. data/lib/cucumber/ast/step_collection.rb +66 -0
  155. data/lib/cucumber/ast/step_invocation.rb +110 -0
  156. data/lib/cucumber/ast/table.rb +318 -0
  157. data/lib/cucumber/ast/tags.rb +33 -0
  158. data/lib/cucumber/ast/visitor.rb +125 -0
  159. data/lib/cucumber/broadcaster.rb +2 -9
  160. data/lib/cucumber/cli/configuration.rb +364 -0
  161. data/lib/cucumber/cli/language_help_formatter.rb +59 -0
  162. data/lib/cucumber/cli/main.rb +109 -0
  163. data/lib/cucumber/core_ext/exception.rb +41 -8
  164. data/lib/cucumber/core_ext/instance_exec.rb +54 -0
  165. data/lib/cucumber/core_ext/proc.rb +29 -65
  166. data/lib/cucumber/core_ext/string.rb +19 -0
  167. data/lib/cucumber/formatter.rb +1 -0
  168. data/lib/cucumber/{formatters → formatter}/ansicolor.rb +13 -16
  169. data/lib/cucumber/formatter/color_io.rb +23 -0
  170. data/lib/cucumber/formatter/console.rb +109 -0
  171. data/lib/cucumber/formatter/cucumber.css +55 -0
  172. data/lib/cucumber/formatter/cucumber.sass +49 -0
  173. data/lib/cucumber/formatter/html.rb +133 -0
  174. data/lib/cucumber/formatter/pretty.rb +179 -0
  175. data/lib/cucumber/formatter/profile.rb +77 -0
  176. data/lib/cucumber/formatter/progress.rb +60 -0
  177. data/lib/cucumber/formatter/rerun.rb +35 -0
  178. data/lib/cucumber/formatter/unicode.rb +35 -0
  179. data/lib/cucumber/formatters/unicode.rb +2 -35
  180. data/lib/cucumber/jbehave.rb +97 -0
  181. data/lib/cucumber/languages.yml +196 -80
  182. data/lib/cucumber/parser.rb +43 -0
  183. data/lib/cucumber/parser/basic.rb +0 -0
  184. data/lib/cucumber/parser/feature.rb +1487 -0
  185. data/lib/cucumber/parser/feature.tt +193 -0
  186. data/lib/cucumber/parser/i18n.tt +31 -0
  187. data/lib/cucumber/parser/table.rb +402 -0
  188. data/lib/cucumber/parser/table.tt +59 -0
  189. data/lib/cucumber/parser/treetop_ext.rb +75 -0
  190. data/lib/cucumber/platform.rb +2 -17
  191. data/lib/cucumber/rails/rspec.rb +5 -9
  192. data/lib/cucumber/rails/world.rb +2 -2
  193. data/lib/cucumber/rake/task.rb +39 -7
  194. data/lib/cucumber/step_definition.rb +103 -0
  195. data/lib/cucumber/step_match.rb +49 -0
  196. data/lib/cucumber/step_mother.rb +183 -67
  197. data/lib/cucumber/version.rb +2 -2
  198. data/lib/cucumber/world.rb +53 -1
  199. data/rails_generators/cucumber/cucumber_generator.rb +22 -3
  200. data/rails_generators/cucumber/templates/cucumber +2 -1
  201. data/rails_generators/cucumber/templates/cucumber.rake +13 -5
  202. data/rails_generators/cucumber/templates/env.rb +4 -3
  203. data/rails_generators/cucumber/templates/paths.rb +18 -11
  204. data/rails_generators/cucumber/templates/webrat_steps.rb +41 -25
  205. data/rails_generators/feature/feature_generator.rb +4 -0
  206. data/rails_generators/feature/templates/steps.erb +0 -4
  207. data/spec/cucumber/ast/background_spec.rb +49 -0
  208. data/spec/cucumber/ast/feature_factory.rb +63 -0
  209. data/spec/cucumber/ast/feature_spec.rb +37 -0
  210. data/spec/cucumber/ast/py_string_spec.rb +47 -0
  211. data/spec/cucumber/ast/scenario_outline_spec.rb +67 -0
  212. data/spec/cucumber/ast/scenario_spec.rb +65 -0
  213. data/spec/cucumber/ast/step_collection_spec.rb +8 -0
  214. data/spec/cucumber/ast/step_spec.rb +66 -0
  215. data/spec/cucumber/ast/table_spec.rb +149 -0
  216. data/spec/cucumber/ast/tags_spec.rb +19 -0
  217. data/spec/cucumber/broadcaster_spec.rb +6 -18
  218. data/spec/cucumber/cli/configuration_spec.rb +275 -0
  219. data/spec/cucumber/cli/main_spec.rb +203 -0
  220. data/spec/cucumber/core_ext/proc_spec.rb +27 -35
  221. data/spec/cucumber/core_ext/string_spec.rb +8 -0
  222. data/spec/cucumber/{formatters → formatter}/ansicolor_spec.rb +2 -2
  223. data/spec/cucumber/formatter/color_io_spec.rb +26 -0
  224. data/spec/cucumber/formatter/html/cucumber.css +37 -0
  225. data/spec/cucumber/formatter/html/cucumber.js +13 -0
  226. data/spec/cucumber/formatter/html/index.html +45 -0
  227. data/spec/cucumber/formatter/html/jquery-1.3.min.js +19 -0
  228. data/spec/cucumber/formatter/html/jquery.uitableedit.js +100 -0
  229. data/spec/cucumber/formatters/profile_formatter_spec.rb +17 -16
  230. data/spec/cucumber/parser/feature_parser_spec.rb +282 -0
  231. data/spec/cucumber/parser/table_parser_spec.rb +48 -0
  232. data/spec/cucumber/step_definition_spec.rb +81 -0
  233. data/spec/cucumber/step_mother_spec.rb +50 -51
  234. data/spec/cucumber/treetop_parser/empty_feature.feature +1 -1
  235. data/spec/cucumber/treetop_parser/multiple_tables.feature +6 -8
  236. data/spec/cucumber/treetop_parser/scenario_outline.feature +1 -1
  237. data/spec/cucumber/treetop_parser/spaces.feature +3 -1
  238. data/spec/cucumber/treetop_parser/with_comments.feature +1 -1
  239. data/spec/cucumber/treetop_parser/with_tags.feature +18 -0
  240. data/spec/cucumber/world/pending_spec.rb +13 -12
  241. data/spec/spec_helper.rb +1 -1
  242. metadata +165 -88
  243. data/examples/calculator_ruby_features/features/addition.rb +0 -39
  244. data/examples/calculator_ruby_features/features/step_definitons/calculator_steps.rb +0 -43
  245. data/examples/i18n/ja/README.txt +0 -5
  246. data/examples/selenium/features/step_definitons/stories_steps.rb +0 -40
  247. data/gem_tasks/treetop.rake +0 -41
  248. data/lib/cucumber/cli.rb +0 -356
  249. data/lib/cucumber/executor.rb +0 -205
  250. data/lib/cucumber/formatters.rb +0 -1
  251. data/lib/cucumber/formatters/autotest_formatter.rb +0 -23
  252. data/lib/cucumber/formatters/cucumber.css +0 -132
  253. data/lib/cucumber/formatters/cucumber.js +0 -11
  254. data/lib/cucumber/formatters/html_formatter.rb +0 -151
  255. data/lib/cucumber/formatters/jquery.js +0 -32
  256. data/lib/cucumber/formatters/pretty_formatter.rb +0 -285
  257. data/lib/cucumber/formatters/profile_formatter.rb +0 -92
  258. data/lib/cucumber/formatters/progress_formatter.rb +0 -61
  259. data/lib/cucumber/model.rb +0 -1
  260. data/lib/cucumber/model/table.rb +0 -32
  261. data/lib/cucumber/step_methods.rb +0 -49
  262. data/lib/cucumber/tree.rb +0 -16
  263. data/lib/cucumber/tree/feature.rb +0 -105
  264. data/lib/cucumber/tree/features.rb +0 -21
  265. data/lib/cucumber/tree/given_scenario.rb +0 -13
  266. data/lib/cucumber/tree/scenario.rb +0 -240
  267. data/lib/cucumber/tree/step.rb +0 -173
  268. data/lib/cucumber/tree/table.rb +0 -26
  269. data/lib/cucumber/tree/top_down_visitor.rb +0 -23
  270. data/lib/cucumber/treetop_parser/feature.treetop.erb +0 -254
  271. data/lib/cucumber/treetop_parser/feature_ar.rb +0 -1951
  272. data/lib/cucumber/treetop_parser/feature_cy.rb +0 -1951
  273. data/lib/cucumber/treetop_parser/feature_da.rb +0 -1951
  274. data/lib/cucumber/treetop_parser/feature_de.rb +0 -1951
  275. data/lib/cucumber/treetop_parser/feature_en-lol.rb +0 -1951
  276. data/lib/cucumber/treetop_parser/feature_en-tx.rb +0 -1951
  277. data/lib/cucumber/treetop_parser/feature_en.rb +0 -1951
  278. data/lib/cucumber/treetop_parser/feature_es.rb +0 -1951
  279. data/lib/cucumber/treetop_parser/feature_et.rb +0 -1951
  280. data/lib/cucumber/treetop_parser/feature_fr.rb +0 -1951
  281. data/lib/cucumber/treetop_parser/feature_id.rb +0 -1951
  282. data/lib/cucumber/treetop_parser/feature_it.rb +0 -1951
  283. data/lib/cucumber/treetop_parser/feature_ja.rb +0 -1951
  284. data/lib/cucumber/treetop_parser/feature_ko.rb +0 -1951
  285. data/lib/cucumber/treetop_parser/feature_lt.rb +0 -1951
  286. data/lib/cucumber/treetop_parser/feature_nl.rb +0 -1951
  287. data/lib/cucumber/treetop_parser/feature_no.rb +0 -1951
  288. data/lib/cucumber/treetop_parser/feature_parser.rb +0 -36
  289. data/lib/cucumber/treetop_parser/feature_pl.rb +0 -1951
  290. data/lib/cucumber/treetop_parser/feature_pt.rb +0 -1951
  291. data/lib/cucumber/treetop_parser/feature_ro.rb +0 -1951
  292. data/lib/cucumber/treetop_parser/feature_ro2.rb +0 -1951
  293. data/lib/cucumber/treetop_parser/feature_ru.rb +0 -1951
  294. data/lib/cucumber/treetop_parser/feature_se.rb +0 -1951
  295. data/lib/cucumber/treetop_parser/feature_zh-CN.rb +0 -1951
  296. data/lib/cucumber/world/pending.rb +0 -22
  297. data/script/console +0 -10
  298. data/script/console.cmd +0 -1
  299. data/script/destroy +0 -14
  300. data/script/destroy.cmd +0 -1
  301. data/script/generate +0 -14
  302. data/script/generate.cmd +0 -1
  303. data/script/txt2html +0 -74
  304. data/script/txt2html.cmd +0 -1
  305. data/setup.rb +0 -1585
  306. data/spec/cucumber/cli_spec.rb +0 -521
  307. data/spec/cucumber/executor_spec.rb +0 -382
  308. data/spec/cucumber/formatters/autotest_formatter_spec.rb +0 -26
  309. data/spec/cucumber/formatters/features.html +0 -269
  310. data/spec/cucumber/formatters/html_formatter_spec.rb +0 -104
  311. data/spec/cucumber/formatters/pretty_formatter_spec.rb +0 -410
  312. data/spec/cucumber/formatters/progress_formatter_spec.rb +0 -81
  313. data/spec/cucumber/model/table_spec.rb +0 -32
  314. data/spec/cucumber/tree/feature_spec.rb +0 -122
  315. data/spec/cucumber/tree/row_scenario_outline_spec.rb +0 -73
  316. data/spec/cucumber/tree/row_scenario_spec.rb +0 -55
  317. data/spec/cucumber/tree/row_step_outline_spec.rb +0 -38
  318. data/spec/cucumber/tree/scenario_outline_spec.rb +0 -50
  319. data/spec/cucumber/tree/scenario_spec.rb +0 -134
  320. data/spec/cucumber/tree/step_outline_spec.rb +0 -17
  321. data/spec/cucumber/tree/step_spec.rb +0 -59
  322. data/spec/cucumber/treetop_parser/feature_parser_spec.rb +0 -120
@@ -1,81 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Formatters
5
- describe ProgressFormatter do
6
- before do
7
- ::Term::ANSIColor.coloring = false
8
- end
9
-
10
- after do
11
- ::Term::ANSIColor.coloring = true
12
- end
13
-
14
- it "should print . when passed" do
15
- io = StringIO.new
16
- formatter = ProgressFormatter.new io
17
- step = stub('step',
18
- :error => nil
19
- )
20
- formatter.step_passed(step,nil,nil)
21
- io.string.should =~ /^\.$/
22
- end
23
-
24
- it "should print F when failed" do
25
- io = StringIO.new
26
- formatter = ProgressFormatter.new io
27
- step = stub('step',
28
- :error => StandardError.new
29
- )
30
- formatter.step_failed(step,nil,nil)
31
- io.string.should =~ /^\F$/
32
- end
33
-
34
- it "should print P when pending" do
35
- io = StringIO.new
36
- formatter = ProgressFormatter.new io
37
- step = stub('step',
38
- :error => Pending.new,
39
- :scenario => mock('scenario')
40
- )
41
- formatter.step_pending(step,nil,nil)
42
- io.string.should =~ /^\P$/
43
- end
44
-
45
- it "should print _ when skipped" do
46
- io = StringIO.new
47
- formatter = ProgressFormatter.new io
48
- formatter.step_skipped(nil,nil,nil)
49
- io.string.should =~ /^_$/
50
- end
51
-
52
- it "should print nothing when traced" do
53
- io = StringIO.new
54
- formatter = ProgressFormatter.new io
55
- formatter.step_traced(nil, nil, nil)
56
-
57
- io.string.should =~ /^$/
58
- end
59
-
60
- describe "scenario without any steps" do
61
- before :each do
62
- @io = StringIO.new
63
- @formatter = ProgressFormatter.new(@io)
64
- @feature = stub("feature", :header => "Feature Header")
65
- @scenario = stub("scenario", :feature => @feature, :name => "Scenario Title", :row? => false, :pending? => true)
66
- end
67
-
68
- it "should print a P when executing" do
69
- @formatter.should_receive(:pending).with("P")
70
- @formatter.scenario_executing(@scenario)
71
- end
72
-
73
- it "should display as pending in the dump" do
74
- @formatter.scenario_executing(@scenario)
75
- @formatter.dump
76
- @io.string.should include("Feature Header (Scenario Title)")
77
- end
78
- end
79
- end
80
- end
81
- end
@@ -1,32 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Model
5
- describe Table do
6
- before do
7
- @raw = [
8
- %w{name gender},
9
- %w{aslak male},
10
- %w{patty female},
11
- ]
12
- end
13
-
14
- it "should convert into hash-array" do
15
- ha = Table.new(@raw).hashes
16
- ha.should == [
17
- {'name' => 'aslak', 'gender' => 'male'},
18
- {'name' => 'patty', 'gender' => 'female'}
19
- ]
20
- end
21
-
22
- it "should return the rows of the table" do
23
- ar = Table.new(@raw).rows
24
- ar.should == [
25
- ["aslak", "male"],
26
- ["patty", "female"]
27
- ]
28
- end
29
-
30
- end
31
- end
32
- end
@@ -1,122 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe Feature do
6
-
7
- def mock_scenario(stubs = {})
8
- mock("scenario", {:update_table_column_widths => nil,
9
- :outline? => false,
10
- :table_header= => nil}.merge(stubs))
11
- end
12
-
13
- def mock_scenario_outline(stubs = {})
14
- mock_scenario({:outline? => true, :row? => false, :table_header= => nil}.merge(stubs))
15
- end
16
-
17
- it "should have padding_length 2 when alone" do
18
- feature = Feature.new('header')
19
- feature.padding_length.should == 2
20
- end
21
-
22
- describe "creating a Scenario" do
23
-
24
- it "should create a new scenario for a feature" do
25
- feature = Feature.new('header')
26
-
27
- Scenario.should_receive(:new).with(feature, 'test scenario', "29")
28
-
29
- feature.Scenario('test scenario') {}
30
- end
31
-
32
- end
33
-
34
- describe "creating a Scenario Outline" do
35
-
36
- it "should create a new scenario outline for feature" do
37
- feature = Feature.new('header')
38
-
39
- ScenarioOutline.should_receive(:new).with(feature, 'test', '41')
40
-
41
- feature.ScenarioOutline('test') {}
42
- end
43
-
44
- end
45
-
46
- describe "creating a Table" do
47
-
48
- before(:each) do
49
- @feature = Feature.new('header')
50
- end
51
-
52
- describe "previous scenario is a scenario outline" do
53
-
54
- it "should create a row scenario outline for feature" do
55
- mock_scenario_outline = mock_scenario_outline(:outline? => true)
56
- Scenario.stub!(:new).and_return(mock_scenario_outline)
57
- @feature.add_scenario('scenario', 5)
58
-
59
- RowScenarioOutline.should_receive(:new).with(@feature, mock_scenario_outline, ['1', '2'], anything)
60
-
61
- @feature.Table do |t|
62
- t | "input_1" | "input_2" | t
63
- t | 1 | 2 | t
64
- end
65
- end
66
-
67
- end
68
-
69
- describe "previous scenario was a regular scenario" do
70
-
71
- it "should create a row scenario for feature" do
72
- mock_scenario = mock_scenario(:outline? => false)
73
- Scenario.stub!(:new).and_return(mock_scenario)
74
- @feature.add_scenario('scenario', 5)
75
-
76
- RowScenario.should_receive(:new).with(@feature, mock_scenario, ['1', '2'], anything)
77
-
78
- @feature.Table do |t|
79
- t | "input_1" | "input_2" | t
80
- t | 1 | 2 | t
81
- end
82
- end
83
-
84
- end
85
-
86
- it "should set the table header of the template scenario" do
87
- mock_scenario = mock("scenario", :update_table_column_widths => nil, :outline? => false)
88
- Scenario.stub!(:new).and_return(mock_scenario)
89
- @feature.add_scenario('scenario', 5)
90
-
91
- mock_scenario.should_receive(:table_header=).with(["input_1", "input_2"])
92
-
93
- @feature.Table do |t|
94
- t | "input_1" | "input_2" | t
95
- t | 1 | 2 | t
96
- end
97
- end
98
-
99
- end
100
-
101
- it "should create a new row scenario outline" do
102
- feature = Feature.new('header')
103
-
104
- RowScenarioOutline.should_receive(:new)
105
-
106
- feature.add_row_scenario_outline(mock_scenario_outline, [], 1)
107
- end
108
-
109
- it "should visit scenario outline" do
110
- feature = Feature.new('header')
111
- ScenarioOutline.stub!(:new).and_return(mock_scenario_outline(:outline? => true, :row? => false))
112
- feature.add_scenario_outline(nil, nil)
113
- mock_visitor = mock('visitor', :visit_header => nil)
114
-
115
- mock_visitor.should_receive(:visit_scenario_outline)
116
-
117
- feature.accept(mock_visitor)
118
- end
119
-
120
- end
121
- end
122
- end
@@ -1,73 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe RowScenarioOutline do
6
-
7
- def mock_feature
8
- mock_feature = mock("feature")
9
- end
10
-
11
- def mock_scenario(stubs ={})
12
- mock("scenario", {:update_table_column_widths => nil}.merge(stubs))
13
- end
14
-
15
- def mock_step(stubs = {})
16
- mock("step", {:arity => 0}.merge(stubs))
17
- end
18
-
19
- it "should indicate scenario is a scenario outline" do
20
- outline = RowScenarioOutline.new(mock_feature, mock_scenario, [], 1)
21
-
22
- outline.should be_a_outline
23
- end
24
-
25
- describe "steps" do
26
-
27
- it "should create a new step with placeholders in template scenario steps replaced with values from scenario row" do
28
- mock_step = mock_step(:keyword => 'Given', :name => '<animal> burning bright')
29
- mock_scenario = mock_scenario(:table_header => ["animal"], :steps => [mock_step] )
30
- outline = RowScenarioOutline.new(mock_feature, mock_scenario, ["tiger"], 1)
31
-
32
- RowStepOutline.should_receive(:new).with(outline, mock_step, 'tiger burning bright', ["tiger"], 1)
33
-
34
- outline.steps
35
- end
36
-
37
- it "should leave the scenario template's name unchanged when replacing placeholders" do
38
- mock_step = mock_step(:keyword => 'Given', :name => '<animal> burning bright', :extra_args => [])
39
- mock_scenario = mock_scenario(:table_header => ["animal"], :steps => [mock_step] )
40
- outline = RowScenarioOutline.new(mock_feature, mock_scenario, ["tiger"], 1)
41
-
42
- outline.steps
43
-
44
- mock_step.name.should == '<animal> burning bright'
45
- end
46
-
47
- it "should leave the step name untouched if it has no placeholders" do
48
- mock_step = mock_step(:keyword => 'Given', :name => 'beauty too rich for earth too dear')
49
- mock_scenario = mock_scenario(:table_header => ["animal"], :steps => [mock_step] )
50
- outline = RowScenarioOutline.new(mock_feature, mock_scenario, ["tiger"], 1)
51
-
52
- RowStepOutline.should_receive(:new).with(outline, mock_step, 'beauty too rich for earth too dear', [], 1)
53
-
54
- outline.steps
55
- end
56
-
57
- it "should ensure that created steps do not contain values already used in previous steps" do
58
- mock_step_1 = mock_step(:keyword => 'Given', :name => '<animal> eating')
59
- mock_step_2 = mock_step(:keyword => 'Given', :name => 'eating <animal>')
60
- mock_scenario = mock_scenario(:table_header => ["animal"], :steps => [mock_step_1, mock_step_2] )
61
- outline = RowScenarioOutline.new(mock_feature, mock_scenario, ["tiger"], 1)
62
-
63
- RowStepOutline.should_receive(:new).with(anything, anything, anything, ['tiger'], anything)
64
- RowStepOutline.should_receive(:new).with(anything, anything, anything, [], anything)
65
-
66
- outline.steps
67
- end
68
-
69
- end
70
-
71
- end
72
- end
73
- end
@@ -1,55 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe RowScenario do
6
-
7
- def mock_scenario(stubs = {})
8
- mock('scenario', {:update_table_column_widths => nil, :steps => []}.merge(stubs))
9
- end
10
-
11
- describe "pending?" do
12
- before :each do
13
- @scenario = Scenario.new(nil, '', 1)
14
- @row_scenario = RowScenario.new(mock('feature'), @scenario, [], 1)
15
- end
16
-
17
- it "should return true if the template scenario has no steps" do
18
- @row_scenario.should be_pending
19
- end
20
-
21
- it "should return false if the template scenario has no steps" do
22
- @scenario.create_step('Given', 'a long step', 1)
23
- @row_scenario.should_not be_pending
24
- end
25
- end
26
-
27
- describe "generating row steps" do
28
-
29
- it "should cache unbound steps" do
30
- row_scenario = RowScenario.new(mock('feature'), mock_scenario, [], 1)
31
-
32
- row_scenario.steps.should equal(row_scenario.steps)
33
- end
34
-
35
- it "should cache bound steps" do
36
- mock_step = mock('step', :arity => 1)
37
- row_scenario = RowScenario.new(mock('feature'), mock_scenario(:steps => [mock_step]), [], 1)
38
-
39
- row_scenario.steps.should equal(row_scenario.steps)
40
- end
41
-
42
- it "should regenerate row steps when scenario template steps have been matched" do
43
- mock_step = mock('step', :arity => 0)
44
- row_scenario = RowScenario.new(mock('feature'), mock_scenario(:steps => [mock_step]), [], 1)
45
- unbound_steps = row_scenario.steps
46
- mock_step.stub!(:arity => 1)
47
-
48
- unbound_steps.should_not equal(row_scenario.steps)
49
- end
50
-
51
- end
52
-
53
- end
54
- end
55
- end
@@ -1,38 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe RowStepOutline do
6
-
7
- def mock_step(stubs = {})
8
- mock("step", {:extra_args => []}.merge(stubs))
9
- end
10
-
11
-
12
- it "should be a outline" do
13
- outline_row = RowStepOutline.new(mock("scenario"), mock_step, 'outline', [], 1)
14
-
15
- outline_row.should be_a_outline
16
- end
17
-
18
- it "should be a row step" do
19
- outline_row = RowStepOutline.new(mock("scenario"), mock_step, 'outline', [], 1)
20
-
21
- outline_row.should be_a_row
22
- end
23
-
24
- it "should have visible args" do
25
- outline_row = RowStepOutline.new(mock("scenario"), mock_step, 'outline', ["tiger", "night"], 1)
26
-
27
- outline_row.visible_args.should == ["tiger", "night"]
28
- end
29
-
30
- it "should have extra args" do
31
- outline_row = RowStepOutline.new(mock("scenario"), mock_step(:extra_args => ["extra", "arrrgs"]), 'outline', [], 1)
32
-
33
- outline_row.extra_args.should == ["extra", "arrrgs"]
34
- end
35
-
36
- end
37
- end
38
- end
@@ -1,50 +0,0 @@
1
- require File.dirname(__FILE__) + '/../../spec_helper'
2
-
3
- module Cucumber
4
- module Tree
5
- describe ScenarioOutline do
6
-
7
- def mock_feature
8
- mock_feature = mock("feature")
9
- end
10
-
11
- def mock_scenario(stubs ={})
12
- mock("scenario", {:update_table_column_widths => nil}.merge(stubs))
13
- end
14
-
15
- it "should indicate its a scenario outline" do
16
- scenario_outline = ScenarioOutline.new(mock_feature, '', 1)
17
-
18
- scenario_outline.should be_a_outline
19
- end
20
-
21
- it "should create a step outline when adding new steps" do
22
- scenario_outline = ScenarioOutline.new(mock_feature, '', 1)
23
-
24
- StepOutline.should_receive(:new)
25
-
26
- scenario_outline.create_step('Given', '', 2)
27
- end
28
-
29
- it "should visit step outlines" do
30
- outline = ScenarioOutline.new(mock_feature, '', 1)
31
- outline.create_step('Given', '', 1)
32
- mock_visitor = mock('visitor')
33
-
34
- mock_visitor.should_receive(:visit_step_outline)
35
-
36
- outline.accept(mock_visitor)
37
- end
38
-
39
- it "should include indent when padding to step" do
40
- scenario = ScenarioOutline.new(mock_feature, '', 1)
41
- scenario.create_step('Given', 'a longish step', 1)
42
-
43
- #Scenario Outline: ****
44
- # Given a longish step
45
- scenario.padding_length.should == 4 + Scenario::INDENT
46
- end
47
-
48
- end
49
- end
50
- end