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
@@ -3,9 +3,9 @@ class Calculator
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def dodaj
8
- @args.inject(0){|n,sum| sum+=n}
8
+ @args.inject(0){|n,sum| sum + n}
9
9
  end
10
10
 
11
11
  def podziel
@@ -7,14 +7,14 @@ end
7
7
  After do
8
8
  end
9
9
 
10
- Dado /que eu digitei (\d+) na calculadora/ do |n|
10
+ Dado(/que eu digitei (\d+) na calculadora/) do |n|
11
11
  @calc.push n.to_i
12
12
  end
13
13
 
14
- Quando 'eu aperto o botão de soma' do
14
+ Quando('eu aperto o botão de soma') do
15
15
  @result = @calc.soma
16
16
  end
17
17
 
18
- Então /o resultado na calculadora deve ser (\d*)/ do |result|
18
+ Então(/o resultado na calculadora deve ser (\d*)/) do |result|
19
19
  @result.should == result.to_i
20
20
  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
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculadora'
@@ -3,7 +3,7 @@ class Calculadora
3
3
  @args ||= []
4
4
  @args << n
5
5
  end
6
-
6
+
7
7
  def soma
8
8
  @args.inject(0) {|n,sum| sum+n}
9
9
  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 'calculator'
6
11
 
7
- Datfiind /un calculator/ do
12
+ Datfiind(/un calculator/) do
8
13
  @calc = Calculator.new
9
14
  end
10
15
 
11
- Cand /introduc (\d+)/ do |n|
16
+ Cand(/introduc (\d+)/) do |n|
12
17
  @calc.push n.to_i
13
18
  end
14
19
 
15
- Cand 'apăs tasta Egal' do
20
+ Cand('apăs tasta Egal') do
16
21
  @result = @calc.add
17
22
  end
18
23
 
19
- Atunci /ecranul trebuie să afişeze (\d*)/ do |result|
24
+ Atunci(/ecranul trebuie să afişeze (\d*)/) do |result|
20
25
  @result.should == result.to_i
21
26
  end
@@ -6,6 +6,6 @@ class Calculator
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,19 +1,19 @@
1
1
  # encoding: utf-8
2
2
 
3
- Допустим /ввожу число (\d+)/ do |число|
3
+ Допустим(/ввожу число (\d+)/) do |число|
4
4
  calc.push число.to_i
5
5
  end
6
6
 
7
- Если /нажимаю "(.*)"/ do |операция|
7
+ Если(/нажимаю "(.*)"/) do |операция|
8
8
  calc.send операция
9
9
  end
10
10
 
11
- То /результатом должно быть число (\d+)/ do |результат|
11
+ То(/результатом должно быть число (\d+)/) do |результат|
12
12
  calc.result.should == результат.to_f
13
13
  end
14
14
 
15
- Допустим /я сложил (\d+) и (\d+)/ do |слагаемое1, слагаемое2|
15
+ Допустим(/я сложил (\d+) и (\d+)/) do |слагаемое1, слагаемое2|
16
16
  Допустим %{я ввожу число #{слагаемое1}}
17
17
  Допустим %{затем ввожу число #{слагаемое2}}
18
18
  Допустим %{я нажимаю "+"}
19
- end
19
+ 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'
@@ -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,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 /Stlačím tlačidlo (\w+)/ do |op|
23
+ When(/Stlačím tlačidlo (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Then /Výsledok by mal byť (.*)/ do |result|
27
+ Then(/Výsledok by mal byť (.*)/) 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
@@ -7,14 +7,14 @@ end
7
7
  After do
8
8
  end
9
9
 
10
- Задати /унесен број (\d+) у калкулатор/ do |n|
10
+ Задати(/унесен број (\d+) у калкулатор/) do |n|
11
11
  @calc.push n.to_i
12
12
  end
13
13
 
14
- Када /притиснем (\w+)/ do |op|
14
+ Када(/притиснем (\w+)/) do |op|
15
15
  @result = @calc.send op
16
16
  end
17
17
 
18
- Онда /би требало да буде (.*) прикаѕано на екрану/ do |result|
18
+ Онда(/би требало да буде (.*) прикаѕано на екрану/) do |result|
19
19
  @result.should == result.to_f
20
20
  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
- $:.unshift(File.dirname(__FILE__) + '/../../lib')
9
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
10
  require 'calculator'
@@ -4,9 +4,9 @@ class Calculator
4
4
  @args ||= []
5
5
  @args << n
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
  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
- Zadato /Unesen (\d+) broj u kalkulator/ do |n|
19
+ Zadato(/Unesen (\d+) broj u kalkulator/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- Kada /pritisnem (\w+)/ do |op|
23
+ Kada(/pritisnem (\w+)/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Onda /bi trebalo da bude (.*) prikazano na ekranu/ do |result|
27
+ Onda(/bi trebalo da bude (.*) prikazano na ekranu/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -4,9 +4,9 @@ class Calculator
4
4
  @args ||= []
5
5
  @args << n
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
  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 'kalkulator'
6
11
 
7
12
  Before do
@@ -11,7 +16,7 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /att jag har knappat in (\d+)/ do |n|
19
+ Given(/att jag har knappat in (\d+)/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
@@ -19,6 +24,6 @@ When 'jag summerar' do
19
24
  @result = @calc.add
20
25
  end
21
26
 
22
- Then /ska resultatet vara (\d+)/ do |result|
27
+ Then(/ska resultatet vara (\d+)/) do |result|
23
28
  @result.should == result.to_i
24
29
  end
@@ -3,9 +3,9 @@ class Kalkulator
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 'hesap_makinesi'
6
11
 
7
12
  Before do
@@ -11,14 +16,14 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Diyelimki /hesap makinesine (\d+) girdim/ do |n|
19
+ Diyelimki(/hesap makinesine (\d+) girdim/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- Eğerki /(.*) tuşuna basarsam/ do |op|
23
+ Eğerki(/(.*) tuşuna basarsam/) do |op|
19
24
  @result = @calc.send op
20
25
  end
21
26
 
22
- Ozaman /ekrandaki sonuç (.*) olmalı/ do |result|
27
+ Ozaman(/ekrandaki sonuç (.*) olmalı/) do |result|
23
28
  @result.should == result.to_f
24
29
  end
@@ -4,9 +4,9 @@ class HesapMakinesi
4
4
  @args ||= []
5
5
  @args << n
6
6
  end
7
-
7
+
8
8
  def topla
9
- @args.inject(0){|n,sum| sum+=n}
9
+ @args.inject(0){|n,sum| sum + n}
10
10
  end
11
11
 
12
12
  def böl
@@ -1,18 +1,18 @@
1
1
  # encoding: utf-8
2
2
 
3
- Припустимо /ввожу число (\d+)/ do |число|
3
+ Припустимо(/ввожу число (\d+)/) do |число|
4
4
  calc.push число.to_i
5
5
  end
6
6
 
7
- Якщо /натискаю "(.*)"/ do |операція|
7
+ Якщо(/натискаю "(.*)"/) do |операція|
8
8
  calc.send операція
9
9
  end
10
10
 
11
- То /результатом повинно бути число (\d+)/ do |результат|
11
+ То(/результатом повинно бути число (\d+)/) do |результат|
12
12
  calc.result.should == результат.to_f
13
13
  end
14
14
 
15
- Припустимо /я додав (\d+) і (\d+)/ do |доданок1, доданок2|
15
+ Припустимо(/я додав (\d+) і (\d+)/) do |доданок1, доданок2|
16
16
  Припустимо %{я ввожу число #{доданок1}}
17
17
  Припустимо %{потім ввожу число #{доданок2}}
18
18
  Припустимо %{я натискаю "+"}
@@ -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,18 +1,18 @@
1
1
  # encoding: utf-8
2
2
 
3
- Агар /(\d+) сонини киритсам/ do |сон|
3
+ Агар(/(\d+) сонини киритсам/) do |сон|
4
4
  calc.push сон.to_i
5
5
  end
6
6
 
7
- Агар /"(.*)"(.*) боссам/ do |операция, _|
7
+ Агар(/"(.*)"(.*) боссам/) do |операция, _|
8
8
  calc.send операция
9
9
  end
10
10
 
11
- Унда /жавоб (\d+) сони булиши керак/ do |жавоб|
11
+ Унда(/жавоб (\d+) сони булиши керак/) do |жавоб|
12
12
  calc.result.should == жавоб.to_f
13
13
  end
14
14
 
15
- Агар /(\d+) ва (\d+) сонини кушсам/ do |кушилувчи1, кушилувчи2|
15
+ Агар(/(\d+) ва (\d+) сонини кушсам/) do |кушилувчи1, кушилувчи2|
16
16
  Агар %{#{кушилувчи1} сонини киритсам}
17
17
  Агар %{ундан сунг #{кушилувчи2} сонини киритсам}
18
18
  Агар %{"+"ни боссам}
@@ -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,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,16 +16,16 @@ end
11
16
  After do
12
17
  end
13
18
 
14
- Given /在计算器上输入(\d+)/ do |n|
19
+ Given(/在计算器上输入(\d+)/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /按(.*)键/ do |op|
23
+ When(/按(.*)键/) do |op|
19
24
  if op == '加号'
20
- @result = @calc.send "add"
25
+ @result = @calc.send 'add'
21
26
  end
22
27
  end
23
28
 
24
- Then /屏幕上显示的结果应该是是(.*)/ do |result|
29
+ Then(/屏幕上显示的结果应该是是(.*)/) do |result|
25
30
  @result.should == result.to_f
26
31
  end
@@ -3,8 +3,8 @@ 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
  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 /我已經在計算機上輸入 (\d+)/ do |n|
19
+ Given(/我已經在計算機上輸入 (\d+)/) do |n|
15
20
  @calc.push n.to_i
16
21
  end
17
22
 
18
- When /我按下 (\w+)/ do |op|
23
+ When(/我按下 (\w+)/) 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
@@ -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
@@ -2,18 +2,18 @@ class CardboardBox
2
2
  def initialize(transmogrifier)
3
3
  @transmogrifier = transmogrifier
4
4
  end
5
-
5
+
6
6
  def poke
7
7
  @transmogrifier.transmogrify
8
8
  end
9
9
  end
10
10
 
11
- Given /^I have a cardboard box$/ do
11
+ Given(/^I have a cardboard box$/) do
12
12
  transmogrifier = double('transmogrifier')
13
13
  transmogrifier.should_receive(:transmogrify)
14
14
  @box = CardboardBox.new(transmogrifier)
15
15
  end
16
16
 
17
- When /^I poke it all is good$/ do
17
+ When(/^I poke it all is good$/) do
18
18
  @box.poke
19
19
  end
@@ -1,15 +1,15 @@
1
- Given /^I visit the calculator page$/ do
1
+ Given(/^I visit the calculator page$/) do
2
2
  visit '/add'
3
3
  end
4
4
 
5
- Given /^I fill in '(.*)' for '(.*)'$/ do |value, field|
5
+ Given(/^I fill in '(.*)' for '(.*)'$/) do |value, field|
6
6
  fill_in(field, :with => value)
7
7
  end
8
8
 
9
- When /^I press '(.*)'$/ do |name|
9
+ When(/^I press '(.*)'$/) do |name|
10
10
  click_button(name)
11
11
  end
12
12
 
13
- Then /^I should see '(.*)'$/ do |text|
13
+ Then(/^I should see '(.*)'$/) do |text|
14
14
  body.should match(/#{text}/m)
15
15
  end
@@ -3,7 +3,12 @@
3
3
 
4
4
  require File.dirname(__FILE__) + '/../../app'
5
5
 
6
- begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
6
+ begin
7
+ require 'rspec/expectations'
8
+ rescue LoadError
9
+ require 'spec/expectations'
10
+ end
11
+
7
12
  require 'rack/test'
8
13
  require 'capybara/cucumber'
9
14
 
@@ -1,7 +1,7 @@
1
- When /^I ask Tcl to calculate fibonacci for (\d+)$/ do |n|
1
+ When(/^I ask Tcl to calculate fibonacci for (\d+)$/) do |n|
2
2
  @fib_result = @fib.eval("fib #{n}").to_i
3
3
  end
4
4
 
5
- Then /^it should give me (\d+)$/ do |expected|
5
+ Then(/^it should give me (\d+)$/) do |expected|
6
6
  expect(@fib_result).to eq expected.to_i
7
7
  end
@@ -2,5 +2,6 @@ require 'rubygems'
2
2
  require 'tcl'
3
3
 
4
4
  Before do
5
- @fib = Tcl::Interp.load_from_file(File.dirname(__FILE__) + '/../../src/fib.tcl')
5
+ file_name = File.dirname(__FILE__) + '/../../src/fib.tcl'
6
+ @fib = Tcl::Interp.load_from_file(file_name)
6
7
  end