cucumber 1.3.10 → 2.0.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 (465) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.rspec +1 -1
  4. data/.travis.yml +4 -3
  5. data/CONTRIBUTING.md +9 -0
  6. data/Gemfile +9 -2
  7. data/History.md +212 -22
  8. data/LICENSE +2 -2
  9. data/README.md +4 -4
  10. data/Rakefile +10 -1
  11. data/bin/cucumber +1 -5
  12. data/cucumber.gemspec +10 -13
  13. data/cucumber.yml +14 -24
  14. data/examples/{ramaze → i18n/el}/Rakefile +1 -1
  15. data/examples/i18n/el/features/addition.feature +17 -0
  16. data/examples/i18n/el/features/division.feature +10 -0
  17. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +24 -0
  18. data/examples/i18n/el/lib/calculator.rb +14 -0
  19. data/examples/i18n/fr/Rakefile +3 -1
  20. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +2 -2
  21. data/examples/i18n/ht/Rakefile +6 -0
  22. data/examples/i18n/ht/features/adisyon.feature +17 -0
  23. data/examples/i18n/ht/features/divizyon.feature +10 -0
  24. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +25 -0
  25. data/examples/i18n/ht/lib/kalkilatris.rb +14 -0
  26. data/examples/i18n/zh-CN/features/{step_definitons → step_definitions}/calculator_steps.rb +4 -4
  27. data/examples/tcl/features/step_definitions/fib_steps.rb +1 -1
  28. data/{legacy_features → features/docs}/api/list_step_defs_as_json.feature +14 -14
  29. data/{legacy_features → features/docs}/api/run_cli_main_with_existing_runtime.feature +5 -10
  30. data/features/{backtraces.feature → docs/cli/backtraces.feature} +2 -2
  31. data/features/docs/cli/dry_run.feature +73 -0
  32. data/features/docs/cli/exclude_files.feature +18 -0
  33. data/features/docs/cli/execute_with_tag_filter.feature +117 -0
  34. data/features/docs/cli/randomize.feature +46 -0
  35. data/features/docs/cli/require.feature +27 -0
  36. data/features/docs/cli/run_scenarios_matching_name.feature +104 -0
  37. data/features/docs/cli/run_specific_scenarios.feature +75 -0
  38. data/features/docs/cli/showing_differences.feature +43 -0
  39. data/features/docs/cli/specifying_multiple_formatters.feature +44 -0
  40. data/features/docs/cli/strict_mode.feature +64 -0
  41. data/features/{nested_steps.feature → docs/defining_steps/nested_steps.feature} +52 -6
  42. data/features/{nested_steps_i18n.feature → docs/defining_steps/nested_steps_i18n.feature} +0 -2
  43. data/features/{step_definitions.feature → docs/defining_steps/one_line_step_definitions.feature} +3 -3
  44. data/features/docs/defining_steps/printing_messages.feature +148 -0
  45. data/features/docs/defining_steps/skip_scenario.feature +62 -0
  46. data/features/docs/defining_steps/snippets.feature +56 -0
  47. data/{legacy_features → features/docs/defining_steps}/table_diffing.feature +21 -16
  48. data/features/{transforms.feature → docs/defining_steps/transforms.feature} +2 -2
  49. data/{legacy_features/exception_in_after_block.feature → features/docs/exception_in_after_hook.feature} +25 -26
  50. data/{legacy_features/exception_in_after_step_block.feature → features/docs/exception_in_after_step_hook.feature} +22 -24
  51. data/features/docs/exception_in_around_hook.feature +80 -0
  52. data/{legacy_features/exception_in_before_block.feature → features/docs/exception_in_before_hook.feature} +18 -20
  53. data/features/docs/extending_cucumber/custom_filter.feature +29 -0
  54. data/features/docs/extending_cucumber/custom_formatter.feature +94 -0
  55. data/features/docs/formatters/debug_formatter.feature +47 -0
  56. data/features/{formatter_step_file_colon_line.feature → docs/formatters/formatter_step_file_colon_line.feature} +2 -4
  57. data/features/{html_formatter.feature → docs/formatters/html_formatter.feature} +10 -14
  58. data/features/docs/formatters/json_formatter.feature +760 -0
  59. data/features/docs/formatters/junit_formatter.feature +316 -0
  60. data/features/docs/formatters/pretty_formatter.feature +73 -0
  61. data/features/{progress_formatter.feature → docs/formatters/progress_formatter.feature} +1 -1
  62. data/features/docs/formatters/rerun_formatter.feature +136 -0
  63. data/features/docs/formatters/usage_formatter.feature +102 -0
  64. data/features/docs/getting_started.feature +27 -0
  65. data/features/{background.feature → docs/gherkin/background.feature} +149 -91
  66. data/features/{doc_strings.feature → docs/gherkin/doc_strings.feature} +1 -0
  67. data/features/docs/gherkin/expand_option_for_outlines.feature +46 -0
  68. data/features/docs/gherkin/language_from_header.feature +32 -0
  69. data/features/docs/gherkin/outlines.feature +158 -0
  70. data/features/docs/gherkin/unicode_table.feature +32 -0
  71. data/features/docs/gherkin/using_descriptions.feature +88 -0
  72. data/features/docs/gherkin/using_star_notation.feature +37 -0
  73. data/{legacy_features → features/docs}/post_configuration_hook.feature +17 -18
  74. data/{legacy_features → features/docs}/profiles.feature +30 -36
  75. data/{legacy_features → features/docs}/rake_task.feature +30 -41
  76. data/features/{raketask.feature → docs/raketask.feature} +6 -13
  77. data/{legacy_features/wire_protocol_erb.feature → features/docs/wire_protocol/erb_configuration.feature} +7 -8
  78. data/features/docs/wire_protocol/handle_unexpected_response.feature +30 -0
  79. data/features/docs/wire_protocol/invoke_message.feature +216 -0
  80. data/features/docs/wire_protocol/readme.md +26 -0
  81. data/features/docs/wire_protocol/snippets_message.feature +51 -0
  82. data/features/docs/wire_protocol/step_matches_message.feature +81 -0
  83. data/{legacy_features/wire_protocol_table_diffing.feature → features/docs/wire_protocol/table_diffing.feature} +19 -12
  84. data/{legacy_features/wire_protocol_tags.feature → features/docs/wire_protocol/tags.feature} +7 -7
  85. data/{legacy_features/wire_protocol_timeouts.feature → features/docs/wire_protocol/timeouts.feature} +7 -6
  86. data/{legacy_features → features/docs}/work_in_progress.feature +52 -54
  87. data/features/docs/writing_support_code/after_hooks.feature +80 -0
  88. data/{legacy_features → features/docs/writing_support_code}/around_hooks.feature +56 -28
  89. data/features/docs/writing_support_code/before_hook.feature +65 -0
  90. data/features/docs/writing_support_code/hook_order.feature +61 -0
  91. data/features/{load_path.feature → docs/writing_support_code/load_path.feature} +3 -0
  92. data/features/docs/writing_support_code/state.feature +32 -0
  93. data/features/docs/writing_support_code/tagged_hooks.feature +95 -0
  94. data/features/lib/step_definitions/aruba_steps.rb +22 -0
  95. data/features/lib/step_definitions/cucumber_steps.rb +50 -0
  96. data/features/{step_definitions → lib/step_definitions}/iso-8859-1_steps.rb +3 -15
  97. data/features/lib/step_definitions/json_steps.rb +7 -0
  98. data/features/lib/step_definitions/junit_steps.rb +13 -0
  99. data/features/lib/step_definitions/language_steps.rb +4 -5
  100. data/features/lib/step_definitions/profile_steps.rb +15 -0
  101. data/features/lib/step_definitions/ruby_steps.rb +3 -0
  102. data/features/lib/step_definitions/wire_steps.rb +58 -0
  103. data/features/lib/support/env.rb +21 -0
  104. data/{legacy_features → features/lib}/support/fake_wire_server.rb +10 -7
  105. data/features/{support → lib/support}/feature_factory.rb +1 -1
  106. data/features/lib/support/normalise_output.rb +33 -0
  107. data/gem_tasks/cov.rake +5 -0
  108. data/gem_tasks/cucumber.rake +3 -8
  109. data/gem_tasks/rspec.rake +0 -2
  110. data/lib/cucumber/ast.rb +8 -25
  111. data/lib/cucumber/cli/configuration.rb +33 -37
  112. data/lib/cucumber/cli/main.rb +14 -27
  113. data/lib/cucumber/cli/options.rb +22 -60
  114. data/lib/cucumber/cli/profile_loader.rb +1 -1
  115. data/lib/cucumber/configuration.rb +4 -0
  116. data/lib/cucumber/constantize.rb +7 -6
  117. data/lib/cucumber/core_ext/instance_exec.rb +7 -38
  118. data/lib/cucumber/core_ext/proc.rb +1 -1
  119. data/lib/cucumber/encoding.rb +5 -0
  120. data/lib/cucumber/errors.rb +21 -10
  121. data/lib/cucumber/file_specs.rb +37 -0
  122. data/lib/cucumber/filters/activate_steps.rb +33 -0
  123. data/lib/cucumber/filters/apply_after_hooks.rb +9 -0
  124. data/lib/cucumber/filters/apply_after_step_hooks.rb +12 -0
  125. data/lib/cucumber/filters/apply_around_hooks.rb +12 -0
  126. data/lib/cucumber/filters/apply_before_hooks.rb +9 -0
  127. data/lib/cucumber/filters/gated_receiver.rb +25 -0
  128. data/lib/cucumber/filters/prepare_world.rb +45 -0
  129. data/lib/cucumber/filters/quit.rb +28 -0
  130. data/lib/cucumber/filters/randomizer.rb +40 -0
  131. data/lib/cucumber/filters/tag_limits/test_case_index.rb +31 -0
  132. data/lib/cucumber/filters/tag_limits/verifier.rb +59 -0
  133. data/lib/cucumber/filters/tag_limits.rb +45 -0
  134. data/lib/cucumber/filters.rb +9 -0
  135. data/lib/cucumber/formatter/ansicolor.rb +0 -8
  136. data/lib/cucumber/formatter/console.rb +66 -36
  137. data/lib/cucumber/formatter/debug.rb +10 -8
  138. data/lib/cucumber/formatter/fanout.rb +27 -0
  139. data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +122 -12
  140. data/lib/cucumber/formatter/html.rb +67 -18
  141. data/lib/cucumber/formatter/ignore_missing_messages.rb +20 -0
  142. data/lib/cucumber/formatter/interceptor.rb +17 -3
  143. data/lib/cucumber/formatter/json.rb +1 -1
  144. data/lib/cucumber/formatter/junit.rb +105 -5
  145. data/lib/cucumber/formatter/legacy_api/adapter.rb +1060 -0
  146. data/lib/cucumber/formatter/legacy_api/ast.rb +376 -0
  147. data/lib/cucumber/formatter/legacy_api/results.rb +51 -0
  148. data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +30 -0
  149. data/lib/cucumber/formatter/pretty.rb +16 -8
  150. data/lib/cucumber/formatter/progress.rb +10 -0
  151. data/lib/cucumber/formatter/rerun.rb +14 -71
  152. data/lib/cucumber/formatter/unicode.rb +8 -21
  153. data/lib/cucumber/formatter/usage.rb +7 -1
  154. data/lib/cucumber/hooks.rb +97 -0
  155. data/lib/cucumber/language_support/language_methods.rb +0 -54
  156. data/lib/cucumber/{ast/table.rb → multiline_argument/data_table.rb} +77 -84
  157. data/lib/cucumber/multiline_argument/doc_string.rb +10 -0
  158. data/lib/cucumber/multiline_argument.rb +74 -0
  159. data/lib/cucumber/platform.rb +21 -20
  160. data/lib/cucumber/project_initializer.rb +43 -0
  161. data/lib/cucumber/rake/task.rb +3 -54
  162. data/lib/cucumber/rb_support/rb_hook.rb +2 -2
  163. data/lib/cucumber/rb_support/rb_language.rb +4 -34
  164. data/lib/cucumber/rb_support/rb_step_definition.rb +11 -2
  165. data/lib/cucumber/rb_support/rb_transform.rb +3 -1
  166. data/lib/cucumber/rb_support/rb_world.rb +13 -20
  167. data/lib/cucumber/rb_support/snippet.rb +61 -20
  168. data/lib/cucumber/rspec/doubles.rb +9 -6
  169. data/lib/cucumber/running_test_case.rb +115 -0
  170. data/lib/cucumber/runtime/after_hooks.rb +24 -0
  171. data/lib/cucumber/runtime/before_hooks.rb +23 -0
  172. data/lib/cucumber/runtime/for_programming_languages.rb +14 -10
  173. data/lib/cucumber/runtime/step_hooks.rb +22 -0
  174. data/lib/cucumber/runtime/support_code.rb +78 -21
  175. data/lib/cucumber/runtime/user_interface.rb +4 -0
  176. data/lib/cucumber/runtime.rb +153 -98
  177. data/lib/cucumber/step_match.rb +27 -3
  178. data/lib/cucumber/term/ansicolor.rb +1 -9
  179. data/lib/cucumber/wire_support/wire_language.rb +23 -9
  180. data/lib/cucumber/wire_support/wire_packet.rb +1 -1
  181. data/lib/cucumber/wire_support/wire_protocol/requests.rb +13 -5
  182. data/lib/cucumber/wire_support/wire_step_definition.rb +1 -8
  183. data/lib/cucumber.rb +8 -6
  184. data/spec/cucumber/cli/configuration_spec.rb +165 -134
  185. data/spec/cucumber/cli/main_spec.rb +36 -99
  186. data/spec/cucumber/cli/options_spec.rb +238 -272
  187. data/spec/cucumber/cli/profile_loader_spec.rb +18 -7
  188. data/spec/cucumber/configuration_spec.rb +3 -3
  189. data/spec/cucumber/constantize_spec.rb +2 -1
  190. data/spec/cucumber/core_ext/instance_exec_spec.rb +4 -0
  191. data/spec/cucumber/core_ext/proc_spec.rb +32 -43
  192. data/spec/cucumber/file_specs_spec.rb +60 -0
  193. data/spec/cucumber/filters/activate_steps_spec.rb +57 -0
  194. data/spec/cucumber/filters/gated_receiver_spec.rb +47 -0
  195. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +38 -0
  196. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +57 -0
  197. data/spec/cucumber/filters/tag_limits_spec.rb +59 -0
  198. data/spec/cucumber/formatter/ansicolor_spec.rb +11 -10
  199. data/spec/cucumber/formatter/debug_spec.rb +64 -0
  200. data/spec/cucumber/formatter/duration_spec.rb +6 -6
  201. data/spec/cucumber/formatter/html_spec.rb +233 -39
  202. data/spec/cucumber/formatter/interceptor_spec.rb +38 -31
  203. data/spec/cucumber/formatter/junit_spec.rb +213 -151
  204. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +2090 -0
  205. data/spec/cucumber/formatter/pretty_spec.rb +481 -49
  206. data/spec/cucumber/formatter/progress_spec.rb +63 -16
  207. data/spec/cucumber/formatter/rerun_spec.rb +107 -0
  208. data/spec/cucumber/formatter/spec_helper.rb +32 -17
  209. data/spec/cucumber/hooks_spec.rb +30 -0
  210. data/spec/cucumber/{ast/table_spec.rb → multiline_argument/data_table_spec.rb} +128 -208
  211. data/spec/cucumber/project_initializer_spec.rb +87 -0
  212. data/spec/cucumber/rake/forked_spec.rb +13 -22
  213. data/spec/cucumber/rb_support/rb_language_spec.rb +78 -69
  214. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +90 -44
  215. data/spec/cucumber/rb_support/rb_transform_spec.rb +24 -3
  216. data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +6 -4
  217. data/spec/cucumber/rb_support/snippet_spec.rb +47 -38
  218. data/spec/cucumber/running_test_case_spec.rb +83 -0
  219. data/spec/cucumber/runtime/for_programming_languages_spec.rb +18 -13
  220. data/spec/cucumber/runtime/support_code_spec.rb +29 -29
  221. data/spec/cucumber/runtime_spec.rb +35 -34
  222. data/spec/cucumber/step_match_spec.rb +30 -20
  223. data/spec/cucumber/wire_support/configuration_spec.rb +8 -5
  224. data/spec/cucumber/wire_support/connection_spec.rb +12 -8
  225. data/spec/cucumber/wire_support/wire_exception_spec.rb +14 -8
  226. data/spec/cucumber/wire_support/wire_language_spec.rb +8 -9
  227. data/spec/cucumber/wire_support/wire_packet_spec.rb +17 -13
  228. data/spec/cucumber/world/pending_spec.rb +36 -36
  229. data/spec/simplecov_setup.rb +18 -0
  230. data/spec/spec_helper.rb +6 -13
  231. metadata +348 -350
  232. data/.gitattributes +0 -1
  233. data/.ruby-version +0 -1
  234. data/examples/python/README.textile +0 -8
  235. data/examples/python/Rakefile +0 -4
  236. data/examples/python/features/fibonacci.feature +0 -19
  237. data/examples/python/features/step_definitions/fib_steps.py +0 -11
  238. data/examples/python/lib/fib.py +0 -7
  239. data/examples/ramaze/README.textile +0 -7
  240. data/examples/ramaze/app.rb +0 -21
  241. data/examples/ramaze/features/add.feature +0 -11
  242. data/examples/ramaze/features/step_definitions/add_steps.rb +0 -15
  243. data/examples/ramaze/features/support/env.rb +0 -32
  244. data/examples/ramaze/layout/default.html.erb +0 -8
  245. data/examples/ramaze/view/index.html.erb +0 -5
  246. data/examples/ruby2python/README.textile +0 -8
  247. data/examples/ruby2python/Rakefile +0 -4
  248. data/examples/ruby2python/features/fibonacci.feature +0 -19
  249. data/examples/ruby2python/features/step_definitions/fib_steps.rb +0 -7
  250. data/examples/ruby2python/features/support/env.rb +0 -21
  251. data/examples/ruby2python/lib/fib.py +0 -7
  252. data/examples/v8/Rakefile +0 -6
  253. data/examples/v8/features/fibonacci.feature +0 -43
  254. data/examples/v8/features/step_definitions/fib_steps.js +0 -49
  255. data/examples/v8/features/support/env.js +0 -14
  256. data/examples/v8/lib/fibonacci.js +0 -19
  257. data/features/.cucumber/stepdefs.json +0 -627
  258. data/features/assertions.feature +0 -73
  259. data/features/autoformat_profile_output.feature +0 -23
  260. data/features/before_hook.feature +0 -43
  261. data/features/bootstrap.feature +0 -27
  262. data/features/custom_formatter.feature +0 -41
  263. data/features/drb_server_integration.feature +0 -63
  264. data/features/execute_with_tag_filter.feature +0 -63
  265. data/features/formatter_callbacks.feature +0 -189
  266. data/features/json_formatter.feature +0 -338
  267. data/features/parsing.feature +0 -18
  268. data/features/pretty_formatter.feature +0 -31
  269. data/features/rerun_formatter.feature +0 -35
  270. data/features/run_specific_scenarios.feature +0 -47
  271. data/features/stats_formatters.feature +0 -73
  272. data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +0 -197
  273. data/features/step_definitions/cucumber_steps.rb +0 -55
  274. data/features/step_definitions/drb_steps.rb +0 -3
  275. data/features/support/env.rb +0 -57
  276. data/features/tagged_hooks.feature +0 -59
  277. data/fixtures/json/features/background.feature +0 -7
  278. data/fixtures/json/features/embed.feature +0 -4
  279. data/fixtures/json/features/one_passing_one_failing.feature +0 -11
  280. data/fixtures/json/features/step_definitions/steps.rb +0 -32
  281. data/fixtures/json/features/tables.feature +0 -13
  282. data/fixtures/junit/features/one_passing_one_failing.feature +0 -8
  283. data/fixtures/junit/features/pending.feature +0 -7
  284. data/fixtures/junit/features/scenario_outline.feature +0 -9
  285. data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +0 -8
  286. data/fixtures/junit/features/step_definitions/steps.rb +0 -11
  287. data/fixtures/self_test/README.textile +0 -6
  288. data/fixtures/self_test/Rakefile +0 -6
  289. data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +0 -7
  290. data/fixtures/self_test/features/failing_expectation.feature +0 -4
  291. data/fixtures/self_test/features/lots_of_undefined.feature +0 -8
  292. data/fixtures/self_test/features/multiline_name.feature +0 -27
  293. data/fixtures/self_test/features/outline_sample.feature +0 -15
  294. data/fixtures/self_test/features/sample.feature +0 -21
  295. data/fixtures/self_test/features/search_sample.feature +0 -32
  296. data/fixtures/self_test/features/step_definitions/sample_steps.rb +0 -84
  297. data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
  298. data/fixtures/self_test/features/support/env.rb +0 -26
  299. data/fixtures/self_test/features/tags_sample.feature +0 -17
  300. data/fixtures/self_test/features/tons_of_cukes.feature +0 -52
  301. data/fixtures/self_test/features/undefined_multiline_args.feature +0 -12
  302. data/fixtures/self_test/list-of-features.txt +0 -1
  303. data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +0 -8
  304. data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +0 -8
  305. data/fixtures/tickets/Rakefile +0 -20
  306. data/fixtures/tickets/features/172.feature +0 -28
  307. data/fixtures/tickets/features/177/1.feature +0 -28
  308. data/fixtures/tickets/features/177/2.feature +0 -20
  309. data/fixtures/tickets/features/177/3.feature +0 -18
  310. data/fixtures/tickets/features/180.feature +0 -7
  311. data/fixtures/tickets/features/229/tagged_hooks.feature +0 -8
  312. data/fixtures/tickets/features/229/tagged_hooks.rb +0 -14
  313. data/fixtures/tickets/features/236.feature +0 -13
  314. data/fixtures/tickets/features/241.feature +0 -12
  315. data/fixtures/tickets/features/246.feature +0 -4
  316. data/fixtures/tickets/features/248.feature +0 -11
  317. data/fixtures/tickets/features/270/back.feature +0 -14
  318. data/fixtures/tickets/features/270/back.steps.rb +0 -14
  319. data/fixtures/tickets/features/272/hooks.feature +0 -26
  320. data/fixtures/tickets/features/272/hooks_steps.rb +0 -53
  321. data/fixtures/tickets/features/279/py_string_indent.feature +0 -25
  322. data/fixtures/tickets/features/279/py_string_indent.steps.rb +0 -12
  323. data/fixtures/tickets/features/279/wrong.feature_ +0 -11
  324. data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +0 -6
  325. data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +0 -12
  326. data/fixtures/tickets/features/306/only_background.feature +0 -4
  327. data/fixtures/tickets/features/around_timeout.feature +0 -6
  328. data/fixtures/tickets/features/gherkin_67.feature +0 -12
  329. data/fixtures/tickets/features/gherkin_68.feature +0 -4
  330. data/fixtures/tickets/features/half_manual.feature +0 -11
  331. data/fixtures/tickets/features/lib/eatting_machine.rb +0 -18
  332. data/fixtures/tickets/features/lib/pantry.rb +0 -20
  333. data/fixtures/tickets/features/scenario_outline.feature +0 -95
  334. data/fixtures/tickets/features/step_definitons/246_steps.rb +0 -3
  335. data/fixtures/tickets/features/step_definitons/248_steps.rb +0 -15
  336. data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +0 -9
  337. data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +0 -11
  338. data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
  339. data/fixtures/tickets/features/step_definitons/tickets_steps.rb +0 -88
  340. data/fixtures/tickets/features/table_diffing.feature +0 -13
  341. data/fixtures/tickets/features/tickets.feature +0 -28
  342. data/fixtures/tickets/features.html +0 -138
  343. data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
  344. data/gem_tasks/yard/default/layout/html/footer.erb +0 -5
  345. data/gem_tasks/yard/default/layout/html/index.erb +0 -1
  346. data/gem_tasks/yard/default/layout/html/layout.erb +0 -25
  347. data/gem_tasks/yard/default/layout/html/logo.erb +0 -1
  348. data/gem_tasks/yard/default/layout/html/setup.rb +0 -4
  349. data/gem_tasks/yard.rake +0 -40
  350. data/legacy_features/README.md +0 -14
  351. data/legacy_features/announce.feature +0 -152
  352. data/legacy_features/bug_371.feature +0 -32
  353. data/legacy_features/bug_464.feature +0 -16
  354. data/legacy_features/bug_475.feature +0 -42
  355. data/legacy_features/bug_585_tab_indentation.feature +0 -22
  356. data/legacy_features/bug_600.feature +0 -73
  357. data/legacy_features/cucumber_cli.feature +0 -584
  358. data/legacy_features/cucumber_cli_outlines.feature +0 -117
  359. data/legacy_features/default_snippets.feature +0 -43
  360. data/legacy_features/diffing.feature +0 -25
  361. data/legacy_features/drb_server_integration.feature +0 -174
  362. data/legacy_features/exclude_files.feature +0 -20
  363. data/legacy_features/expand.feature +0 -60
  364. data/legacy_features/junit_formatter.feature +0 -214
  365. data/legacy_features/language_from_header.feature +0 -30
  366. data/legacy_features/listener_debugger_formatter.feature +0 -42
  367. data/legacy_features/multiline_names.feature +0 -44
  368. data/legacy_features/report_called_undefined_steps.feature +0 -35
  369. data/legacy_features/rerun_formatter.feature +0 -52
  370. data/legacy_features/simplest.feature +0 -11
  371. data/legacy_features/snippet.feature +0 -23
  372. data/legacy_features/snippets_when_using_star_keyword.feature +0 -38
  373. data/legacy_features/step_definitions/cucumber_steps.rb +0 -179
  374. data/legacy_features/step_definitions/extra_steps.rb +0 -2
  375. data/legacy_features/step_definitions/simplest_steps.rb +0 -3
  376. data/legacy_features/step_definitions/wire_steps.rb +0 -34
  377. data/legacy_features/support/env.rb +0 -161
  378. data/legacy_features/support/env.rb.simplest +0 -7
  379. data/legacy_features/table_mapping.feature +0 -34
  380. data/legacy_features/transform.feature +0 -245
  381. data/legacy_features/unicode_table.feature +0 -35
  382. data/legacy_features/wire_protocol.feature +0 -332
  383. data/lib/README.rdoc +0 -12
  384. data/lib/cucumber/ast/background.rb +0 -116
  385. data/lib/cucumber/ast/comment.rb +0 -31
  386. data/lib/cucumber/ast/doc_string.rb +0 -61
  387. data/lib/cucumber/ast/empty_background.rb +0 -33
  388. data/lib/cucumber/ast/examples.rb +0 -49
  389. data/lib/cucumber/ast/feature.rb +0 -99
  390. data/lib/cucumber/ast/features.rb +0 -38
  391. data/lib/cucumber/ast/has_steps.rb +0 -74
  392. data/lib/cucumber/ast/location.rb +0 -41
  393. data/lib/cucumber/ast/multiline_argument.rb +0 -30
  394. data/lib/cucumber/ast/names.rb +0 -13
  395. data/lib/cucumber/ast/outline_table.rb +0 -194
  396. data/lib/cucumber/ast/scenario.rb +0 -103
  397. data/lib/cucumber/ast/scenario_outline.rb +0 -146
  398. data/lib/cucumber/ast/step.rb +0 -122
  399. data/lib/cucumber/ast/step_collection.rb +0 -92
  400. data/lib/cucumber/ast/step_invocation.rb +0 -196
  401. data/lib/cucumber/ast/tags.rb +0 -28
  402. data/lib/cucumber/ast/tree_walker.rb +0 -191
  403. data/lib/cucumber/ast/visitor.rb +0 -11
  404. data/lib/cucumber/broadcaster.rb +0 -13
  405. data/lib/cucumber/cli/drb_client.rb +0 -43
  406. data/lib/cucumber/feature_file.rb +0 -94
  407. data/lib/cucumber/formatter/ordered_xml_markup.rb +0 -24
  408. data/lib/cucumber/js_support/js_dsl.js +0 -57
  409. data/lib/cucumber/js_support/js_language.rb +0 -185
  410. data/lib/cucumber/js_support/js_snippets.rb +0 -27
  411. data/lib/cucumber/parser/gherkin_builder.rb +0 -284
  412. data/lib/cucumber/parser.rb +0 -2
  413. data/lib/cucumber/py_support/py_dsl.py +0 -10
  414. data/lib/cucumber/py_support/py_language.py +0 -10
  415. data/lib/cucumber/py_support/py_language.rb +0 -80
  416. data/lib/cucumber/runtime/features_loader.rb +0 -62
  417. data/lib/cucumber/runtime/results.rb +0 -64
  418. data/lib/cucumber/step_mother.rb +0 -10
  419. data/spec/cucumber/ast/background_spec.rb +0 -122
  420. data/spec/cucumber/ast/doc_string_spec.rb +0 -40
  421. data/spec/cucumber/ast/feature_factory.rb +0 -72
  422. data/spec/cucumber/ast/feature_spec.rb +0 -63
  423. data/spec/cucumber/ast/features_spec.rb +0 -51
  424. data/spec/cucumber/ast/outline_table_spec.rb +0 -21
  425. data/spec/cucumber/ast/scenario_outline_spec.rb +0 -74
  426. data/spec/cucumber/ast/step_spec.rb +0 -68
  427. data/spec/cucumber/ast/tree_walker_spec.rb +0 -19
  428. data/spec/cucumber/broadcaster_spec.rb +0 -15
  429. data/spec/cucumber/cli/drb_client_spec.rb +0 -76
  430. data/spec/cucumber/rake/rcov_spec.rb +0 -71
  431. data/spec/cucumber/runtime/results_spec.rb +0 -81
  432. data/spec/cucumber/wire_support/wire_step_definition_spec.rb +0 -20
  433. /data/examples/i18n/ar/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  434. /data/examples/i18n/bg/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  435. /data/examples/i18n/ca/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  436. /data/examples/i18n/cs/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  437. /data/examples/i18n/da/features/{step_definitons → step_definitions}/lommeregner_steps.rb +0 -0
  438. /data/examples/i18n/de/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  439. /data/examples/i18n/en/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  440. /data/examples/i18n/eo/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  441. /data/examples/i18n/es/features/{step_definitons → step_definitions}/calculador_steps.rb +0 -0
  442. /data/examples/i18n/fi/features/{step_definitons → step_definitions}/laskin_steps.rb +0 -0
  443. /data/examples/i18n/he/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  444. /data/examples/i18n/hi/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  445. /data/examples/i18n/hu/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  446. /data/examples/i18n/id/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  447. /data/examples/i18n/it/features/{step_definitons → step_definitions}/calcolatrice_steps.rb +0 -0
  448. /data/examples/i18n/ja/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  449. /data/examples/i18n/ko/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  450. /data/examples/i18n/lt/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  451. /data/examples/i18n/lv/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  452. /data/examples/i18n/no/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
  453. /data/examples/i18n/pl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  454. /data/examples/i18n/ro/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  455. /data/examples/i18n/ru/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  456. /data/examples/i18n/sk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  457. /data/examples/i18n/sr-Cyrl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  458. /data/examples/i18n/sr-Latn/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  459. /data/examples/i18n/sv/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
  460. /data/examples/i18n/tr/features/{step_definitons → step_definitions}/hesap_makinesi_adimlari.rb +0 -0
  461. /data/examples/i18n/uk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  462. /data/examples/i18n/uz/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  463. /data/examples/i18n/zh-TW/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  464. /data/features/{nested_steps_with_second_arg.feature → docs/defining_steps/nested_steps_with_second_arg.feature} +0 -0
  465. /data/features/{iso-8859-1.feature → docs/iso-8859-1.feature} +0 -0
@@ -1,64 +0,0 @@
1
- module Cucumber
2
- class Runtime
3
-
4
- class Results
5
- def initialize(configuration)
6
- @configuration = configuration
7
-
8
- # Optimization - quicker lookup.
9
- @inserted_steps = {}
10
- @inserted_scenarios = {}
11
- end
12
-
13
- def configure(new_configuration)
14
- @configuration = Configuration.parse(new_configuration)
15
- end
16
-
17
- def step_visited(step) #:nodoc:
18
- step_id = step.object_id
19
-
20
- unless @inserted_steps.has_key?(step_id)
21
- @inserted_steps[step_id] = step
22
- steps.push(step)
23
- end
24
- end
25
-
26
- def scenario_visited(scenario) #:nodoc:
27
- scenario_id = scenario.object_id
28
-
29
- unless @inserted_scenarios.has_key?(scenario_id)
30
- @inserted_scenarios[scenario_id] = scenario
31
- scenarios.push(scenario)
32
- end
33
- end
34
-
35
- def steps(status = nil) #:nodoc:
36
- @steps ||= []
37
- if(status)
38
- @steps.select{|step| step.status == status}
39
- else
40
- @steps
41
- end
42
- end
43
-
44
- def scenarios(status = nil) #:nodoc:
45
- @scenarios ||= []
46
- if(status)
47
- @scenarios.select{|scenario| scenario.status == status}
48
- else
49
- @scenarios
50
- end
51
- end
52
-
53
- def failure?
54
- if @configuration.wip?
55
- scenarios(:passed).any?
56
- else
57
- scenarios(:failed).any? || steps(:failed).any? ||
58
- (@configuration.strict? && (steps(:undefined).any? || steps(:pending).any?))
59
- end
60
- end
61
- end
62
-
63
- end
64
- end
@@ -1,10 +0,0 @@
1
- require 'cucumber/runtime'
2
-
3
- module Cucumber
4
- class StepMother < Runtime
5
- def initialize(*args)
6
- warn("StepMother has been deprecated and will be gently put to sleep at the next major release. Please use Runtime instead. #{caller[0]}")
7
- super
8
- end
9
- end
10
- end
@@ -1,122 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/ast'
3
- require 'cucumber/rb_support/rb_language'
4
-
5
- module Cucumber
6
- module Ast
7
- describe Background do
8
- let(:language) { double.as_null_object }
9
-
10
- before do
11
- extend(Cucumber::RbSupport::RbDsl)
12
- @runtime = Cucumber::Runtime.new
13
- @rb = @runtime.load_programming_language('rb')
14
-
15
- $x = $y = nil
16
- Before do
17
- $x = 2
18
- end
19
- Given /y is (\d+)/ do |n|
20
- $y = $x * n.to_i
21
- end
22
-
23
- @visitor = TreeWalker.new(@runtime)
24
-
25
- @feature = double('feature', :visit? => true, :feature_elements => []).as_null_object
26
- end
27
-
28
- it "should execute Before blocks before background steps" do
29
- background = Background.new(
30
- language,
31
- Location.new('foo.feature', 2),
32
- comment=Comment.new(''),
33
- keyword="",
34
- title="",
35
- description="",
36
- steps=[
37
- Step.new(language,Location.new('foo.feature', 7), "Given", "y is 5")
38
- ])
39
-
40
- scenario = Scenario.new(
41
- language,
42
- background,
43
- comment=Comment.new(""),
44
- tags=Tags.new(98,[]),
45
- feature_tags=Tags.new(1,[]),
46
- line=99,
47
- keyword="",
48
- title="",
49
- description="",
50
- steps=[]
51
- )
52
- background.feature = @feature
53
- @visitor.visit_background(background)
54
- $x.should == 2
55
- $y.should == 10
56
- end
57
-
58
- describe "should respond to #name" do
59
- it "with a value" do
60
- background = Background.new(
61
- language,
62
- Location.new('foo.feature', 2),
63
- comment=Comment.new(''),
64
- keyword="",
65
- title="background name",
66
- description="",
67
- steps=[])
68
- lambda{ background.name }.should_not raise_error
69
- background.name.should == 'background name'
70
- end
71
- it "without a value" do
72
- background = Background.new(
73
- language,
74
- comment=Comment.new(''),
75
- line=2,
76
- keyword="",
77
- title="",
78
- description="",
79
- steps=[])
80
- lambda{ background.name }.should_not raise_error
81
- end
82
- end
83
-
84
- describe "failures in a Before hook" do
85
-
86
- before do
87
- Before do
88
- raise Exception, "Exception from Before hook"
89
- end
90
- end
91
-
92
- it "should state that the background has failed" do
93
- # Assign
94
- background = Background.new(
95
- language,
96
- Location.new('foo.feature', 2),
97
- comment=Comment.new(''),
98
- keyword="",
99
- title="",
100
- description="",
101
- steps=[
102
- Step.new(language, Location.new('foo.feature', 7), "Given", "y is 5")
103
- ])
104
- background.feature = @feature
105
-
106
- # Expect
107
- @visitor.should_receive( :visit_exception ) do |exception, status|
108
- exception.should be_instance_of( Exception )
109
- exception.message.should == "Exception from Before hook"
110
- status.should == :failed
111
- end
112
-
113
- # Assert
114
- lambda{ @visitor.visit_background(background) }.should_not raise_error
115
- background.should be_failed
116
- end
117
-
118
- end
119
- end
120
-
121
- end
122
- end
@@ -1,40 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/ast/doc_string'
3
-
4
- module Cucumber
5
- module Ast
6
- describe DocString do
7
- describe "replacing arguments" do
8
-
9
- before(:each) do
10
- @ps = DocString.new("<book>\n<qty>\n", '')
11
- end
12
-
13
- it "should return a new doc_string with arguments replaced with values" do
14
- doc_string_with_replaced_arg = @ps.arguments_replaced({'<book>' => 'Life is elsewhere', '<qty>' => '5'})
15
-
16
- doc_string_with_replaced_arg.to_step_definition_arg.should == "Life is elsewhere\n5\n"
17
- end
18
-
19
- it "should not change the original doc_string" do
20
- doc_string_with_replaced_arg = @ps.arguments_replaced({'<book>' => 'Life is elsewhere'})
21
-
22
- @ps.to_s.should_not include("Life is elsewhere")
23
- end
24
-
25
- it "should replaced nil with empty string" do
26
- ps = DocString.new("'<book>'", '')
27
- doc_string_with_replaced_arg = ps.arguments_replaced({'<book>' => nil})
28
-
29
- doc_string_with_replaced_arg.to_step_definition_arg.should == "''"
30
- end
31
-
32
- it "should recognise when just a subset of a cell is delimited" do
33
- @ps.should have_text('<qty>')
34
- end
35
-
36
- end
37
-
38
- end
39
- end
40
- end
@@ -1,72 +0,0 @@
1
- require 'cucumber/ast'
2
- require 'cucumber/step_mother'
3
- require 'gherkin/formatter/model'
4
-
5
- module Cucumber
6
- module Ast
7
- module FeatureFactory
8
- class MyWorld
9
- def flunk
10
- raise "I flunked"
11
- end
12
- end
13
-
14
- def create_feature(dsl)
15
- dsl.Given /^a (.*) step with an inline arg:$/ do |what, table|
16
- end
17
- dsl.Given /^a (.*) step$/ do |what|
18
- flunk if what == 'failing'
19
- end
20
- dsl.World do
21
- MyWorld.new
22
- end
23
-
24
- table = Ast::Table.new([
25
- %w{1 22 333},
26
- %w{4444 55555 666666}
27
- ])
28
- doc_string = Ast::DocString.new(%{\n I like\nCucumber sandwich\n}, '')
29
- location = Ast::Location.new('foo.feature', 2)
30
- language = double.as_null_object
31
-
32
- background = Ast::Background.new(
33
- language,
34
- location,
35
- Ast::Comment.new(""),
36
- "Background:",
37
- "",
38
- "",
39
- [
40
- Step.new(language, location.on_line(3), "Given", "a passing step")
41
- ]
42
- )
43
-
44
- location = Location.new('features/pretty_printing.feature', 0)
45
-
46
- Ast::Feature.new(
47
- location,
48
- background,
49
- Ast::Comment.new("# My feature comment\n"),
50
- Ast::Tags.new(6, [Gherkin::Formatter::Model::Tag.new('one', 6), Gherkin::Formatter::Model::Tag.new('two', 6)]),
51
- "Feature",
52
- "Pretty printing",
53
- "",
54
- [Ast::Scenario.new(
55
- language,
56
- location.on_line(9),
57
- background,
58
- Ast::Comment.new(" # My scenario comment \n# On two lines \n"),
59
- Ast::Tags.new(8, [Gherkin::Formatter::Model::Tag.new('three', 8), Gherkin::Formatter::Model::Tag.new('four', 8)]),
60
- Ast::Tags.new(1, []),
61
- "Scenario:", "A Scenario", "",
62
- [
63
- Step.new(language, location.on_line(10), "Given", "a passing step with an inline arg:", table),
64
- Step.new(language, location.on_line(11), "Given", "a happy step with an inline arg:", doc_string),
65
- Step.new(language, location.on_line(12), "Given", "a failing step")
66
- ]
67
- )]
68
- )
69
- end
70
- end
71
- end
72
- end
@@ -1,63 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/ast/feature_factory'
3
-
4
- module Cucumber
5
- module Ast
6
- describe Feature do
7
- include FeatureFactory
8
-
9
- it "should convert to sexp" do
10
- step_mother = Cucumber::Runtime.new
11
- step_mother.load_programming_language('rb')
12
- dsl = Object.new
13
- dsl.extend Cucumber::RbSupport::RbDsl
14
-
15
- feature = create_feature(dsl)
16
- if Cucumber::WINDOWS
17
- feature_file_path = "features\\pretty_printing.feature"
18
- else
19
- feature_file_path = "features/pretty_printing.feature"
20
- end
21
- feature.to_sexp.should ==
22
- [:feature,
23
- feature_file_path,
24
- "Pretty printing",
25
- [:comment, "# My feature comment\n"],
26
- [:tag, "one"],
27
- [:tag, "two"],
28
- [:background, 2, 'Background:',
29
- [:step, 3, "Given", "a passing step"]],
30
- [:scenario, 9, "Scenario:",
31
- "A Scenario",
32
- [:comment, " # My scenario comment \n# On two lines \n"],
33
- [:tag, "three"],
34
- [:tag, "four"],
35
- [:step_invocation, 3, "Given", "a passing step"], # From the background
36
- [:step_invocation, 10, "Given", "a passing step with an inline arg:",
37
- [:table,
38
- [:row, -1,
39
- [:cell, "1"], [:cell, "22"], [:cell, "333"]],
40
- [:row, -1,
41
- [:cell, "4444"], [:cell, "55555"], [:cell, "666666"]]]],
42
- [:step_invocation, 11, "Given", "a happy step with an inline arg:",
43
- [:doc_string, "\n I like\nCucumber sandwich\n"]],
44
- [:step_invocation, 12, "Given", "a failing step"]]]
45
- end
46
-
47
- it "should store OS specific file paths" do
48
- step_mother = Cucumber::Runtime.new
49
- step_mother.load_programming_language('rb')
50
- dsl = Object.new
51
- dsl.extend Cucumber::RbSupport::RbDsl
52
- feature = create_feature(dsl)
53
-
54
- if Cucumber::WINDOWS
55
- feature.file.should == 'features\pretty_printing.feature'
56
- else
57
- feature.file.should == 'features/pretty_printing.feature'
58
- end
59
- end
60
-
61
- end
62
- end
63
- end
@@ -1,51 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/ast/feature_factory'
3
-
4
- module Cucumber
5
- module Ast
6
- describe Features do
7
- it "has a step_count" do
8
- parse_feature(<<-GHERKIN)
9
- Feature:
10
- Background:
11
- Given step 1
12
- And step 2
13
-
14
- Scenario:
15
- Given step 3
16
- And step 4
17
- And step 5
18
-
19
- Scenario Outline:
20
- Given step <n>
21
- And another step
22
-
23
- Examples:
24
- | n |
25
- | 6 |
26
- | 7 |
27
-
28
- Examples:
29
- | n |
30
- | 8 |
31
- GHERKIN
32
-
33
- features.step_count.should == (2 + 3) + (3 * (2 + 2))
34
- end
35
-
36
- def parse_feature(gherkin)
37
- path = 'features/test.feature'
38
- builder = Cucumber::Parser::GherkinBuilder.new(path)
39
- parser = Gherkin::Parser::Parser.new(builder, true, "root", false)
40
- parser.parse(gherkin, path, 0)
41
- builder.language = parser.i18n_language
42
- feature = builder.result
43
- features.add_feature(feature)
44
- end
45
-
46
- let(:features) { Features.new }
47
-
48
- end
49
- end
50
- end
51
-
@@ -1,21 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cucumber::Ast
4
- describe OutlineTable do
5
- describe OutlineTable::ExampleRow do
6
- describe "a header row" do
7
- before(:each) do
8
- @row = OutlineTable::ExampleRow.new(
9
- double('table', :index => 0),
10
- [double('cell', :status= => nil)]
11
- )
12
- end
13
-
14
- it "should raise an error if you try to call #failed?" do
15
- @row.accept_plain double('visitor', :visit_table_cell => nil)
16
- lambda{ @row.failed? }.should raise_error(NoMethodError, /cannot pass or fail/)
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,74 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/step_mother'
3
- require 'cucumber/ast'
4
- require 'cucumber/core_ext/string'
5
- require 'cucumber/rb_support/rb_language'
6
-
7
- module Cucumber
8
- module Ast
9
- describe ScenarioOutline do
10
- before do
11
- @step_mother = Cucumber::Runtime.new
12
- @step_mother.load_programming_language('rb')
13
- @dsl = Object.new
14
- @dsl.extend(Cucumber::RbSupport::RbDsl)
15
-
16
- @dsl.Given(/^there are (\d+) cucumbers$/) do |n|
17
- @initial = n.to_i
18
- end
19
- @dsl.When(/^I eat (\d+) cucumbers$/) do |n|
20
- @eaten = n.to_i
21
- end
22
- @dsl.Then(/^I should have (\d+) cucumbers$/) do |n|
23
- (@initial - @eaten).should == n.to_i
24
- end
25
- @dsl.Then(/^I should have (\d+) cucumbers in my belly$/) do |n|
26
- @eaten.should == n.to_i
27
- end
28
-
29
- location = Ast::Location.new('foo.feature', 19)
30
- language = double
31
-
32
- @scenario_outline = ScenarioOutline.new(
33
- language,
34
- location,
35
- background=Ast::EmptyBackground.new,
36
- Comment.new(""),
37
- Tags.new(18, []),
38
- Tags.new(0, []),
39
- "Scenario:", "My outline", "",
40
- [
41
- Step.new(language, location.on_line(20), 'Given', 'there are <start> cucumbers'),
42
- Step.new(language, location.on_line(21), 'When', 'I eat <eat> cucumbers'),
43
- Step.new(language, location.on_line(22), 'Then', 'I should have <left> cucumbers'),
44
- Step.new(language, location.on_line(23), 'And', 'I should have <eat> cucumbers in my belly')
45
- ],
46
- [
47
- [
48
- [
49
- location.on_line(24),
50
- Comment.new("#Mmmm... cucumbers\n"),
51
- 'Examples:',
52
- 'First table',
53
- '',
54
- [
55
- %w{start eat left},
56
- %w{12 5 7},
57
- %w{20 6 14}
58
- ]
59
- ],
60
- Gherkin::Formatter::Model::Examples.new(nil, nil, nil, nil, nil, nil, nil, nil)
61
- ]
62
- ]
63
- )
64
- end
65
-
66
- it "should replace all variables and call outline once for each table row" do
67
- visitor = TreeWalker.new(@step_mother)
68
- visitor.should_receive(:visit_table_row).exactly(3).times
69
- @scenario_outline.feature = double.as_null_object
70
- visitor.visit_feature_element(@scenario_outline)
71
- end
72
- end
73
- end
74
- end
@@ -1,68 +0,0 @@
1
- require 'spec_helper'
2
- require 'cucumber/step_mother'
3
- require 'cucumber/ast'
4
- require 'cucumber/core_ext/string'
5
-
6
- module Cucumber
7
- module Ast
8
- describe Step do
9
- let(:language) { double }
10
-
11
- it "should replace arguments in name" do
12
- step = Step.new(language, 1, 'Given', 'a <color> cucumber')
13
-
14
- invocation_table = Table.new([
15
- %w{color taste},
16
- %w{green juicy}
17
- ])
18
- cells = invocation_table.cells_rows[1]
19
- step_invocation = step.step_invocation_from_cells(cells)
20
-
21
- step_invocation.name.should == 'a green cucumber'
22
- end
23
-
24
- it "should use empty string for the replacement of arguments in name when replace value is nil" do
25
- step = Step.new(language, 1, 'Given', 'a <color>cucumber')
26
-
27
- invocation_table = Table.new([
28
- ['color'],
29
- [nil]
30
- ])
31
- cells = invocation_table.cells_rows[1]
32
- step_invocation = step.step_invocation_from_cells(cells)
33
-
34
- step_invocation.name.should == 'a cucumber'
35
- end
36
-
37
- it "should replace arguments in table arg" do
38
- arg_table = Table.new([%w{taste_<taste> color_<color>}])
39
-
40
- step = Step.new(language, 1, 'Given', 'a <color> cucumber', arg_table)
41
-
42
- invocation_table = Table.new([
43
- %w{color taste},
44
- %w{green juicy}
45
- ])
46
- cells = invocation_table.cells_rows[1]
47
- step_invocation = step.step_invocation_from_cells(cells)
48
-
49
- step_invocation.instance_variable_get('@multiline_arg').raw.should == [%w{taste_juicy color_green}]
50
- end
51
-
52
- it "should replace arguments in py string arg" do
53
- doc_string = DocString.new('taste_<taste> color_<color>', '')
54
-
55
- step = Step.new(language, 1, 'Given', 'a <color> cucumber', doc_string)
56
-
57
- invocation_table = Table.new([
58
- %w{color taste},
59
- %w{green juicy}
60
- ])
61
- cells = invocation_table.cells_rows[1]
62
- step_invocation = step.step_invocation_from_cells(cells)
63
-
64
- step_invocation.instance_variable_get('@multiline_arg').to_step_definition_arg.should == 'taste_juicy color_green'
65
- end
66
- end
67
- end
68
- end
@@ -1,19 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cucumber::Ast
4
- describe TreeWalker do
5
- let(:tree_walker) do
6
- TreeWalker.new(nil, [double('listener', :before_visit_features => nil)])
7
- end
8
- let(:features) { double('features', :accept => nil) }
9
-
10
- it "should visit features" do
11
- tree_walker.should_not_receive(:warn)
12
- tree_walker.visit_features(features)
13
- end
14
-
15
- it "should return self" do
16
- tree_walker.visit_features(features).should == tree_walker
17
- end
18
- end
19
- end
@@ -1,15 +0,0 @@
1
- require 'spec_helper'
2
-
3
- module Cucumber
4
- describe Broadcaster do
5
- before do
6
- @receiver = double('receiver')
7
- @broadcaster = Broadcaster.new([@receiver])
8
- end
9
-
10
- it "should broadcast methods to registered objects" do
11
- @receiver.should_receive(:konbanwa).with('good evening')
12
- @broadcaster.konbanwa('good evening')
13
- end
14
- end
15
- end