cucumber 2.99.0 → 3.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 (395) hide show
  1. checksums.yaml +4 -4
  2. data/.cucumberproignore +6 -0
  3. data/.gitattributes +32 -0
  4. data/.github/ISSUE_TEMPLATE.md +1 -1
  5. data/.github/PULL_REQUEST_TEMPLATE.md +1 -0
  6. data/.rubocop.yml +13 -0
  7. data/.rubocop_todo.yml +991 -0
  8. data/.travis.yml +56 -10
  9. data/{History.md → CHANGELOG.md} +166 -32
  10. data/CONTRIBUTING.md +21 -1
  11. data/Gemfile +18 -5
  12. data/README.md +13 -4
  13. data/Rakefile +12 -2
  14. data/appveyor.yml +27 -0
  15. data/bin/cucumber +2 -1
  16. data/cucumber.gemspec +15 -10
  17. data/cucumber.yml +10 -11
  18. data/examples/i18n/Rakefile +1 -1
  19. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +8 -3
  20. data/examples/i18n/ar/lib/calculator.rb +2 -2
  21. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
  22. data/examples/i18n/bg/features/support/env.rb +6 -1
  23. data/examples/i18n/bg/lib/calculator.rb +2 -1
  24. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +10 -5
  25. data/examples/i18n/ca/lib/calculadora.rb +2 -2
  26. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +10 -5
  27. data/examples/i18n/cs/lib/calculator.rb +3 -3
  28. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +10 -5
  29. data/examples/i18n/da/lib/lommeregner.rb +2 -2
  30. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +10 -5
  31. data/examples/i18n/de/lib/calculator.rb +2 -2
  32. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +10 -5
  33. data/examples/i18n/el/lib/calculator.rb +2 -2
  34. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +9 -4
  35. data/examples/i18n/en/lib/calculator.rb +2 -2
  36. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
  37. data/examples/i18n/en-lol/features/support/env.rb +6 -2
  38. data/examples/i18n/en-lol/lib/basket.rb +2 -2
  39. data/examples/i18n/en-lol/lib/belly.rb +2 -2
  40. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +9 -4
  41. data/examples/i18n/eo/lib/calculator.rb +2 -2
  42. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +10 -5
  43. data/examples/i18n/es/lib/calculador.rb +2 -2
  44. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +10 -5
  45. data/examples/i18n/et/lib/kalkulaator.rb +3 -3
  46. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +9 -4
  47. data/examples/i18n/fi/lib/laskin.rb +1 -1
  48. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +8 -8
  49. data/examples/i18n/fr/features/support/env.rb +7 -2
  50. data/examples/i18n/fr/lib/calculatrice.rb +2 -2
  51. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +10 -5
  52. data/examples/i18n/he/lib/calculator.rb +1 -1
  53. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +9 -4
  54. data/examples/i18n/hi/lib/calculator.rb +1 -1
  55. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +9 -5
  56. data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
  57. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +10 -5
  58. data/examples/i18n/hu/lib/calculator.rb +1 -1
  59. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +10 -5
  60. data/examples/i18n/id/lib/calculator.rb +2 -2
  61. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +10 -5
  62. data/examples/i18n/it/lib/calcolatrice.rb +3 -3
  63. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +3 -3
  64. data/examples/i18n/ja/features/support/env.rb +7 -2
  65. data/examples/i18n/ja/lib/calculator.rb +2 -2
  66. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +10 -5
  67. data/examples/i18n/ko/lib/calculator.rb +2 -2
  68. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +10 -5
  69. data/examples/i18n/lt/lib/calculator.rb +2 -2
  70. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +10 -5
  71. data/examples/i18n/lv/lib/calculator.rb +2 -2
  72. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +3 -3
  73. data/examples/i18n/no/features/support/env.rb +7 -2
  74. data/examples/i18n/no/lib/kalkulator.rb +2 -2
  75. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +10 -5
  76. data/examples/i18n/pl/features/support/env.rb +6 -1
  77. data/examples/i18n/pl/lib/calculator.rb +2 -2
  78. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +3 -3
  79. data/examples/i18n/pt/features/support/env.rb +7 -2
  80. data/examples/i18n/pt/lib/calculadora.rb +1 -1
  81. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +11 -6
  82. data/examples/i18n/ro/lib/calculator.rb +1 -1
  83. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
  84. data/examples/i18n/ru/features/support/env.rb +6 -1
  85. data/examples/i18n/ru/lib/calculator.rb +2 -1
  86. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +10 -5
  87. data/examples/i18n/sk/lib/calculator.rb +2 -2
  88. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +3 -3
  89. data/examples/i18n/sr-Cyrl/features/support/env.rb +7 -2
  90. data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
  91. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +10 -5
  92. data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
  93. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +9 -4
  94. data/examples/i18n/sv/lib/kalkulator.rb +2 -2
  95. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +10 -5
  96. data/examples/i18n/tr/lib/hesap_makinesi.rb +2 -2
  97. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +4 -4
  98. data/examples/i18n/uk/features/support/env.rb +6 -1
  99. data/examples/i18n/uk/lib/calculator.rb +2 -1
  100. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
  101. data/examples/i18n/uz/features/support/env.rb +6 -1
  102. data/examples/i18n/uz/lib/calculator.rb +2 -1
  103. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +11 -6
  104. data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
  105. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +10 -5
  106. data/examples/i18n/zh-TW/lib/calculator.rb +2 -2
  107. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +3 -3
  108. data/examples/sinatra/features/step_definitions/add_steps.rb +4 -4
  109. data/examples/sinatra/features/support/env.rb +6 -1
  110. data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
  111. data/examples/tcl/features/support/env.rb +2 -1
  112. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
  113. data/examples/watir/features/step_definitions/search_steps.rb +6 -5
  114. data/examples/watir/features/support/env.rb +5 -1
  115. data/examples/watir/features/support/screenshots.rb +5 -5
  116. data/features/docs/api/list_step_defs_as_json.feature +21 -7
  117. data/features/docs/api/listen_for_events.feature +9 -8
  118. data/features/docs/api/run_cli_main_with_existing_runtime.feature +1 -0
  119. data/features/docs/cli/dry_run.feature +3 -0
  120. data/features/docs/cli/execute_with_tag_filter.feature +8 -6
  121. data/features/docs/cli/fail_fast.feature +2 -0
  122. data/features/docs/cli/help.feature +8 -0
  123. data/features/docs/{gherkin/language_help.feature → cli/i18n.feature} +6 -6
  124. data/features/docs/cli/randomize.feature +2 -2
  125. data/features/docs/cli/retry_failing_tests.feature +75 -15
  126. data/features/docs/cli/run_scenarios_matching_name.feature +1 -0
  127. data/features/docs/cli/specifying_multiple_formatters.feature +3 -0
  128. data/features/docs/cli/strict_mode.feature +6 -0
  129. data/features/docs/defining_steps/ambiguous_steps.feature +89 -0
  130. data/features/docs/defining_steps/nested_steps.feature +5 -1
  131. data/features/docs/defining_steps/nested_steps_i18n.feature +3 -0
  132. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
  133. data/features/docs/defining_steps/printing_messages.feature +1 -2
  134. data/features/docs/defining_steps/skip_scenario.feature +1 -34
  135. data/features/docs/defining_steps/snippets.feature +18 -18
  136. data/features/docs/events/gherkin_source_read_event.feature +43 -0
  137. data/features/docs/events/step_activated_event.feature +36 -0
  138. data/features/docs/events/step_definition_registered_event.feature +29 -0
  139. data/features/docs/events/test_case_finished_event.feature +35 -0
  140. data/features/docs/events/test_case_started_event.feature +54 -0
  141. data/features/docs/events/test_run_finished_event.feature +40 -0
  142. data/features/docs/events/test_run_started_event.feature +41 -0
  143. data/features/docs/events/test_step_finished_event.feature +47 -0
  144. data/features/docs/events/test_step_started_event.feature +43 -0
  145. data/features/docs/exception_in_after_hook.feature +3 -2
  146. data/features/docs/exception_in_after_step_hook.feature +2 -0
  147. data/features/docs/exception_in_around_hook.feature +2 -0
  148. data/features/docs/exception_in_before_hook.feature +3 -1
  149. data/features/docs/extending_cucumber/custom_formatter.feature +12 -48
  150. data/features/docs/formatters/json_formatter.feature +4 -4
  151. data/features/docs/formatters/junit_formatter.feature +7 -6
  152. data/features/docs/formatters/pretty_formatter.feature +1 -0
  153. data/features/docs/formatters/progress_formatter.feature +1 -0
  154. data/features/docs/formatters/rerun_formatter.feature +2 -0
  155. data/features/docs/formatters/summary_formatter.feature +35 -0
  156. data/features/docs/formatters/usage_formatter.feature +3 -0
  157. data/features/docs/getting_started.feature +2 -1
  158. data/features/docs/gherkin/background.feature +5 -5
  159. data/features/docs/gherkin/doc_strings.feature +2 -0
  160. data/features/docs/gherkin/expand_option_for_outlines.feature +1 -0
  161. data/features/docs/gherkin/outlines.feature +6 -4
  162. data/features/docs/gherkin/unicode_table.feature +2 -1
  163. data/features/docs/gherkin/using_descriptions.feature +1 -0
  164. data/features/docs/gherkin/using_star_notation.feature +1 -1
  165. data/features/docs/post_configuration_hook.feature +1 -17
  166. data/features/docs/rake_task.feature +5 -0
  167. data/features/docs/raketask.feature +3 -1
  168. data/features/docs/work_in_progress.feature +5 -2
  169. data/features/docs/writing_support_code/after_step_hooks.feature +3 -1
  170. data/features/docs/writing_support_code/around_hooks.feature +6 -0
  171. data/features/docs/writing_support_code/before_hook.feature +1 -0
  172. data/features/docs/writing_support_code/hook_order.feature +3 -1
  173. data/features/docs/writing_support_code/parameter_types.feature +53 -0
  174. data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
  175. data/features/docs/writing_support_code/world.feature +129 -0
  176. data/features/lib/step_definitions/aruba_steps.rb +5 -10
  177. data/features/lib/step_definitions/cli_steps.rb +4 -0
  178. data/features/lib/step_definitions/cucumber_steps.rb +9 -12
  179. data/features/lib/step_definitions/iso-8859-1_steps.rb +9 -5
  180. data/features/lib/step_definitions/json_steps.rb +2 -1
  181. data/features/lib/step_definitions/junit_steps.rb +2 -1
  182. data/features/lib/step_definitions/language_steps.rb +3 -2
  183. data/features/lib/step_definitions/profile_steps.rb +7 -6
  184. data/features/lib/step_definitions/retry_steps.rb +33 -13
  185. data/features/lib/step_definitions/ruby_steps.rb +2 -1
  186. data/features/lib/support/env.rb +3 -2
  187. data/features/lib/support/fake_wire_server.rb +17 -3
  188. data/features/lib/support/feature_factory.rb +2 -1
  189. data/features/lib/support/normalise_output.rb +14 -12
  190. data/features/lib/support/parameter_types.rb +5 -0
  191. data/gem_tasks/contributors.rake +10 -6
  192. data/gem_tasks/cov.rake +1 -0
  193. data/gem_tasks/downloads.rb +1 -0
  194. data/gem_tasks/environment.rake +2 -5
  195. data/gem_tasks/examples.rake +3 -2
  196. data/gem_tasks/fix_cr_lf.rake +19 -7
  197. data/gem_tasks/flog.rake +4 -3
  198. data/gem_tasks/rspec.rake +2 -1
  199. data/gem_tasks/sass.rake +2 -1
  200. data/lib/autotest/cucumber.rb +1 -0
  201. data/lib/autotest/cucumber_mixin.rb +17 -16
  202. data/lib/autotest/cucumber_rails.rb +1 -0
  203. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  204. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  205. data/lib/autotest/cucumber_rspec.rb +1 -0
  206. data/lib/autotest/cucumber_rspec2.rb +1 -0
  207. data/lib/autotest/discover.rb +3 -2
  208. data/lib/cucumber/cli/configuration.rb +12 -21
  209. data/lib/cucumber/cli/main.rb +8 -7
  210. data/lib/cucumber/cli/options.rb +341 -217
  211. data/lib/cucumber/cli/profile_loader.rb +26 -21
  212. data/lib/cucumber/cli/rerun_file.rb +1 -0
  213. data/lib/cucumber/configuration.rb +54 -37
  214. data/lib/cucumber/constantize.rb +2 -1
  215. data/lib/cucumber/core_ext/string.rb +2 -1
  216. data/lib/cucumber/deprecate.rb +4 -3
  217. data/lib/cucumber/encoding.rb +1 -0
  218. data/lib/cucumber/errors.rb +3 -1
  219. data/lib/cucumber/events/gherkin_source_read.rb +17 -0
  220. data/lib/cucumber/events/{step_match.rb → step_activated.rb} +5 -2
  221. data/lib/cucumber/events/step_definition_registered.rb +24 -0
  222. data/lib/cucumber/events/test_case_finished.rb +18 -0
  223. data/lib/cucumber/events/test_case_started.rb +15 -0
  224. data/lib/cucumber/events/test_run_finished.rb +12 -0
  225. data/lib/cucumber/events/test_run_started.rb +16 -0
  226. data/lib/cucumber/events/test_step_finished.rb +20 -0
  227. data/lib/cucumber/events/test_step_started.rb +17 -0
  228. data/lib/cucumber/events.rb +23 -3
  229. data/lib/cucumber/file_specs.rb +1 -0
  230. data/lib/cucumber/filters/activate_steps.rb +8 -3
  231. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  232. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  233. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  234. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  235. data/lib/cucumber/filters/broadcast_test_run_started_event.rb +27 -0
  236. data/lib/cucumber/filters/gated_receiver.rb +1 -0
  237. data/lib/cucumber/filters/prepare_world.rb +1 -0
  238. data/lib/cucumber/filters/quit.rb +1 -0
  239. data/lib/cucumber/filters/randomizer.rb +1 -0
  240. data/lib/cucumber/filters/retry.rb +4 -4
  241. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -0
  242. data/lib/cucumber/filters/tag_limits/verifier.rb +2 -1
  243. data/lib/cucumber/filters/tag_limits.rb +4 -3
  244. data/lib/cucumber/filters.rb +3 -0
  245. data/lib/cucumber/formatter/ansicolor.rb +9 -11
  246. data/lib/cucumber/formatter/backtrace_filter.rb +21 -8
  247. data/lib/cucumber/formatter/console.rb +72 -66
  248. data/lib/cucumber/formatter/console_counts.rb +44 -0
  249. data/lib/cucumber/formatter/console_issues.rb +58 -0
  250. data/lib/cucumber/formatter/duration.rb +2 -1
  251. data/lib/cucumber/formatter/duration_extractor.rb +1 -0
  252. data/lib/cucumber/formatter/fail_fast.rb +4 -2
  253. data/lib/cucumber/formatter/fanout.rb +1 -0
  254. data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
  255. data/lib/cucumber/formatter/html.rb +175 -249
  256. data/lib/cucumber/formatter/html_builder.rb +120 -0
  257. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -0
  258. data/lib/cucumber/formatter/inline-js.js +30 -0
  259. data/lib/cucumber/formatter/interceptor.rb +3 -2
  260. data/lib/cucumber/formatter/io.rb +2 -1
  261. data/lib/cucumber/formatter/json.rb +33 -30
  262. data/lib/cucumber/formatter/json_pretty.rb +1 -0
  263. data/lib/cucumber/formatter/junit.rb +26 -24
  264. data/lib/cucumber/formatter/legacy_api/adapter.rb +81 -69
  265. data/lib/cucumber/formatter/legacy_api/ast.rb +27 -22
  266. data/lib/cucumber/formatter/legacy_api/results.rb +7 -8
  267. data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +1 -0
  268. data/lib/cucumber/formatter/pretty.rb +24 -18
  269. data/lib/cucumber/formatter/progress.rb +55 -13
  270. data/lib/cucumber/formatter/rerun.rb +15 -18
  271. data/lib/cucumber/formatter/stepdefs.rb +1 -0
  272. data/lib/cucumber/formatter/steps.rb +2 -1
  273. data/lib/cucumber/formatter/summary.rb +43 -20
  274. data/lib/cucumber/formatter/unicode.rb +2 -1
  275. data/lib/cucumber/formatter/usage.rb +33 -28
  276. data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
  277. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +2 -1
  278. data/lib/cucumber/gherkin/formatter/escaping.rb +2 -1
  279. data/lib/cucumber/gherkin/i18n.rb +1 -0
  280. data/lib/cucumber/gherkin/steps_parser.rb +1 -0
  281. data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +41 -30
  282. data/lib/cucumber/glue/hook.rb +43 -0
  283. data/lib/cucumber/glue/invoke_in_world.rb +70 -0
  284. data/lib/cucumber/glue/proto_world.rb +220 -0
  285. data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +60 -90
  286. data/lib/cucumber/{rb_support → glue}/snippet.rb +64 -26
  287. data/lib/cucumber/glue/step_definition.rb +143 -0
  288. data/lib/cucumber/glue/world_factory.rb +23 -0
  289. data/lib/cucumber/hooks.rb +9 -8
  290. data/lib/cucumber/load_path.rb +1 -0
  291. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
  292. data/lib/cucumber/multiline_argument/data_table.rb +47 -181
  293. data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
  294. data/lib/cucumber/multiline_argument.rb +6 -15
  295. data/lib/cucumber/platform.rb +4 -5
  296. data/lib/cucumber/project_initializer.rb +3 -2
  297. data/lib/cucumber/rake/task.rb +19 -14
  298. data/lib/cucumber/rspec/disable_option_parser.rb +2 -1
  299. data/lib/cucumber/rspec/doubles.rb +2 -1
  300. data/lib/cucumber/running_test_case.rb +3 -27
  301. data/lib/cucumber/runtime/after_hooks.rb +2 -1
  302. data/lib/cucumber/runtime/before_hooks.rb +1 -0
  303. data/lib/cucumber/runtime/for_programming_languages.rb +2 -36
  304. data/lib/cucumber/runtime/step_hooks.rb +1 -0
  305. data/lib/cucumber/runtime/support_code.rb +21 -16
  306. data/lib/cucumber/runtime/user_interface.rb +10 -16
  307. data/lib/cucumber/runtime.rb +49 -32
  308. data/lib/cucumber/step_argument.rb +1 -2
  309. data/lib/cucumber/step_definition_light.rb +2 -0
  310. data/lib/cucumber/step_definitions.rb +1 -0
  311. data/lib/cucumber/step_match.rb +30 -15
  312. data/lib/cucumber/step_match_search.rb +3 -3
  313. data/lib/cucumber/term/ansicolor.rb +2 -1
  314. data/lib/cucumber/unit.rb +1 -0
  315. data/lib/cucumber/version +1 -1
  316. data/lib/cucumber.rb +1 -13
  317. data/lib/simplecov_setup.rb +2 -1
  318. data/scripts/invite-collaborator +40 -0
  319. data/scripts/update-changelog +86 -0
  320. data/spec/cucumber/cli/configuration_spec.rb +109 -98
  321. data/spec/cucumber/cli/main_spec.rb +8 -7
  322. data/spec/cucumber/cli/options_spec.rb +114 -79
  323. data/spec/cucumber/cli/profile_loader_spec.rb +25 -5
  324. data/spec/cucumber/cli/rerun_spec.rb +21 -20
  325. data/spec/cucumber/configuration_spec.rb +48 -47
  326. data/spec/cucumber/constantize_spec.rb +3 -2
  327. data/spec/cucumber/events_spec.rb +9 -0
  328. data/spec/cucumber/file_specs_spec.rb +26 -25
  329. data/spec/cucumber/filters/activate_steps_spec.rb +25 -22
  330. data/spec/cucumber/filters/gated_receiver_spec.rb +7 -6
  331. data/spec/cucumber/filters/retry_spec.rb +42 -23
  332. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +12 -11
  333. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +15 -14
  334. data/spec/cucumber/filters/tag_limits_spec.rb +9 -8
  335. data/spec/cucumber/formatter/ansicolor_spec.rb +10 -9
  336. data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
  337. data/spec/cucumber/formatter/console_counts_spec.rb +14 -0
  338. data/spec/cucumber/formatter/duration_spec.rb +4 -3
  339. data/spec/cucumber/formatter/fail_fast_spec.rb +27 -27
  340. data/spec/cucumber/formatter/html_spec.rb +65 -60
  341. data/spec/cucumber/formatter/interceptor_spec.rb +1 -0
  342. data/spec/cucumber/formatter/json_spec.rb +71 -97
  343. data/spec/cucumber/formatter/junit_spec.rb +46 -47
  344. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +134 -141
  345. data/spec/cucumber/formatter/pretty_spec.rb +105 -117
  346. data/spec/cucumber/formatter/progress_spec.rb +22 -21
  347. data/spec/cucumber/formatter/rerun_spec.rb +70 -64
  348. data/spec/cucumber/formatter/spec_helper.rb +14 -12
  349. data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +22 -6
  350. data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
  351. data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +62 -25
  352. data/spec/cucumber/glue/step_definition_spec.rb +207 -0
  353. data/spec/cucumber/hooks_spec.rb +5 -4
  354. data/spec/cucumber/multiline_argument/data_table_spec.rb +179 -129
  355. data/spec/cucumber/project_initializer_spec.rb +12 -11
  356. data/spec/cucumber/rake/forked_spec.rb +22 -17
  357. data/spec/cucumber/rake/task_spec.rb +21 -20
  358. data/spec/cucumber/running_test_case_spec.rb +36 -35
  359. data/spec/cucumber/runtime/for_programming_languages_spec.rb +2 -30
  360. data/spec/cucumber/runtime/support_code_spec.rb +1 -0
  361. data/spec/cucumber/runtime_spec.rb +3 -2
  362. data/spec/cucumber/step_argument_spec.rb +6 -5
  363. data/spec/cucumber/step_match_search_spec.rb +32 -41
  364. data/spec/cucumber/step_match_spec.rb +34 -33
  365. data/spec/cucumber/world/pending_spec.rb +12 -11
  366. data/spec/spec_helper.rb +1 -0
  367. data/spec/support/standard_step_actions.rb +2 -1
  368. metadata +132 -61
  369. data/features/docs/formatters/debug_formatter.feature +0 -47
  370. data/features/docs/formatters/formatter_step_file_colon_line.feature +0 -44
  371. data/features/docs/writing_support_code/transforms.feature +0 -98
  372. data/features/lib/step_definitions/wire_steps.rb +0 -58
  373. data/gem_tasks/cucumber.rake +0 -25
  374. data/lib/cucumber/ast.rb +0 -13
  375. data/lib/cucumber/core_ext/instance_exec.rb +0 -70
  376. data/lib/cucumber/events/after_test_case.rb +0 -25
  377. data/lib/cucumber/events/after_test_step.rb +0 -30
  378. data/lib/cucumber/events/before_test_case.rb +0 -18
  379. data/lib/cucumber/events/before_test_step.rb +0 -23
  380. data/lib/cucumber/events/bus.rb +0 -86
  381. data/lib/cucumber/events/finished_testing.rb +0 -9
  382. data/lib/cucumber/formatter/debug.rb +0 -35
  383. data/lib/cucumber/formatter/event_bus_report.rb +0 -38
  384. data/lib/cucumber/rb_support/rb_hook.rb +0 -19
  385. data/lib/cucumber/rb_support/rb_step_definition.rb +0 -131
  386. data/lib/cucumber/rb_support/rb_transform.rb +0 -59
  387. data/lib/cucumber/rb_support/rb_world.rb +0 -149
  388. data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -4
  389. data/spec/cucumber/events/bus_spec.rb +0 -94
  390. data/spec/cucumber/formatter/debug_spec.rb +0 -64
  391. data/spec/cucumber/formatter/event_bus_report_spec.rb +0 -88
  392. data/spec/cucumber/rb_support/rb_language_spec.rb +0 -243
  393. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -199
  394. data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -46
  395. data/spec/cucumber_spec.rb +0 -39
data/cucumber.gemspec CHANGED
@@ -1,25 +1,26 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  Gem::Specification.new do |s|
3
3
  s.name = 'cucumber'
4
- s.version = File.read(File.expand_path("../lib/cucumber/version", __FILE__))
5
- s.authors = ["Aslak Hellesøy", "Matt Wynne", "Steve Tooke"]
4
+ s.version = File.read(File.expand_path('../lib/cucumber/version', __FILE__))
5
+ s.authors = ["Aslak Hellesøy", 'Matt Wynne', 'Steve Tooke']
6
6
  s.description = 'Behaviour Driven Development with elegance and joy'
7
7
  s.summary = "cucumber-#{s.version}"
8
8
  s.email = 'cukes@googlegroups.com'
9
9
  s.license = 'MIT'
10
- s.homepage = "http://cukes.info"
10
+ s.homepage = 'https://cucumber.io/'
11
11
  s.platform = Gem::Platform::RUBY
12
- s.required_ruby_version = ">= 1.9.3"
13
- s.add_dependency 'cucumber-core', '~> 1.5.0'
12
+ s.required_ruby_version = '>= 1.9.3'
13
+ s.add_dependency 'cucumber-core', '~> 3.0.0'
14
14
  s.add_dependency 'builder', '>= 2.1.2'
15
- s.add_dependency 'diff-lcs', '>= 1.1.3'
15
+ s.add_dependency 'diff-lcs', '~> 1.3'
16
16
  s.add_dependency 'gherkin', '~> 4.0'
17
17
  s.add_dependency 'multi_json', '>= 1.7.5', '< 2.0'
18
18
  s.add_dependency 'multi_test', '>= 0.1.2'
19
19
  s.add_dependency 'cucumber-wire', '~> 0.0.1'
20
+ s.add_dependency 'cucumber-expressions', '~> 4.0.3'
20
21
 
21
22
  s.add_development_dependency 'aruba', '~> 0.6.1'
22
- s.add_development_dependency 'json', '~> 1.7'
23
+ s.add_development_dependency 'json', '~> 1.8.6'
23
24
  s.add_development_dependency 'nokogiri', '~> 1.5'
24
25
  s.add_development_dependency 'rake', '>= 0.9.2'
25
26
  s.add_development_dependency 'rspec', '>= 3.0'
@@ -27,6 +28,10 @@ Gem::Specification.new do |s|
27
28
  s.add_development_dependency 'coveralls', '~> 0.7'
28
29
  s.add_development_dependency 'syntax', '>= 1.0.0'
29
30
  s.add_development_dependency 'pry'
31
+ s.add_development_dependency 'rubocop', '~> 0.40.0'
32
+
33
+ # For maintainer scripts
34
+ s.add_development_dependency 'octokit'
30
35
 
31
36
  # For Documentation:
32
37
  s.add_development_dependency 'bcat', '~> 0.6.2'
@@ -38,10 +43,10 @@ Gem::Specification.new do |s|
38
43
  s.add_development_dependency 'rack-test', '>= 0.6.1'
39
44
  s.add_development_dependency 'sinatra', '>= 1.3.2'
40
45
 
41
- s.rubygems_version = ">= 1.6.1"
46
+ s.rubygems_version = '>= 1.6.1'
42
47
  s.files = `git ls-files`.split("\n").reject {|path| path =~ /\.gitignore$/ }
43
48
  s.test_files = `git ls-files -- {spec,features}/*`.split("\n")
44
49
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
45
- s.rdoc_options = ["--charset=UTF-8"]
46
- s.require_path = "lib"
50
+ s.rdoc_options = ['--charset=UTF-8']
51
+ s.require_path = 'lib'
47
52
  end
data/cucumber.yml CHANGED
@@ -2,19 +2,18 @@
2
2
  cucumber_pro_opts = ENV['ENABLE_CUCUMBER_PRO'] ? "--format Cucumber::Pro --out /dev/null" : ""
3
3
  rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
4
4
  rerun_opts = rerun.to_s.strip.empty? ? "--format progress features" : "--format pretty #{rerun}"
5
- std_opts = "--format progress features --tags ~@wip --tags ~@wip-new-core -r features --strict #{cucumber_pro_opts}"
5
+ std_opts = "--format progress features -r features --strict #{cucumber_pro_opts}"
6
6
  std_opts << " --tags ~@wip-jruby" if defined?(JRUBY_VERSION)
7
7
 
8
- wip_opts = "--color -r features --tags @wip,@wip-new-core"
9
- wip_opts << ",@wip-jruby" if defined?(JRUBY_VERSION)
8
+ wip_opts = "--color -r features"
9
+ wip_opts << " --tags @wip" if !defined?(JRUBY_VERSION)
10
+ wip_opts << " --tags @wip,@wip-jruby" if defined?(JRUBY_VERSION)
10
11
  %>
11
- default: <%= std_opts %> --tags ~@jruby
12
- jruby: <%= std_opts %> --tags ~@wire
13
- jruby_win: <%= std_opts %> --tags ~@wire CUCUMBER_FORWARD_SLASH_PATHS=true
14
- windows_mri: <%= std_opts %> --tags ~@jruby --tags ~@wire --tags ~@needs-many-fonts CUCUMBER_FORWARD_SLASH_PATHS=true
15
- ruby_1_9: <%= std_opts %> --tags ~@jruby
16
- ruby_2_0: <%= std_opts %> --tags ~@jruby
17
- ruby_2_1: <%= std_opts %> --tags ~@jruby
12
+ default: <%= std_opts %> --tags "not @jruby"
13
+ jruby: <%= std_opts %> --tags "not @wire"
14
+ jruby_win: <%= std_opts %> --tags "not @wire" CUCUMBER_FORWARD_SLASH_PATHS=true
15
+ windows_mri: <%= std_opts %> --tags "not @jruby" --tags "not @wire" --tags "not @needs-many-fonts" --tags "not @todo-windows" CUCUMBER_FORWARD_SLASH_PATHS=true
16
+ ruby: <%= std_opts %> --tags "not @todo-windows" --tags "not @jruby"
18
17
  wip: --wip <%= wip_opts %> features <%= cucumber_pro_opts %>
19
18
  none: --format pretty --format Cucumber::Pro --out /dev/null
20
- rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tag ~@wip-new-core <%= cucumber_pro_opts %>
19
+ rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags "not @wip-new-core" <%= cucumber_pro_opts %>
@@ -7,7 +7,7 @@ task :cucumber do
7
7
  if examples_working?(lang)
8
8
  Dir.chdir(f) do
9
9
  puts "DIR: #{f}"
10
- rake("cucumber")
10
+ rake('cucumber')
11
11
  end
12
12
  else
13
13
  STDERR.puts %{
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
@@ -15,10 +20,10 @@ Given "كتابة $n في الآلة الحاسبة" do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /يتم الضغط على (.+)/ do |op|
23
+ When(/يتم الضغط على (.+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Then /يظهر (.*) على الشاشة/ do |result|
27
+ Then(/يظهر (.*) على الشاشة/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -4,8 +4,8 @@ class Calculator
4
4
  @args ||= []
5
5
  @args << n
6
6
  end
7
-
7
+
8
8
  def جمع
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
  end
@@ -1,24 +1,24 @@
1
1
  # encoding: utf-8
2
2
 
3
- Дадено /въвел (\d+)/ do |x|
3
+ Дадено(/въвел (\d+)/) do |x|
4
4
  calc.push x.to_i
5
5
  end
6
6
 
7
- Когато /^въведа (\d+)/ do |x|
7
+ Когато(/^въведа (\d+)/) do |x|
8
8
  calc.push x.to_i
9
9
  end
10
10
 
11
- Когато /натисна "(.*)"/ do |op|
11
+ Когато(/натисна "(.*)"/) do |op|
12
12
  calc.send op
13
13
  end
14
14
 
15
- То /резултата трябва да е равен на (\d+)/ do |result|
15
+ То(/резултата трябва да е равен на (\d+)/) do |result|
16
16
  calc.result.should == result.to_f
17
17
  end
18
18
 
19
- Дадено /събрал (\d+) и (\d+)/ do |x, y|
19
+ Дадено(/събрал (\d+) и (\d+)/) do |x, y|
20
20
  Дадено %{въвел #{x}}
21
- Дадено %{въвел #{y}}
21
+ Дадено %{въвел #{y}}
22
22
  Дадено %{натисна "+"}
23
23
  end
24
24
 
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
@@ -18,7 +18,8 @@ class Calculator
18
18
  end
19
19
 
20
20
  def /
21
- divisor, dividend = [@stack.pop, @stack.pop] # Hm, @stack.pop(2) doesn't work
21
+ divisor, dividend = [@stack.pop, @stack.pop]
22
+ # Hm, @stack.pop(2) doesn't work
22
23
  @stack.push dividend / divisor
23
24
  end
24
25
  end
@@ -1,21 +1,26 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculadora'
6
11
 
7
12
  Before do
8
13
  @calc = Calculadora.new
9
14
  end
10
15
 
11
- Donat /que he introduït (\d+) a la calculadora/ do |n|
16
+ Donat(/que he introduït (\d+) a la calculadora/) do |n|
12
17
  @calc.push n.to_i
13
18
  end
14
19
 
15
- Quan /premo el (\w+)/ do |op|
20
+ Quan(/premo el (\w+)/) do |op|
16
21
  @result = @calc.send op
17
22
  end
18
23
 
19
- Aleshores /el resultat ha de ser (\d+) a la pantalla/ do |result|
24
+ Aleshores(/el resultat ha de ser (\d+) a la pantalla/) do |result|
20
25
  @result.should == result.to_f
21
26
  end
@@ -6,11 +6,11 @@ class Calculadora
6
6
  end
7
7
 
8
8
  def add
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
 
12
12
  def divide
13
13
  @args[0].to_f / @args[1].to_f
14
14
  end
15
15
 
16
- end
16
+ end
@@ -1,7 +1,12 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
6
11
 
7
12
  Before do
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /Zadám číslo (\d+) do kalkulačky/ do |n|
19
+ Given(/Zadám číslo (\d+) do kalkulačky/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /Stisknu (\w+)/ do |op|
23
+ When(/Stisknu (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Then /Výsledek by měl být (.*)/ do |result|
27
+ Then(/Výsledek by měl být (.*)/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -3,12 +3,12 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
12
12
  @args[0].to_f / @args[1].to_f
13
13
  end
14
- end
14
+ end
@@ -1,7 +1,12 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'lommeregner'
6
11
 
7
12
  Before do
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /at jeg har indtastet (\d+)/ do |n|
19
+ Given(/at jeg har indtastet (\d+)/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When 'jeg lægger sammen' do
23
+ When('jeg lægger sammen') do
19
24
  @result = @calc.add
20
25
  end
21
26
 
22
- Then /skal resultatet være (\d*)/ do |result|
27
+ Then(/skal resultatet være (\d*)/) do |result|
23
28
  @result.should == result.to_i
24
29
  end
@@ -3,9 +3,9 @@ class Lommeregner
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
8
  #@args[0] + @args[1]
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
  end
@@ -1,7 +1,12 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
6
11
 
7
12
  Before do
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Angenommen /ich habe (\d+) in den Taschenrechner eingegeben/ do |n|
19
+ Angenommen(/ich habe (\d+) in den Taschenrechner eingegeben/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- Wenn /ich (\w+) drücke/ do |op|
23
+ Wenn(/ich (\w+) drücke/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Dann /sollte das Ergebniss auf dem Bildschirm (.*) sein/ do |result|
27
+ Dann(/sollte das Ergebniss auf dem Bildschirm (.*) sein/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Δεδομένου ότι /έχω εισάγει (\d+) στην αριθμομηχανή/ do |n|
19
+ Δεδομένου ότι(/έχω εισάγει (\d+) στην αριθμομηχανή/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- Όταν /πατάω (\w+)/ do |op|
23
+ Όταν(/πατάω (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Τότε /το αποτέλεσμα στην οθόνη πρέπει να είναι (.*)/ do |result|
27
+ Τότε(/το αποτέλεσμα στην οθόνη πρέπει να είναι (.*)/) do |result|
23
28
  @result.should == result.to_f
24
- end
29
+ end
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /I have entered (\d+) into the calculator/ do |n|
19
+ Given(/I have entered (\d+) into the calculator/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /I press (\w+)/ do |op|
23
+ When(/I press (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Then /the result should be (.*) on the screen/ do |result|
27
+ Then(/the result should be (.*) on the screen/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,16 +1,16 @@
1
- ICANHAZ /^IN TEH BEGINNIN (\d+) CUCUMBRZ$/ do |n|
1
+ ICANHAZ(/^IN TEH BEGINNIN (\d+) CUCUMBRZ$/) do |n|
2
2
  @basket = Basket.new(n.to_i)
3
3
  end
4
4
 
5
- WEN /^I EAT (\d+) CUCUMBRZ$/ do |n|
5
+ WEN(/^I EAT (\d+) CUCUMBRZ$/) do |n|
6
6
  @belly = Belly.new
7
7
  @belly.eat(@basket.take(n.to_i))
8
8
  end
9
9
 
10
- DEN /^I HAS (\d+) CUCUMBERZ IN MAH BELLY$/ do |n|
10
+ DEN(/^I HAS (\d+) CUCUMBERZ IN MAH BELLY$/) do |n|
11
11
  @belly.cukes.should == n.to_i
12
12
  end
13
13
 
14
- DEN /^IN TEH END (\d+) CUCUMBRZ KTHXBAI$/ do |n|
14
+ DEN(/^IN TEH END (\d+) CUCUMBRZ KTHXBAI$/) do |n|
15
15
  @basket.cukes.should == n.to_i
16
16
  end
@@ -1,7 +1,11 @@
1
1
  # encoding: utf-8
2
- require 'cucumber/formatter/unicode'
3
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
4
7
 
8
+ require 'cucumber/formatter/unicode'
5
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
6
10
  require 'basket'
7
11
  require 'belly'
@@ -1,10 +1,10 @@
1
1
  class Basket
2
2
  attr_reader :cukes
3
-
3
+
4
4
  def initialize(cukes)
5
5
  @cukes = cukes
6
6
  end
7
-
7
+
8
8
  def take(cukes)
9
9
  @cukes -= cukes
10
10
  cukes
@@ -1,10 +1,10 @@
1
1
  class Belly
2
2
  attr_reader :cukes
3
-
3
+
4
4
  def initialize
5
5
  @cukes = 0
6
6
  end
7
-
7
+
8
8
  def eat(cukes)
9
9
  @cukes += cukes
10
10
  end
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /mi entajpas (\d+) en la kalkulilon/ do |n|
19
+ Given(/mi entajpas (\d+) en la kalkulilon/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /mi premas (\w+)/ do |op|
23
+ When(/mi premas (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Then /la rezulto estu (.*)/ do |result|
27
+ Then(/la rezulto estu (.*)/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,5 +1,10 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
9
  $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculador'
@@ -8,14 +13,14 @@ Before do
8
13
  @calc = Calculador.new
9
14
  end
10
15
 
11
- Dado /que he introducido (\d+) en la calculadora/ do |n|
16
+ Dado(/que he introducido (\d+) en la calculadora/) do |n|
12
17
  @calc.push n.to_i
13
18
  end
14
19
 
15
- Cuando /oprimo el (\w+)/ do |op|
20
+ Cuando(/oprimo el (\w+)/) do |op|
16
21
  @result = @calc.send op
17
22
  end
18
23
 
19
- Entonces /el resultado debe ser (.*) en la pantalla/ do |result|
24
+ Entonces(/el resultado debe ser (.*) en la pantalla/) do |result|
20
25
  @result.should == result.to_f
21
- end
26
+ end
@@ -3,9 +3,9 @@ class Calculador
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def add
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def divide
@@ -1,7 +1,12 @@
1
1
  # encoding: utf-8
2
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
2
+ begin
3
+ require 'rspec/expectations'
4
+ rescue LoadError
5
+ require 'spec/expectations'
6
+ end
7
+
3
8
  require 'cucumber/formatter/unicode'
4
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'kalkulaator'
6
11
 
7
12
  Before do
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /olen sisestanud kalkulaatorisse numbri (\d+)/ do |n|
19
+ Given(/olen sisestanud kalkulaatorisse numbri (\d+)/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /ma vajutan (\w+)/ do |op|
23
+ When(/ma vajutan (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Then /vastuseks peab ekraanil kuvatama (.*)/ do |result|
27
+ Then(/vastuseks peab ekraanil kuvatama (.*)/) do |result|
23
28
  @result.should == result.to_f
24
29
  end