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
@@ -4,34 +4,35 @@ module Cucumber
4
4
  describe Runtime::SupportCode do
5
5
  let(:user_interface) { double('user interface') }
6
6
  subject { Runtime::SupportCode.new(user_interface, options) }
7
- let(:options) { {} }
7
+ let(:options) { {} }
8
8
  let(:dsl) do
9
9
  @rb = subject.load_programming_language('rb')
10
10
  Object.new.extend(RbSupport::RbDsl)
11
11
  end
12
12
 
13
- it "should format step names" do
13
+ it "formats step names" do
14
14
  dsl.Given(/it (.*) in (.*)/) { |what, month| }
15
15
  dsl.Given(/nope something else/) { |what, month| }
16
16
 
17
17
  format = subject.step_match("it snows in april").format_args("[%s]")
18
- format.should == "it [snows] in [april]"
18
+
19
+ expect(format).to eq "it [snows] in [april]"
19
20
  end
20
21
 
21
- it "should cache step match results" do
22
+ it "caches step match results" do
22
23
  dsl.Given(/it (.*) in (.*)/) { |what, month| }
23
24
 
24
25
  step_match = subject.step_match("it snows in april")
25
26
 
26
- @rb.should_not_receive :step_matches
27
+ expect(@rb).not_to receive(:step_matches)
27
28
  second_step_match = subject.step_match("it snows in april")
28
29
 
29
- step_match.should equal(second_step_match)
30
+ expect(step_match).to equal(second_step_match)
30
31
  end
31
32
 
32
33
  describe "resolving step defintion matches" do
33
34
 
34
- it "should raise Ambiguous error with guess hint when multiple step definitions match" do
35
+ it "raises Ambiguous error with guess hint when multiple step definitions match" do
35
36
  expected_error = %{Ambiguous match of "Three blind mice":
36
37
 
37
38
  spec/cucumber/runtime/support_code_spec.rb:\\d+:in `/Three (.*) mice/'
@@ -42,15 +43,15 @@ You can run again with --guess to make Cucumber be more smart about it
42
43
  dsl.Given(/Three (.*) mice/) {|disability|}
43
44
  dsl.Given(/Three blind (.*)/) {|animal|}
44
45
 
45
- lambda do
46
+ expect(-> {
46
47
  subject.step_match("Three blind mice")
47
- end.should raise_error(Ambiguous, /#{expected_error}/)
48
+ }).to raise_error(Ambiguous, /#{expected_error}/)
48
49
  end
49
50
 
50
51
  describe "when --guess is used" do
51
52
  let(:options) { {:guess => true} }
52
53
 
53
- it "should not show --guess hint" do
54
+ it "does not show --guess hint" do
54
55
  expected_error = %{Ambiguous match of "Three cute mice":
55
56
 
56
57
  spec/cucumber/runtime/support_code_spec.rb:\\d+:in `/Three (.*) mice/'
@@ -60,64 +61,63 @@ spec/cucumber/runtime/support_code_spec.rb:\\d+:in `/Three cute (.*)/'
60
61
  dsl.Given(/Three (.*) mice/) {|disability|}
61
62
  dsl.Given(/Three cute (.*)/) {|animal|}
62
63
 
63
- lambda do
64
+ expect(-> {
64
65
  subject.step_match("Three cute mice")
65
- end.should raise_error(Ambiguous, /#{expected_error}/)
66
+ }).to raise_error(Ambiguous, /#{expected_error}/)
66
67
  end
67
68
 
68
- it "should not raise Ambiguous error when multiple step definitions match" do
69
+ it "does not raise Ambiguous error when multiple step definitions match" do
69
70
  dsl.Given(/Three (.*) mice/) {|disability|}
70
71
  dsl.Given(/Three (.*)/) {|animal|}
71
72
 
72
- lambda do
73
+ expect(-> {
73
74
  subject.step_match("Three blind mice")
74
- end.should_not raise_error
75
+ }).not_to raise_error
75
76
  end
76
77
 
77
- it "should not raise NoMethodError when guessing from multiple step definitions with nil fields" do
78
+ it "does not raise NoMethodError when guessing from multiple step definitions with nil fields" do
78
79
  dsl.Given(/Three (.*) mice( cannot find food)?/) {|disability, is_disastrous|}
79
80
  dsl.Given(/Three (.*)?/) {|animal|}
80
81
 
81
- lambda do
82
+ expect(-> {
82
83
  subject.step_match("Three blind mice")
83
- end.should_not raise_error
84
+ }).not_to raise_error
84
85
  end
85
86
 
86
- it "should pick right step definition when an equal number of capture groups" do
87
+ it "picks right step definition when an equal number of capture groups" do
87
88
  right = dsl.Given(/Three (.*) mice/) {|disability|}
88
89
  wrong = dsl.Given(/Three (.*)/) {|animal|}
89
90
 
90
- subject.step_match("Three blind mice").step_definition.should == right
91
+ expect(subject.step_match("Three blind mice").step_definition).to eq right
91
92
  end
92
93
 
93
- it "should pick right step definition when an unequal number of capture groups" do
94
+ it "picks right step definition when an unequal number of capture groups" do
94
95
  right = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
95
96
  wrong = dsl.Given(/Three (.*)/) {|animal|}
96
97
 
97
- subject.step_match("Three blind mice ran far").step_definition.should == right
98
+ expect(subject.step_match("Three blind mice ran far").step_definition).to eq right
98
99
  end
99
100
 
100
- it "should pick most specific step definition when an unequal number of capture groups" do
101
+ it "picks most specific step definition when an unequal number of capture groups" do
101
102
  general = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
102
103
  specific = dsl.Given(/Three blind mice ran far/) do; end
103
104
  more_specific = dsl.Given(/^Three blind mice ran far$/) do; end
104
105
 
105
- subject.step_match("Three blind mice ran far").step_definition.should == more_specific
106
+ expect(subject.step_match("Three blind mice ran far").step_definition).to eq more_specific
106
107
  end
107
108
  end
108
109
 
109
- it "should raise Undefined error when no step definitions match" do
110
- lambda do
110
+ it "raises Undefined error when no step definitions match" do
111
+ expect(-> {
111
112
  subject.step_match("Three blind mice")
112
- end.should raise_error(Undefined)
113
+ }).to raise_error(Undefined)
113
114
  end
114
115
 
115
116
  # http://railsforum.com/viewtopic.php?pid=93881
116
- it "should not raise Redundant unless it's really redundant" do
117
+ it "does not raise Redundant unless it's really redundant" do
117
118
  dsl.Given(/^(.*) (.*) user named '(.*)'$/) {|a,b,c|}
118
119
  dsl.Given(/^there is no (.*) user named '(.*)'$/) {|a,b|}
119
120
  end
120
121
  end
121
-
122
122
  end
123
123
  end
@@ -1,45 +1,46 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  module Cucumber
4
- describe Runtime do
5
- subject { Runtime.new(options) }
6
- let(:options) { {} }
7
-
8
- describe "#features_paths" do
9
- let(:options) { {:paths => ['foo/bar/baz.feature', 'foo/bar/features/baz.feature', 'other_features'] } }
10
- it "returns the value from configuration.paths" do
11
- subject.features_paths.should == options[:paths]
12
- end
13
- end
4
+ describe Runtime do
5
+ subject { Runtime.new(options) }
6
+ let(:options) { {} }
14
7
 
15
- describe "#configure" do
16
- let(:support_code) { double(Runtime::SupportCode).as_null_object }
17
- let(:results) { double(Runtime::Results).as_null_object }
18
- let(:new_configuration) { double('New configuration')}
19
- before(:each) do
20
- Runtime::SupportCode.stub(:new => support_code)
21
- Runtime::Results.stub(:new => results)
22
- end
8
+ describe "#features_paths" do
9
+ let(:options) { {:paths => ['foo/bar/baz.feature', 'foo/bar/features/baz.feature', 'other_features'] } }
23
10
 
24
- it "tells the support_code and results about the new configuration" do
25
- support_code.should_receive(:configure).with(new_configuration)
26
- results.should_receive(:configure).with(new_configuration)
27
- subject.configure(new_configuration)
11
+ it "returns the value from configuration.paths" do
12
+ expect(subject.features_paths).to eq options[:paths]
13
+ end
28
14
  end
29
15
 
30
- it "replaces the existing configuration" do
31
- # not really sure how to test this. Maybe we should just expose
32
- # Runtime#configuration with an attr_reader?
33
- some_new_paths = ['foo/bar', 'baz']
34
- new_configuration.stub(:paths => some_new_paths)
35
- subject.configure(new_configuration)
36
- subject.features_paths.should == some_new_paths
37
- end
16
+ describe "#configure" do
17
+ let(:support_code) { double(Runtime::SupportCode).as_null_object }
18
+ let(:new_configuration) { double('New configuration')}
19
+
20
+ before(:each) do
21
+ allow(Runtime::SupportCode).to receive(:new) { support_code }
22
+ end
23
+
24
+ it "tells the support_code about the new configuration" do
25
+ expect(support_code).to receive(:configure).with(new_configuration)
26
+ subject.configure(new_configuration)
27
+ end
38
28
 
39
- it '#doc_string' do
40
- subject.doc_string('Text').should == 'Text'
29
+ it "replaces the existing configuration" do
30
+ # not really sure how to test this. Maybe we should just expose
31
+ # Runtime#configuration with an attr_reader?
32
+ some_new_paths = ['foo/bar', 'baz']
33
+
34
+ allow(new_configuration).to receive(:paths) { some_new_paths }
35
+
36
+ subject.configure(new_configuration)
37
+
38
+ expect(subject.features_paths).to eq some_new_paths
39
+ end
40
+
41
+ it '#doc_string' do
42
+ expect(subject.doc_string('Text')).to eq 'Text'
43
+ end
41
44
  end
42
45
  end
43
-
44
- end
45
46
  end
@@ -5,7 +5,7 @@ require 'cucumber/rb_support/rb_language'
5
5
 
6
6
  module Cucumber
7
7
  describe StepMatch do
8
- WORD = Cucumber::RUBY_1_8_7 ? '\w' : '[[:word:]]'
8
+ WORD = '[[:word:]]'
9
9
 
10
10
  before do
11
11
  @rb_language = RbSupport::RbLanguage.new(nil)
@@ -20,50 +20,60 @@ module Cucumber
20
20
  StepMatch.new(stepdef, name, nil, stepdef.arguments_from(name))
21
21
  end
22
22
 
23
- it "should format one group when we use Unicode" do
23
+ it "formats one group when we use Unicode" do
24
24
  m = step_match(/I (#{WORD}+) ok/, "I æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ ok")
25
- m.format_args("<span>%s</span>").should == "I <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> ok"
25
+
26
+ expect(m.format_args("<span>%s</span>")).to eq "I <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> ok"
26
27
  end
27
28
 
28
- it "should format several groups when we use Unicode" do
29
+ it "formats several groups when we use Unicode" do
29
30
  m = step_match(/I (#{WORD}+) (#{WORD}+) (#{WORD}+) this (#{WORD}+)/, "I ate æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ egg this morning")
30
- m.format_args("<span>%s</span>").should == "I <span>ate</span> <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> <span>egg</span> this <span>morning</span>"
31
+
32
+ expect(m.format_args("<span>%s</span>")).to eq "I <span>ate</span> <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> <span>egg</span> this <span>morning</span>"
31
33
  end
32
34
 
33
- it "should deal with Unicode both inside and outside arguments" do
34
- "Jæ vø ålsker døtte løndet".should =~ /Jæ (.+) ålsker (.+) løndet/
35
+ it "deals with Unicode both inside and outside arguments" do
36
+ expect("Jæ vø ålsker døtte løndet").to match /Jæ (.+) ålsker (.+) løndet/
37
+
35
38
  m = step_match(/Jæ (#{WORD}+) ålsker (#{WORD}+) løndet/, "Jæ vø ålsker døtte løndet")
36
- m.format_args("<span>%s</span>").should == "Jæ <span>vø</span> ålsker <span>døtte</span> løndet"
39
+
40
+ expect(m.format_args("<span>%s</span>")).to eq "Jæ <span>vø</span> ålsker <span>døtte</span> løndet"
37
41
  end
38
42
 
39
- it "should format groups with format string" do
43
+ it "formats groups with format string" do
40
44
  m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, "I ate 1 egg this morning")
41
- m.format_args("<span>%s</span>").should == "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
45
+
46
+ expect(m.format_args("<span>%s</span>")).to eq "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
42
47
  end
43
48
 
44
- it "should format groups with format string when there are dupes" do
49
+ it "formats groups with format string when there are dupes" do
45
50
  m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, "I bob 1 bo this bobs")
46
- m.format_args("<span>%s</span>").should == "I <span>bob</span> <span>1</span> <span>bo</span> this <span>bobs</span>"
51
+
52
+ expect(m.format_args("<span>%s</span>")).to eq "I <span>bob</span> <span>1</span> <span>bo</span> this <span>bobs</span>"
47
53
  end
48
54
 
49
- it "should format groups with block" do
55
+ it "formats groups with block" do
50
56
  m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, "I ate 1 egg this morning")
51
- m.format_args(&lambda{|m| "<span>#{m}</span>"}).should == "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
57
+
58
+ expect(m.format_args(&lambda{|m| "<span>#{m}</span>"})).to eq "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
52
59
  end
53
60
 
54
- it "should format groups with proc object" do
61
+ it "formats groups with proc object" do
55
62
  m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, "I ate 1 egg this morning")
56
- m.format_args(lambda{|m| "<span>#{m}</span>"}).should == "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
63
+
64
+ expect(m.format_args(lambda{|m| "<span>#{m}</span>"})).to eq "I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>"
57
65
  end
58
66
 
59
- it "should format groups even when first group is optional and not matched" do
67
+ it "formats groups even when first group is optional and not matched" do
60
68
  m = step_match(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
61
- m.format_args("<span>%s</span>").should == "I should be flashed '<span>Login failed.</span>'"
69
+
70
+ expect(m.format_args("<span>%s</span>")).to eq "I should be flashed '<span>Login failed.</span>'"
62
71
  end
63
72
 
64
- it "should format embedded groups" do
73
+ it "formats embedded groups" do
65
74
  m = step_match(/running( (\d+) times)? (\d+) meters/, "running 5 times 10 meters")
66
- m.format_args("<span>%s</span>").should == "running<span> 5 times</span> <span>10</span> meters"
75
+
76
+ expect(m.format_args("<span>%s</span>")).to eq "running<span> 5 times</span> <span>10</span> meters"
67
77
  end
68
78
  end
69
79
  end
@@ -18,8 +18,9 @@ module Cucumber
18
18
  host: localhost
19
19
  port: 54321
20
20
  }
21
- config.host.should == 'localhost'
22
- config.port.should == 54321
21
+
22
+ expect(config.host).to eq 'localhost'
23
+ expect(config.port).to eq 54321
23
24
  end
24
25
 
25
26
  it "reads the timeout for a specific message" do
@@ -29,7 +30,8 @@ module Cucumber
29
30
  timeout:
30
31
  invoke: 99
31
32
  }
32
- config.timeout('invoke').should == 99
33
+
34
+ expect(config.timeout('invoke')).to eq 99
33
35
  end
34
36
 
35
37
  it "reads the timeout for a connect message" do
@@ -39,7 +41,8 @@ module Cucumber
39
41
  timeout:
40
42
  connect: 99
41
43
  }
42
- config.timeout('connect').should == 99
44
+
45
+ expect(config.timeout('connect')).to eq 99
43
46
  end
44
47
 
45
48
  describe "a wire file with no timeouts specified" do
@@ -52,7 +55,7 @@ module Cucumber
52
55
 
53
56
  %w(invoke begin_scenario end_scenario).each do |message|
54
57
  it "sets the default timeout for '#{message}' to 120 seconds" do
55
- config.timeout(message).should == 120
58
+ expect(config.timeout(message)).to eq 120
56
59
  end
57
60
  end
58
61
  end
@@ -37,23 +37,27 @@ module Cucumber
37
37
  end
38
38
 
39
39
  it "re-raises a timeout error" do
40
- Timeout.stub(:timeout).and_raise(Timeout::Error.new(''))
41
- lambda { @connection.call_remote(nil, :foo, []) }.should raise_error(Timeout::Error)
40
+ allow(Timeout).to receive(:timeout).and_raise(Timeout::Error.new(''))
41
+ expect(-> { @connection.call_remote(nil, :foo, []) }).to raise_error(Timeout::Error)
42
42
  end
43
43
 
44
44
  it "ignores timeout errors when configured to do so" do
45
45
  @config.custom_timeout[:foo] = :never
46
- @socket.stub(:gets => @response)
46
+
47
+ allow(@socket).to receive(:gets) { @response }
48
+
47
49
  handler = double(:handle_response => :response)
48
- @connection.call_remote(handler, :foo, []).should == :response
50
+
51
+ expect(@connection.call_remote(handler, :foo, [])).to eq :response
49
52
  end
50
53
 
51
54
  it "raises an exception on remote connection closed" do
52
55
  @config.custom_timeout[:foo] = :never
53
- @socket.stub(:gets => nil)
54
- lambda {
55
- @connection.call_remote(nil, :foo, [])
56
- }.should raise_error(WireException, 'Remote Socket with localhost:3902 closed.')
56
+
57
+ allow(@socket).to receive(:gets)
58
+ expect(-> {
59
+ @connection.call_remote(nil, :foo, [])
60
+ }).to raise_error(WireException, 'Remote Socket with localhost:3902 closed.')
57
61
  end
58
62
  end
59
63
  end
@@ -7,15 +7,18 @@ module Cucumber
7
7
  before(:each) do
8
8
  @config = Configuration.new('host' => 'localhost', 'port' => 54321)
9
9
  end
10
+
10
11
  def exception
11
12
  WireException.new(@data, @config)
12
13
  end
14
+
13
15
  describe "with just a message" do
14
16
  before(:each) do
15
17
  @data = {'message' => 'foo'}
16
18
  end
17
- it "should #to_s as expected" do
18
- exception.to_s.should == "foo"
19
+
20
+ it "#to_s as expecteds" do
21
+ expect(exception.to_s).to eq "foo"
19
22
  end
20
23
  end
21
24
 
@@ -23,11 +26,13 @@ module Cucumber
23
26
  before(:each) do
24
27
  @data = {'message' => 'foo', 'exception' => 'Bar'}
25
28
  end
26
- it "should #to_s as expected" do
27
- exception.to_s.should == "foo"
29
+
30
+ it "#to_s as expecteds" do
31
+ expect(exception.to_s).to eq "foo"
28
32
  end
29
- it "#class.to_s should return the name of the exception" do
30
- exception.class.to_s.should == 'Bar from localhost:54321'
33
+
34
+ it "#class.to_s returns the name of the exception" do
35
+ expect(exception.class.to_s).to eq 'Bar from localhost:54321'
31
36
  end
32
37
  end
33
38
 
@@ -35,8 +40,9 @@ module Cucumber
35
40
  before(:each) do
36
41
  @data = {'message' => 'foo', 'backtrace' => ['foo', 'bar', 'baz']}
37
42
  end
38
- it "#backrace should return the custom backtrace" do
39
- exception.backtrace.should == ['foo', 'bar', 'baz']
43
+
44
+ it "#backrace returns the custom backtrace" do
45
+ expect(exception.backtrace).to eq ['foo', 'bar', 'baz']
40
46
  end
41
47
  end
42
48
  end
@@ -5,7 +5,7 @@ module Cucumber
5
5
  module WireSupport
6
6
  describe WireLanguage do
7
7
  def stub_wire_file!(filename, config)
8
- Configuration.stub(:from_file).with(filename).and_return config
8
+ allow(Configuration).to receive(:from_file).with(filename) { config }
9
9
  end
10
10
 
11
11
  describe "#load_code_file" do
@@ -14,16 +14,15 @@ module Cucumber
14
14
  end
15
15
 
16
16
  it "creates a RemoteSteps object" do
17
- Connection.should_receive(:new).with(:config)
18
- WireLanguage.new(nil).load_code_file('foo.wire')
17
+ expect(Connection).to receive(:new).with(:config)
18
+
19
+ WireLanguage.new.load_code_file('foo.wire')
19
20
  end
20
21
  end
21
22
 
22
23
  describe "#step_matches" do
23
24
  def stub_remote_steps!(config, attributes)
24
- Connection.should_receive(:new).
25
- with(config).
26
- and_return( double('remote_steps', attributes) )
25
+ expect(Connection).to receive(:new).with(config) { double('remote_steps', attributes) }
27
26
  end
28
27
 
29
28
  before(:each) do
@@ -31,15 +30,15 @@ module Cucumber
31
30
  stub_wire_file! 'two.wire', :config_two
32
31
  end
33
32
 
34
- it "should return the matches from each of the RemoteSteps" do
33
+ it "returns the matches from each of the RemoteSteps" do
35
34
  stub_remote_steps! :config_one, :step_matches => [:a, :b]
36
35
  stub_remote_steps! :config_two, :step_matches => [:c]
37
36
 
38
- wire_language = WireLanguage.new(nil)
37
+ wire_language = WireLanguage.new
39
38
  wire_language.load_code_file('one.wire')
40
39
  wire_language.load_code_file('two.wire')
41
40
 
42
- wire_language.step_matches('','').should == [:a, :b, :c]
41
+ expect(wire_language.step_matches('','')).to eq [:a, :b, :c]
43
42
  end
44
43
  end
45
44
  end
@@ -4,35 +4,39 @@ require 'cucumber/wire_support/wire_language'
4
4
  module Cucumber
5
5
  module WireSupport
6
6
  describe WirePacket do
7
-
8
7
  describe "#to_json" do
9
- it "should convert params to a JSON hash" do
8
+ it "converts params to a JSON hash" do
10
9
  packet = WirePacket.new('test_message', :foo => :bar)
11
- packet.to_json.should == "[\"test_message\",{\"foo\":\"bar\"}]"
10
+
11
+ expect(packet.to_json).to eq "[\"test_message\",{\"foo\":\"bar\"}]"
12
12
  end
13
13
 
14
- it "should not pass blank params" do
14
+ it "does not pass blank params" do
15
15
  packet = WirePacket.new('test_message')
16
- packet.to_json.should == "[\"test_message\"]"
16
+
17
+ expect(packet.to_json).to eq "[\"test_message\"]"
17
18
  end
18
19
  end
19
20
 
20
21
  describe ".parse" do
21
- it "should understand a raw packet containing null parameters" do
22
+ it "understands a raw packet containing null parameters" do
22
23
  packet = WirePacket.parse("[\"test_message\",null]")
23
- packet.message.should == 'test_message'
24
- packet.params.should be_nil
24
+
25
+ expect(packet.message).to eq 'test_message'
26
+ expect(packet.params).to be_nil
25
27
  end
26
28
 
27
- it "should understand a raw packet containing no parameters" do
29
+ it "understands a raw packet containing no parameters" do
28
30
  packet = WirePacket.parse("[\"test_message\"]")
29
- packet.message.should == 'test_message'
30
- packet.params.should be_nil
31
+
32
+ expect(packet.message).to eq 'test_message'
33
+ expect(packet.params).to be_nil
31
34
  end
32
35
 
33
- it "should understand a raw packet containging parameters data" do
36
+ it "understands a raw packet containging parameters data" do
34
37
  packet = WirePacket.parse("[\"test_message\",{\"foo\":\"bar\"}]")
35
- packet.params['foo'].should == 'bar'
38
+
39
+ expect(packet.params['foo']).to eq 'bar'
36
40
  end
37
41
  end
38
42
  end
@@ -2,45 +2,45 @@ require 'spec_helper'
2
2
  require 'cucumber/rb_support/rb_language'
3
3
 
4
4
  module Cucumber
5
- describe 'Pending' do
6
-
7
- before(:each) do
8
- l = RbSupport::RbLanguage.new(Runtime.new)
9
- l.begin_rb_scenario(double('scenario').as_null_object)
10
- @world = l.current_world
11
- end
12
-
13
- it 'should raise a Pending if no block is supplied' do
14
- lambda {
15
- @world.pending "TODO"
16
- }.should raise_error(Cucumber::Pending, /TODO/)
17
- end
5
+ describe 'Pending' do
6
+ before(:each) do
7
+ l = RbSupport::RbLanguage.new(Runtime.new)
8
+ l.begin_rb_scenario(double('scenario').as_null_object)
9
+ @world = l.current_world
10
+ end
18
11
 
19
- it 'should raise a Pending if a supplied block fails as expected' do
20
- lambda {
21
- @world.pending "TODO" do
22
- raise "oops"
23
- end
24
- }.should raise_error(Cucumber::Pending, /TODO/)
25
- end
12
+ it 'raises a Pending if no block is supplied' do
13
+ expect(-> {
14
+ @world.pending "TODO"
15
+ }).to raise_error(Cucumber::Pending, /TODO/)
16
+ end
26
17
 
27
- it 'should raise a Pending if a supplied block fails as expected with a double' do
28
- lambda {
29
- @world.pending "TODO" do
30
- m = double('thing')
31
- m.should_receive(:foo)
32
- RSpec::Mocks.verify
33
- end
34
- }.should raise_error(Cucumber::Pending, /TODO/)
35
- end
18
+ it 'raises a Pending if a supplied block fails as expected' do
19
+ expect(-> {
20
+ @world.pending "TODO" do
21
+ raise "oops"
22
+ end
23
+ }).to raise_error(Cucumber::Pending, /TODO/)
24
+ end
36
25
 
37
- it 'should raise a Pending if a supplied block starts working' do
38
- lambda {
39
- @world.pending "TODO" do
40
- # success!
41
- end
42
- }.should raise_error(Cucumber::Pending, /TODO/)
43
- end
26
+ it 'raises a Pending if a supplied block fails as expected with a double' do
27
+ expect do
28
+ @world.pending "TODO" do
29
+ m = double('thing')
30
+ expect(m).to receive(:foo)
31
+ RSpec::Mocks.verify
32
+ end
33
+ end.to raise_error(Cucumber::Pending, /TODO/)
34
+ # The teardown is needed so that the message expectation does not bubble up.
35
+ RSpec::Mocks.teardown
36
+ end
44
37
 
38
+ it 'raises a Pending if a supplied block starts working' do
39
+ expect(-> {
40
+ @world.pending "TODO" do
41
+ # success!
42
+ end
43
+ }).to raise_error(Cucumber::Pending, /TODO/)
45
44
  end
45
+ end
46
46
  end
@@ -0,0 +1,18 @@
1
+ if ENV['SIMPLECOV']
2
+ begin
3
+ # Suppress warnings in order not to pollute stdout which tests expectations rely on
4
+ $VERBOSE = nil if defined?(JRUBY_VERSION)
5
+
6
+ require 'simplecov'
7
+
8
+ SimpleCov.root(File.expand_path(File.dirname(__FILE__) + '/..'))
9
+ SimpleCov.start do
10
+ add_filter 'iso-8859-1_steps.rb'
11
+ add_filter '.-ruby-core/'
12
+ add_filter '/spec/'
13
+ add_filter '/features/'
14
+ end
15
+ rescue LoadError
16
+ warn("Unable to load simplecov")
17
+ end
18
+ end