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
@@ -0,0 +1,87 @@
1
+ require 'spec_helper'
2
+ require 'tmpdir'
3
+
4
+ module Cucumber
5
+ describe ProjectInitializer, :isolated_home => true do
6
+ let(:command_line_config) { ProjectInitializer.new }
7
+
8
+ before do
9
+ allow(command_line_config).to receive(:puts)
10
+ end
11
+
12
+ context "no files created" do
13
+ around(:example) do |example|
14
+
15
+ dir = Dir.mktmpdir
16
+ original_dir = Dir.pwd
17
+ begin
18
+ FileUtils.cd dir
19
+ example.call
20
+ ensure
21
+ FileUtils.cd original_dir
22
+ FileUtils.rm_rf dir
23
+ end
24
+ end
25
+
26
+ it "should create features directory" do
27
+ expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features$)
28
+ command_line_config.run
29
+ end
30
+
31
+ it "should create step_definitions directory" do
32
+ expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/step_definitions$)
33
+ command_line_config.run
34
+ end
35
+
36
+ it "should create support directory" do
37
+ expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support$)
38
+ command_line_config.run
39
+ end
40
+
41
+ it "should create env.rb directory" do
42
+ expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support/env.rb$)
43
+ command_line_config.run
44
+ end
45
+
46
+ end
47
+
48
+ context "files created" do
49
+ around(:example) do |example|
50
+ dir = Dir.mktmpdir
51
+ FileUtils.mkdir_p "#{dir}/features"
52
+ FileUtils.mkdir_p "#{dir}/features/step_definitions"
53
+ FileUtils.mkdir_p "#{dir}/features/support"
54
+ FileUtils.touch "#{dir}/features/support/env.rb"
55
+ original_dir = Dir.pwd
56
+ begin
57
+ FileUtils.cd dir
58
+ example.call
59
+ ensure
60
+ FileUtils.cd original_dir
61
+ FileUtils.rm_rf dir
62
+ end
63
+ end
64
+
65
+ it "should not create features directory" do
66
+ expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features$)
67
+ command_line_config.run
68
+ end
69
+
70
+ it "should not create step_definitions directory" do
71
+ expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/step_definitions$)
72
+ command_line_config.run
73
+ end
74
+
75
+ it "should not create support directory" do
76
+ expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support$)
77
+ command_line_config.run
78
+ end
79
+
80
+ it "should not create env.rb directory" do
81
+ expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support/env.rb$)
82
+ command_line_config.run
83
+ end
84
+
85
+ end
86
+ end
87
+ end
@@ -4,59 +4,50 @@ require 'rake'
4
4
 
5
5
  module Cucumber
6
6
  module Rake
7
-
8
7
  describe Task::ForkedCucumberRunner do
9
-
10
8
  let(:libs) { ['lib'] }
11
9
  let(:binary) { Cucumber::BINARY }
12
10
  let(:cucumber_opts) { ['--cuke-option'] }
13
11
  let(:feature_files) { ['./some.feature'] }
14
12
 
15
13
  context "when running with bundler" do
16
-
17
14
  let(:bundler) { true }
18
15
 
19
16
  subject { Task::ForkedCucumberRunner.new(
20
17
  libs, binary, cucumber_opts, bundler, feature_files) }
21
18
 
22
19
  it "does use bundler if bundler is set to true" do
23
- subject.use_bundler.should be_true
20
+ expect(subject.use_bundler).to be true
24
21
  end
25
22
 
26
23
  it "uses bundle exec to find cucumber and libraries" do
27
- subject.cmd.should == [Cucumber::RUBY_BINARY,
28
- '-S',
29
- 'bundle',
30
- 'exec',
31
- 'cucumber',
32
- '--cuke-option'] + feature_files
24
+ expect(subject.cmd).to eq [Cucumber::RUBY_BINARY,
25
+ '-S',
26
+ 'bundle',
27
+ 'exec',
28
+ 'cucumber',
29
+ '--cuke-option'] + feature_files
33
30
  end
34
-
35
31
  end
36
32
 
37
33
  context "when running without bundler" do
38
-
39
34
  let(:bundler) { false }
40
35
 
41
36
  subject { Task::ForkedCucumberRunner.new(
42
37
  libs, binary, cucumber_opts, bundler, feature_files) }
43
38
 
44
39
  it "does not use bundler if bundler is set to false" do
45
- subject.use_bundler.should be_false
40
+ expect(subject.use_bundler).to be false
46
41
  end
47
42
 
48
43
  it "uses well known cucumber location and specified libraries" do
49
- subject.cmd.should == [Cucumber::RUBY_BINARY,
50
- "-I",
51
- "\"lib\"",
52
- "\"#{Cucumber::BINARY }\"",
53
- "--cuke-option"] + feature_files
44
+ expect(subject.cmd).to eq [Cucumber::RUBY_BINARY,
45
+ "-I",
46
+ "\"lib\"",
47
+ "\"#{Cucumber::BINARY }\"",
48
+ "--cuke-option"] + feature_files
54
49
  end
55
-
56
50
  end
57
-
58
-
59
51
  end
60
-
61
52
  end
62
53
  end
@@ -1,5 +1,4 @@
1
1
  require 'spec_helper'
2
- require 'cucumber/step_mother'
3
2
  require 'cucumber/rb_support/rb_language'
4
3
 
5
4
  module Cucumber
@@ -19,37 +18,43 @@ module Cucumber
19
18
  let(:snippet) { double.as_null_object }
20
19
 
21
20
  it "creates a regexp Snippet class by default" do
22
- Snippet::Regexp.should_receive(:new).and_return(snippet)
21
+ expect(Snippet::Regexp).to receive(:new) { snippet }
22
+
23
23
  rb.snippet_text('Given', 'A "string" with 4 spaces', nil)
24
24
  end
25
25
 
26
26
  it "creates a regexp Snippet class explicitly" do
27
- Snippet::Regexp.should_receive(:new).and_return(snippet)
27
+ expect(Snippet::Regexp).to receive(:new) { snippet }
28
+
28
29
  rb.snippet_text('Given', 'A "string" with 4 spaces', nil, :regexp)
29
30
  end
30
31
 
31
32
  it "creates a classic Snippet class" do
32
- Snippet::Classic.should_receive(:new).and_return(snippet)
33
+ expect(Snippet::Classic).to receive(:new) { snippet }
34
+
33
35
  rb.snippet_text('Given', 'A "string" with 4 spaces', nil, :classic)
34
36
  end
35
37
 
36
38
  it "creates a percent Snippet class" do
37
- Snippet::Percent.should_receive(:new).and_return(snippet)
39
+ expect(Snippet::Percent).to receive(:new) { snippet }
40
+
38
41
  rb.snippet_text('Given', 'A "string" with 4 spaces', nil, :percent)
39
42
  end
40
43
 
41
44
  it "passes all parameters to Snippet contructor" do
42
45
  code_keyword, pattern, multiline_argument_class = double, double, double
43
- Snippet::Regexp.should_receive(:new).with(code_keyword, pattern, multiline_argument_class)
46
+
47
+ expect(Snippet::Regexp).to receive(:new).with(code_keyword, pattern, multiline_argument_class)
48
+
44
49
  rb.snippet_text(code_keyword, pattern, multiline_argument_class)
45
50
  end
46
51
 
47
52
  it "renders the snippet" do
48
- Snippet::Regexp.stub(:new => snippet)
49
- snippet.should_receive(:to_s)
53
+ allow(Snippet::Regexp).to receive(:new) { snippet }
54
+ expect(snippet).to receive(:to_s)
55
+
50
56
  rb.snippet_text('Given', 'A "string" with 4 spaces', nil)
51
57
  end
52
-
53
58
  end
54
59
 
55
60
  describe "#load_code_file" do
@@ -69,29 +74,29 @@ module Cucumber
69
74
  end
70
75
 
71
76
  rb.load_code_file('tmp.rb')
72
- $foo.should == 1
77
+ expect($foo).to eq 1
73
78
 
74
79
  a_file_called('tmp.rb') do
75
80
  "$foo = 2"
76
81
  end
77
82
 
78
83
  rb.load_code_file('tmp.rb')
79
- $foo.should == 2
84
+
85
+ expect($foo).to eq 2
80
86
  end
81
87
  end
82
88
 
83
89
  describe "Handling the World" do
84
-
85
- it "should raise an error if the world is nil" do
90
+ it "raises an error if the world is nil" do
86
91
  dsl.World {}
87
92
 
88
93
  begin
89
- rb.before(nil)
94
+ rb.begin_scenario(nil)
90
95
  raise "Should fail"
91
96
  rescue RbSupport::NilWorld => e
92
- e.message.should == "World procs should never return nil"
93
- e.backtrace.length.should == 1
94
- e.backtrace[0].should =~ /spec\/cucumber\/rb_support\/rb_language_spec\.rb\:\d+\:in `World'/
97
+ expect(e.message).to eq "World procs should never return nil"
98
+ expect(e.backtrace.length).to eq 1
99
+ expect(e.backtrace[0]).to match(/spec\/cucumber\/rb_support\/rb_language_spec\.rb\:\d+\:in `World'/)
95
100
  end
96
101
  end
97
102
 
@@ -104,17 +109,19 @@ module Cucumber
104
109
  class ClassOne
105
110
  end
106
111
 
107
- it "should implicitly extend world with modules" do
112
+ it "implicitlys extend world with modules" do
108
113
  dsl.World(ModuleOne, ModuleTwo)
109
- rb.before(double('scenario').as_null_object)
114
+ rb.begin_scenario(double('scenario').as_null_object)
110
115
  class << rb.current_world
111
- included_modules.inspect.should =~ /ModuleOne/ # Workaround for RSpec/Ruby 1.9 issue with namespaces
112
- included_modules.inspect.should =~ /ModuleTwo/
116
+ extend RSpec::Matchers
117
+
118
+ expect(included_modules.inspect).to match(/ModuleOne/) # Workaround for RSpec/Ruby 1.9 issue with namespaces
119
+ expect(included_modules.inspect).to match(/ModuleTwo/)
113
120
  end
114
- rb.current_world.class.should == Object
121
+ expect(rb.current_world.class).to eq Object
115
122
  end
116
123
 
117
- it "should raise error when we try to register more than one World proc" do
124
+ it "raises error when we try to register more than one World proc" do
118
125
  expected_error = %{You can only pass a proc to #World once, but it's happening
119
126
  in 2 places:
120
127
 
@@ -126,47 +133,47 @@ or http://wiki.github.com/cucumber/cucumber/a-whole-new-world.
126
133
 
127
134
  }
128
135
  dsl.World { Hash.new }
129
- lambda do
130
- dsl.World { Array.new }
131
- end.should raise_error(RbSupport::MultipleWorld, /#{expected_error}/)
132
136
 
137
+ expect(-> {
138
+ dsl.World { Array.new }
139
+ }).to raise_error(RbSupport::MultipleWorld, /#{expected_error}/)
133
140
  end
134
141
  end
135
142
 
136
143
  describe "step argument transformations" do
137
-
138
144
  describe "without capture groups" do
139
145
  it "complains when registering with a with no transform block" do
140
- lambda do
146
+ expect(-> {
141
147
  dsl.Transform('^abc$')
142
- end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
148
+ }).to raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
143
149
  end
144
150
 
145
151
  it "complains when registering with a zero-arg transform block" do
146
- lambda do
152
+ expect(-> {
147
153
  dsl.Transform('^abc$') {42}
148
- end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
154
+ }).to raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
149
155
  end
150
156
 
151
157
  it "complains when registering with a splat-arg transform block" do
152
- lambda do
158
+ expect(-> {
153
159
  dsl.Transform('^abc$') {|*splat| 42 }
154
- end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
160
+ }).to raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
155
161
  end
156
162
 
157
163
  it "complains when transforming with an arity mismatch" do
158
- lambda do
164
+ expect(-> {
159
165
  dsl.Transform('^abc$') {|one, two| 42 }
160
166
  rb.execute_transforms(['abc'])
161
- end.should raise_error(Cucumber::ArityMismatchError)
167
+ }).to raise_error(Cucumber::ArityMismatchError)
162
168
  end
163
169
 
164
170
  it "allows registering a regexp pattern that yields the step_arg matched" do
165
171
  dsl.Transform(/^ab*c$/) {|arg| 42}
166
- rb.execute_transforms(['ab']).should == ['ab']
167
- rb.execute_transforms(['ac']).should == [42]
168
- rb.execute_transforms(['abc']).should == [42]
169
- rb.execute_transforms(['abbc']).should == [42]
172
+
173
+ expect(rb.execute_transforms(['ab'])).to eq ['ab']
174
+ expect(rb.execute_transforms(['ac'])).to eq [42]
175
+ expect(rb.execute_transforms(['abc'])).to eq [42]
176
+ expect(rb.execute_transforms(['abbc'])).to eq [42]
170
177
  end
171
178
 
172
179
  it "transforms times" do
@@ -174,83 +181,86 @@ or http://wiki.github.com/cucumber/cucumber/a-whole-new-world.
174
181
  dsl.Transform(/^(\d\d-\d\d-\d\d\d\d)$/) do |arg|
175
182
  Time.parse(arg)
176
183
  end
177
- rb.execute_transforms(['10-0E-1971']).should == ['10-0E-1971']
178
- rb.execute_transforms(['10-03-1971']).should == [Time.parse('10-03-1971')]
184
+ expect(rb.execute_transforms(['10-0E-1971'])).to eq ['10-0E-1971']
185
+ expect(rb.execute_transforms(['10-03-1971'])).to eq [Time.parse('10-03-1971')]
179
186
  end
180
187
  end
181
188
 
182
189
  describe "with capture groups" do
183
190
  it "complains when registering with a with no transform block" do
184
- lambda do
191
+ expect(-> {
185
192
  dsl.Transform('^a(.)c$')
186
- end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
193
+ }).to raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
187
194
  end
188
195
 
189
196
  it "complains when registering with a zero-arg transform block" do
190
- lambda do
197
+ expect(-> {
191
198
  dsl.Transform('^a(.)c$') { 42 }
192
- end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
199
+ }).to raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
193
200
  end
194
201
 
195
202
  it "complains when registering with a splat-arg transform block" do
196
- lambda do
203
+ expect(-> {
197
204
  dsl.Transform('^a(.)c$') {|*splat| 42 }
198
- end.should raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
205
+ }).to raise_error(Cucumber::RbSupport::RbTransform::MissingProc)
199
206
  end
200
207
 
201
208
  it "complains when transforming with an arity mismatch" do
202
- lambda do
209
+ expect(-> {
203
210
  dsl.Transform('^a(.)c$') {|one, two| 42 }
204
211
  rb.execute_transforms(['abc'])
205
- end.should raise_error(Cucumber::ArityMismatchError)
212
+ }).to raise_error(Cucumber::ArityMismatchError)
206
213
  end
207
214
 
208
215
  it "allows registering a regexp pattern that yields capture groups" do
209
216
  dsl.Transform(/^shape: (.+), color: (.+)$/) do |shape, color|
210
217
  {shape.to_sym => color.to_sym}
211
218
  end
212
- rb.execute_transforms(['shape: circle, color: blue']).should == [{:circle => :blue}]
213
- rb.execute_transforms(['shape: square, color: red']).should == [{:square => :red}]
214
- rb.execute_transforms(['not shape: square, not color: red']).should == ['not shape: square, not color: red']
219
+
220
+ expect(rb.execute_transforms(['shape: circle, color: blue'])).to eq [{:circle => :blue}]
221
+ expect(rb.execute_transforms(['shape: square, color: red'])).to eq [{:square => :red}]
222
+ expect(rb.execute_transforms(['not shape: square, not color: red'])).to eq ['not shape: square, not color: red']
215
223
  end
216
224
  end
217
225
 
218
226
  it "allows registering a string pattern" do
219
227
  dsl.Transform('^ab*c$') {|arg| 42}
220
- rb.execute_transforms(['ab']).should == ['ab']
221
- rb.execute_transforms(['ac']).should == [42]
222
- rb.execute_transforms(['abc']).should == [42]
223
- rb.execute_transforms(['abbc']).should == [42]
228
+
229
+ expect(rb.execute_transforms(['ab'])).to eq ['ab']
230
+ expect(rb.execute_transforms(['ac'])).to eq [42]
231
+ expect(rb.execute_transforms(['abc'])).to eq [42]
232
+ expect(rb.execute_transforms(['abbc'])).to eq [42]
224
233
  end
225
234
 
226
235
  it "gives match priority to transforms defined last" do
227
236
  dsl.Transform(/^transform_me$/) {|arg| :foo }
228
237
  dsl.Transform(/^transform_me$/) {|arg| :bar }
229
238
  dsl.Transform(/^transform_me$/) {|arg| :baz }
230
- rb.execute_transforms(['transform_me']).should == [:baz]
239
+
240
+ expect(rb.execute_transforms(['transform_me'])).to eq [:baz]
231
241
  end
232
242
 
233
243
  it "allows registering a transform which returns nil" do
234
244
  dsl.Transform('^ac$') {|arg| nil}
235
- rb.execute_transforms(['ab']).should == ['ab']
236
- rb.execute_transforms(['ac']).should == [nil]
245
+
246
+ expect(rb.execute_transforms(['ab'])).to eq ['ab']
247
+ expect(rb.execute_transforms(['ac'])).to eq [nil]
237
248
  end
238
249
  end
239
250
 
240
251
  describe "hooks" do
241
-
242
- it "should find before hooks" do
252
+ it "finds before hooks" do
243
253
  fish = dsl.Before('@fish'){}
244
254
  meat = dsl.Before('@meat'){}
245
255
 
246
256
  scenario = double('Scenario')
247
- scenario.should_receive(:accept_hook?).with(fish).and_return(true)
248
- scenario.should_receive(:accept_hook?).with(meat).and_return(false)
249
257
 
250
- rb.hooks_for(:before, scenario).should == [fish]
258
+ expect(scenario).to receive(:accept_hook?).with(fish) { true }
259
+ expect(scenario).to receive(:accept_hook?).with(meat) { false }
260
+ expect(rb.hooks_for(:before, scenario)).to eq [fish]
251
261
  end
252
262
 
253
- it "should find around hooks" do
263
+ it "finds around hooks" do
254
264
  a = dsl.Around do |scenario, block|
255
265
  end
256
266
 
@@ -258,13 +268,12 @@ or http://wiki.github.com/cucumber/cucumber/a-whole-new-world.
258
268
  end
259
269
 
260
270
  scenario = double('Scenario')
261
- scenario.should_receive(:accept_hook?).with(a).and_return(true)
262
- scenario.should_receive(:accept_hook?).with(b).and_return(false)
263
271
 
264
- rb.hooks_for(:around, scenario).should == [a]
272
+ expect(scenario).to receive(:accept_hook?).with(a) { true }
273
+ expect(scenario).to receive(:accept_hook?).with(b) { false }
274
+ expect(rb.hooks_for(:around, scenario)).to eq [a]
265
275
  end
266
276
  end
267
-
268
277
  end
269
278
  end
270
279
  end