cucumber 3.0.0.pre.1 → 3.0.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/.cucumberproignore +6 -0
  3. data/.rubocop.yml +13 -0
  4. data/.rubocop_todo.yml +1075 -0
  5. data/.travis.yml +42 -8
  6. data/CONTRIBUTING.md +8 -1
  7. data/Gemfile +16 -10
  8. data/History.md +96 -36
  9. data/README.md +12 -3
  10. data/Rakefile +12 -2
  11. data/appveyor.yml +26 -0
  12. data/cucumber.gemspec +15 -10
  13. data/cucumber.yml +9 -10
  14. data/examples/i18n/Rakefile +1 -1
  15. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +2 -2
  16. data/examples/i18n/ar/lib/calculator.rb +2 -2
  17. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
  18. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +4 -4
  19. data/examples/i18n/ca/lib/calculadora.rb +2 -2
  20. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +4 -4
  21. data/examples/i18n/cs/lib/calculator.rb +3 -3
  22. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +4 -4
  23. data/examples/i18n/da/lib/lommeregner.rb +2 -2
  24. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +4 -4
  25. data/examples/i18n/de/lib/calculator.rb +2 -2
  26. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +5 -5
  27. data/examples/i18n/el/lib/calculator.rb +2 -2
  28. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
  29. data/examples/i18n/en-lol/lib/basket.rb +2 -2
  30. data/examples/i18n/en-lol/lib/belly.rb +2 -2
  31. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +4 -4
  32. data/examples/i18n/en/lib/calculator.rb +2 -2
  33. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +4 -4
  34. data/examples/i18n/eo/lib/calculator.rb +2 -2
  35. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +5 -5
  36. data/examples/i18n/es/lib/calculador.rb +2 -2
  37. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +4 -4
  38. data/examples/i18n/et/lib/kalkulaator.rb +3 -3
  39. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +3 -3
  40. data/examples/i18n/fi/lib/laskin.rb +1 -1
  41. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +8 -8
  42. data/examples/i18n/fr/features/support/env.rb +1 -1
  43. data/examples/i18n/fr/lib/calculatrice.rb +2 -2
  44. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +4 -4
  45. data/examples/i18n/he/lib/calculator.rb +1 -1
  46. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +3 -3
  47. data/examples/i18n/hi/lib/calculator.rb +1 -1
  48. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +4 -4
  49. data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
  50. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +4 -4
  51. data/examples/i18n/hu/lib/calculator.rb +1 -1
  52. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +4 -4
  53. data/examples/i18n/id/lib/calculator.rb +2 -2
  54. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +4 -4
  55. data/examples/i18n/it/lib/calcolatrice.rb +3 -3
  56. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +3 -3
  57. data/examples/i18n/ja/features/support/env.rb +1 -1
  58. data/examples/i18n/ja/lib/calculator.rb +2 -2
  59. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +4 -4
  60. data/examples/i18n/ko/lib/calculator.rb +2 -2
  61. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +4 -4
  62. data/examples/i18n/lt/lib/calculator.rb +2 -2
  63. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +4 -4
  64. data/examples/i18n/lv/lib/calculator.rb +2 -2
  65. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +3 -3
  66. data/examples/i18n/no/features/support/env.rb +1 -1
  67. data/examples/i18n/no/lib/kalkulator.rb +2 -2
  68. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +4 -4
  69. data/examples/i18n/pl/lib/calculator.rb +2 -2
  70. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +3 -3
  71. data/examples/i18n/pt/features/support/env.rb +1 -1
  72. data/examples/i18n/pt/lib/calculadora.rb +1 -1
  73. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +5 -5
  74. data/examples/i18n/ro/lib/calculator.rb +1 -1
  75. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
  76. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +4 -4
  77. data/examples/i18n/sk/lib/calculator.rb +2 -2
  78. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +3 -3
  79. data/examples/i18n/sr-Cyrl/features/support/env.rb +1 -1
  80. data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
  81. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +4 -4
  82. data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
  83. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +3 -3
  84. data/examples/i18n/sv/lib/kalkulator.rb +2 -2
  85. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +4 -4
  86. data/examples/i18n/tr/lib/hesap_makinesi.rb +2 -2
  87. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +4 -4
  88. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
  89. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +5 -5
  90. data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
  91. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +4 -4
  92. data/examples/i18n/zh-TW/lib/calculator.rb +2 -2
  93. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +3 -3
  94. data/examples/sinatra/features/step_definitions/add_steps.rb +4 -4
  95. data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
  96. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
  97. data/examples/watir/features/step_definitions/search_steps.rb +3 -3
  98. data/examples/watir/features/support/screenshots.rb +5 -5
  99. data/features/docs/api/list_step_defs_as_json.feature +21 -7
  100. data/features/docs/api/listen_for_events.feature +1 -1
  101. data/features/docs/api/run_cli_main_with_existing_runtime.feature +1 -0
  102. data/features/docs/cli/dry_run.feature +3 -0
  103. data/features/docs/cli/execute_with_tag_filter.feature +4 -4
  104. data/features/docs/cli/fail_fast.feature +2 -0
  105. data/features/docs/{gherkin/language_help.feature → cli/i18n.feature} +6 -6
  106. data/features/docs/cli/randomize.feature +2 -2
  107. data/features/docs/cli/retry_failing_tests.feature +28 -3
  108. data/features/docs/cli/run_scenarios_matching_name.feature +1 -0
  109. data/features/docs/cli/specifying_multiple_formatters.feature +3 -0
  110. data/features/docs/cli/strict_mode.feature +6 -0
  111. data/features/docs/defining_steps/nested_steps.feature +5 -1
  112. data/features/docs/defining_steps/nested_steps_i18n.feature +1 -0
  113. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
  114. data/features/docs/defining_steps/printing_messages.feature +1 -1
  115. data/features/docs/defining_steps/skip_scenario.feature +1 -0
  116. data/features/docs/defining_steps/snippets.feature +18 -18
  117. data/features/docs/events/gherkin_source_read_event.feature +43 -0
  118. data/features/docs/events/step_activated_event.feature +36 -0
  119. data/features/docs/events/step_definition_registered_event.feature +29 -0
  120. data/features/docs/events/test_case_finished_event.feature +35 -0
  121. data/features/docs/events/test_case_starting_event.feature +54 -0
  122. data/features/docs/events/test_run_finished_event.feature +40 -0
  123. data/features/docs/events/test_run_starting_event.feature +41 -0
  124. data/features/docs/events/test_step_finished_event.feature +47 -0
  125. data/features/docs/events/test_step_starting_event.feature +43 -0
  126. data/features/docs/exception_in_after_hook.feature +3 -2
  127. data/features/docs/exception_in_after_step_hook.feature +2 -0
  128. data/features/docs/exception_in_around_hook.feature +2 -0
  129. data/features/docs/exception_in_before_hook.feature +3 -1
  130. data/features/docs/extending_cucumber/custom_formatter.feature +21 -1
  131. data/features/docs/formatters/json_formatter.feature +4 -4
  132. data/features/docs/formatters/junit_formatter.feature +7 -6
  133. data/features/docs/formatters/pretty_formatter.feature +1 -0
  134. data/features/docs/formatters/progress_formatter.feature +1 -0
  135. data/features/docs/formatters/rerun_formatter.feature +2 -0
  136. data/features/docs/formatters/summary_formatter.feature +1 -0
  137. data/features/docs/formatters/usage_formatter.feature +3 -0
  138. data/features/docs/getting_started.feature +2 -1
  139. data/features/docs/gherkin/background.feature +5 -5
  140. data/features/docs/gherkin/doc_strings.feature +2 -0
  141. data/features/docs/gherkin/expand_option_for_outlines.feature +1 -0
  142. data/features/docs/gherkin/outlines.feature +4 -0
  143. data/features/docs/gherkin/unicode_table.feature +1 -0
  144. data/features/docs/gherkin/using_descriptions.feature +1 -0
  145. data/features/docs/gherkin/using_star_notation.feature +1 -1
  146. data/features/docs/post_configuration_hook.feature +1 -1
  147. data/features/docs/rake_task.feature +5 -0
  148. data/features/docs/raketask.feature +3 -1
  149. data/features/docs/work_in_progress.feature +5 -2
  150. data/features/docs/writing_support_code/after_step_hooks.feature +3 -1
  151. data/features/docs/writing_support_code/around_hooks.feature +6 -0
  152. data/features/docs/writing_support_code/before_hook.feature +1 -0
  153. data/features/docs/writing_support_code/hook_order.feature +3 -1
  154. data/features/docs/writing_support_code/parameter_types.feature +75 -0
  155. data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
  156. data/features/lib/step_definitions/aruba_steps.rb +4 -10
  157. data/features/lib/step_definitions/cli_steps.rb +2 -2
  158. data/features/lib/step_definitions/cucumber_steps.rb +8 -12
  159. data/features/lib/step_definitions/iso-8859-1_steps.rb +2 -2
  160. data/features/lib/step_definitions/json_steps.rb +1 -1
  161. data/features/lib/step_definitions/junit_steps.rb +1 -1
  162. data/features/lib/step_definitions/language_steps.rb +2 -2
  163. data/features/lib/step_definitions/profile_steps.rb +6 -6
  164. data/features/lib/step_definitions/retry_steps.rb +3 -3
  165. data/features/lib/step_definitions/ruby_steps.rb +1 -1
  166. data/features/lib/support/env.rb +1 -1
  167. data/features/lib/support/fake_wire_server.rb +7 -2
  168. data/features/lib/support/feature_factory.rb +1 -1
  169. data/features/lib/support/normalise_output.rb +13 -12
  170. data/features/lib/support/parameter_types.rb +8 -0
  171. data/gem_tasks/contributors.rake +9 -6
  172. data/gem_tasks/environment.rake +1 -5
  173. data/gem_tasks/examples.rake +1 -1
  174. data/gem_tasks/fix_cr_lf.rake +1 -1
  175. data/gem_tasks/flog.rake +2 -2
  176. data/gem_tasks/rspec.rake +1 -1
  177. data/lib/autotest/cucumber_mixin.rb +15 -15
  178. data/lib/autotest/discover.rb +2 -2
  179. data/lib/cucumber/cli/configuration.rb +7 -13
  180. data/lib/cucumber/cli/main.rb +6 -6
  181. data/lib/cucumber/cli/options.rb +163 -126
  182. data/lib/cucumber/cli/profile_loader.rb +24 -20
  183. data/lib/cucumber/configuration.rb +12 -17
  184. data/lib/cucumber/constantize.rb +1 -1
  185. data/lib/cucumber/core_ext/string.rb +1 -1
  186. data/lib/cucumber/deprecate.rb +1 -1
  187. data/lib/cucumber/events.rb +11 -1
  188. data/lib/cucumber/events/gherkin_source_read.rb +17 -0
  189. data/lib/cucumber/events/{step_match.rb → step_activated.rb} +2 -2
  190. data/lib/cucumber/events/step_definition_registered.rb +1 -1
  191. data/lib/cucumber/events/test_case_finished.rb +18 -0
  192. data/lib/cucumber/events/test_case_starting.rb +15 -0
  193. data/lib/cucumber/events/test_run_starting.rb +16 -0
  194. data/lib/cucumber/events/test_step_finished.rb +20 -0
  195. data/lib/cucumber/events/test_step_starting.rb +17 -0
  196. data/lib/cucumber/filters.rb +1 -0
  197. data/lib/cucumber/filters/activate_steps.rb +1 -1
  198. data/lib/cucumber/filters/broadcast_test_run_starting_event.rb +27 -0
  199. data/lib/cucumber/filters/retry.rb +1 -1
  200. data/lib/cucumber/filters/tag_limits.rb +3 -3
  201. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -1
  202. data/lib/cucumber/formatter/ansicolor.rb +8 -11
  203. data/lib/cucumber/formatter/backtrace_filter.rb +19 -7
  204. data/lib/cucumber/formatter/console.rb +16 -19
  205. data/lib/cucumber/formatter/console_counts.rb +8 -21
  206. data/lib/cucumber/formatter/console_issues.rb +30 -9
  207. data/lib/cucumber/formatter/duration.rb +1 -1
  208. data/lib/cucumber/formatter/fail_fast.rb +1 -1
  209. data/lib/cucumber/formatter/html.rb +168 -242
  210. data/lib/cucumber/formatter/html_builder.rb +110 -0
  211. data/lib/cucumber/formatter/inline-js.js +30 -0
  212. data/lib/cucumber/formatter/interceptor.rb +2 -2
  213. data/lib/cucumber/formatter/json.rb +12 -12
  214. data/lib/cucumber/formatter/junit.rb +11 -11
  215. data/lib/cucumber/formatter/legacy_api/adapter.rb +27 -27
  216. data/lib/cucumber/formatter/legacy_api/ast.rb +16 -20
  217. data/lib/cucumber/formatter/legacy_api/results.rb +6 -8
  218. data/lib/cucumber/formatter/pretty.rb +17 -17
  219. data/lib/cucumber/formatter/progress.rb +11 -12
  220. data/lib/cucumber/formatter/rerun.rb +1 -1
  221. data/lib/cucumber/formatter/steps.rb +1 -1
  222. data/lib/cucumber/formatter/unicode.rb +1 -1
  223. data/lib/cucumber/formatter/usage.rb +12 -12
  224. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +1 -1
  225. data/lib/cucumber/gherkin/formatter/escaping.rb +1 -1
  226. data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +44 -17
  227. data/lib/cucumber/glue/hook.rb +43 -0
  228. data/lib/cucumber/glue/invoke_in_world.rb +70 -0
  229. data/lib/cucumber/glue/proto_world.rb +225 -0
  230. data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +45 -86
  231. data/lib/cucumber/{rb_support → glue}/snippet.rb +62 -25
  232. data/lib/cucumber/glue/step_definition.rb +143 -0
  233. data/lib/cucumber/glue/world_factory.rb +23 -0
  234. data/lib/cucumber/hooks.rb +4 -4
  235. data/lib/cucumber/multiline_argument.rb +2 -2
  236. data/lib/cucumber/multiline_argument/data_table.rb +40 -178
  237. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
  238. data/lib/cucumber/platform.rb +3 -5
  239. data/lib/cucumber/rake/task.rb +11 -11
  240. data/lib/cucumber/rspec/disable_option_parser.rb +1 -1
  241. data/lib/cucumber/rspec/doubles.rb +1 -1
  242. data/lib/cucumber/running_test_case.rb +2 -2
  243. data/lib/cucumber/runtime.rb +46 -34
  244. data/lib/cucumber/runtime/after_hooks.rb +1 -1
  245. data/lib/cucumber/runtime/for_programming_languages.rb +1 -36
  246. data/lib/cucumber/runtime/support_code.rb +19 -15
  247. data/lib/cucumber/runtime/user_interface.rb +4 -11
  248. data/lib/cucumber/step_argument.rb +0 -2
  249. data/lib/cucumber/step_definition_light.rb +1 -0
  250. data/lib/cucumber/step_match.rb +16 -15
  251. data/lib/cucumber/step_match_search.rb +2 -3
  252. data/lib/cucumber/term/ansicolor.rb +1 -1
  253. data/lib/cucumber/version +1 -1
  254. data/lib/simplecov_setup.rb +1 -1
  255. data/scripts/invite-collaborator +40 -0
  256. data/scripts/update-history +83 -0
  257. data/spec/cucumber/cli/configuration_spec.rb +95 -97
  258. data/spec/cucumber/cli/main_spec.rb +7 -7
  259. data/spec/cucumber/cli/options_spec.rb +112 -78
  260. data/spec/cucumber/cli/profile_loader_spec.rb +24 -5
  261. data/spec/cucumber/cli/rerun_spec.rb +20 -20
  262. data/spec/cucumber/configuration_spec.rb +47 -47
  263. data/spec/cucumber/constantize_spec.rb +2 -2
  264. data/spec/cucumber/events_spec.rb +9 -0
  265. data/spec/cucumber/file_specs_spec.rb +25 -25
  266. data/spec/cucumber/filters/activate_steps_spec.rb +16 -16
  267. data/spec/cucumber/filters/gated_receiver_spec.rb +6 -6
  268. data/spec/cucumber/filters/retry_spec.rb +22 -9
  269. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +11 -11
  270. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +14 -14
  271. data/spec/cucumber/filters/tag_limits_spec.rb +8 -8
  272. data/spec/cucumber/formatter/ansicolor_spec.rb +9 -9
  273. data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
  274. data/spec/cucumber/formatter/console_counts_spec.rb +1 -1
  275. data/spec/cucumber/formatter/duration_spec.rb +3 -3
  276. data/spec/cucumber/formatter/fail_fast_spec.rb +21 -21
  277. data/spec/cucumber/formatter/html_spec.rb +58 -58
  278. data/spec/cucumber/formatter/json_spec.rb +44 -46
  279. data/spec/cucumber/formatter/junit_spec.rb +43 -45
  280. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +43 -43
  281. data/spec/cucumber/formatter/pretty_spec.rb +107 -107
  282. data/spec/cucumber/formatter/progress_spec.rb +20 -20
  283. data/spec/cucumber/formatter/rerun_spec.rb +1 -1
  284. data/spec/cucumber/formatter/spec_helper.rb +6 -5
  285. data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +20 -5
  286. data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
  287. data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +61 -25
  288. data/spec/cucumber/glue/step_definition_spec.rb +207 -0
  289. data/spec/cucumber/hooks_spec.rb +3 -3
  290. data/spec/cucumber/multiline_argument/data_table_spec.rb +177 -133
  291. data/spec/cucumber/project_initializer_spec.rb +10 -10
  292. data/spec/cucumber/rake/forked_spec.rb +10 -10
  293. data/spec/cucumber/rake/task_spec.rb +20 -20
  294. data/spec/cucumber/running_test_case_spec.rb +35 -35
  295. data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -30
  296. data/spec/cucumber/runtime_spec.rb +2 -2
  297. data/spec/cucumber/step_argument_spec.rb +5 -5
  298. data/spec/cucumber/step_match_search_spec.rb +31 -41
  299. data/spec/cucumber/step_match_spec.rb +33 -33
  300. data/spec/cucumber/world/pending_spec.rb +10 -10
  301. metadata +117 -47
  302. data/features/docs/formatters/debug_formatter.feature +0 -47
  303. data/features/docs/writing_support_code/transforms.feature +0 -98
  304. data/features/lib/step_definitions/wire_steps.rb +0 -59
  305. data/gem_tasks/cucumber.rake +0 -26
  306. data/lib/cucumber/core_ext/instance_exec.rb +0 -71
  307. data/lib/cucumber/formatter/debug.rb +0 -36
  308. data/lib/cucumber/rb_support/rb_hook.rb +0 -20
  309. data/lib/cucumber/rb_support/rb_step_definition.rb +0 -132
  310. data/lib/cucumber/rb_support/rb_transform.rb +0 -60
  311. data/lib/cucumber/rb_support/rb_world.rb +0 -171
  312. data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -5
  313. data/spec/cucumber/formatter/debug_spec.rb +0 -65
  314. data/spec/cucumber/rb_support/rb_language_spec.rb +0 -321
  315. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -200
  316. data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -47
@@ -0,0 +1,54 @@
1
+ @wip
2
+ Feature: Test Case Starting Event
3
+
4
+ This event is fired just before each scenario or scenario outline example row
5
+ (generally named a Test Case) starts to be executed. This event is read-only.
6
+
7
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestCaseStarting) for more information about the data available on this event and the result object.
8
+
9
+ Background:
10
+ Given the standard step definitions
11
+ And a file named "features/test.feature" with:
12
+ """
13
+ @feature
14
+ Feature: A feature
15
+
16
+ @scenario
17
+ Scenario: A passing scenario
18
+ Given this is a step
19
+ """
20
+ And a file named "features/support/events.rb" with:
21
+ """
22
+ stdout = nil
23
+ AfterConfiguration do |config|
24
+ stdout = config.out_stream # make sure all the `puts` calls can write to the same output
25
+ config.on_event :test_case_starting do |event|
26
+ stdout.puts "before"
27
+ stdout.puts event.test_case.tags.map(&:name)
28
+ end
29
+ config.on_event :test_case_finished do |event|
30
+ stdout.puts "after"
31
+ end
32
+ end
33
+
34
+ Given(/this is a step/) do
35
+ end
36
+
37
+ """
38
+
39
+ Scenario: Run the test case
40
+ When I run `cucumber -q`
41
+ Then it should pass with:
42
+ """
43
+ before
44
+ @feature
45
+ @scenario
46
+ @feature
47
+ Feature: A feature
48
+
49
+ @scenario
50
+ Scenario: A passing scenario
51
+ Given this is a step
52
+ after
53
+ """
54
+
@@ -0,0 +1,40 @@
1
+ Feature: Test Run Finished
2
+
3
+ This event is fired after all the test cases have been executed.
4
+
5
+ Typically, a formatter would use this to print out summary information.
6
+
7
+ At the moment this event contains no data, but it could be extended
8
+ in the future to carry the summary information for the convenience
9
+ of formatter authors.
10
+
11
+ Background:
12
+ Given the standard step definitions
13
+ And a file named "features/test.feature" with:
14
+ """
15
+ Feature: A feature
16
+
17
+ Scenario: A passing scenario
18
+ Given this is a step
19
+ """
20
+ And a file named "features/support/events.rb" with:
21
+ """
22
+ class MyFormatter
23
+ def initialize(config)
24
+ config.on_event :test_case_finished do
25
+ config.out_stream.puts "test case finished"
26
+ end
27
+ config.on_event :test_run_finished do
28
+ config.out_stream.puts "the end"
29
+ end
30
+ end
31
+ end
32
+ """
33
+
34
+ Scenario: Run the test case
35
+ When I run `cucumber -q -f MyFormatter`
36
+ Then it should pass with:
37
+ """
38
+ test case finished
39
+ the end
40
+ """
@@ -0,0 +1,41 @@
1
+ Feature: Test Run Starting Event
2
+
3
+ This event is fired once all test cases have been filtered, just before
4
+ the first one is executed.
5
+
6
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestRunStarting) for more information about the data available on this event.
7
+
8
+ Background:
9
+ Given the standard step definitions
10
+ And a file named "features/foo.feature" with:
11
+ """
12
+ Feature: Foo
13
+ Scenario:
14
+ Given a passing step
15
+ """
16
+ And a file named "features/bar.feature" with:
17
+ """
18
+ Feature: Foo
19
+ Scenario:
20
+ Given a passing step
21
+ """
22
+ And a file named "features/support/events.rb" with:
23
+ """
24
+ AfterConfiguration do |config|
25
+ config.on_event :test_run_starting do |event|
26
+ config.out_stream.puts "test run starting"
27
+ config.out_stream.puts event.test_cases.map(&:location)
28
+ end
29
+ end
30
+ """
31
+
32
+ @todo-windows
33
+ Scenario: Run the test case
34
+ When I run `cucumber -q`
35
+ Then it should pass with:
36
+ """
37
+ test run starting
38
+ features/bar.feature:2
39
+ features/foo.feature:2
40
+ """
41
+
@@ -0,0 +1,47 @@
1
+ Feature: Test Step Finished Event
2
+
3
+ This event is fired after each step in a scenario or scenario outline example
4
+ (generally named a Test Step) has finished executing. You can use the event to learn about the
5
+ result of the test step.
6
+
7
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestStepFinished) for more information about the data available on this event and the result object.
8
+
9
+ Background:
10
+ Given the standard step definitions
11
+ And a file named "features/test.feature" with:
12
+ """
13
+ Feature: A feature
14
+
15
+ @pass
16
+ Scenario: A passing scenario
17
+ Given this step passes
18
+
19
+ @fail
20
+ Scenario: A failing scenario
21
+ Given this step fails
22
+ """
23
+ And a file named "features/support/events.rb" with:
24
+ """
25
+ AfterConfiguration do |config|
26
+ config.on_event :test_step_finished do |event|
27
+ config.out_stream.puts "Test step: #{event.test_step.name}"
28
+ config.out_stream.puts "The result is: #{event.result}"
29
+ end
30
+ end
31
+ """
32
+
33
+ Scenario: Test step passes
34
+ When I run `cucumber --tags @pass`
35
+ Then it should pass with:
36
+ """
37
+ Test step: this step passes
38
+ The result is: ✓
39
+ """
40
+
41
+ Scenario: Test step fails
42
+ When I run `cucumber --tags @fail`
43
+ Then it should fail with:
44
+ """
45
+ Test step: this step fails
46
+ The result is: ✗
47
+ """
@@ -0,0 +1,43 @@
1
+ Feature: Test Step Starting Event
2
+
3
+ This event is fired just before each step in a scenario or scenario outline example
4
+ (generally named a Test Step) starts to be executed. This event is read-only, so there
5
+ is no way to prevent the test step from running, but you can use it for logging or user
6
+ notification.
7
+
8
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestStepStarting) for more information about the data available on this event and the result object.
9
+
10
+ Background:
11
+ Given the standard step definitions
12
+ And a file named "features/test.feature" with:
13
+ """
14
+ Feature: A feature
15
+
16
+ Scenario: A passing scenario
17
+ Given this is a step
18
+ """
19
+ And a file named "features/support/events.rb" with:
20
+ """
21
+ stdout = nil
22
+ AfterConfiguration do |config|
23
+ stdout = config.out_stream # make sure all the `puts` calls can write to the same output
24
+ config.on_event :test_step_starting do |event|
25
+ stdout.puts "before"
26
+ end
27
+ config.on_event :test_step_finished do |event|
28
+ stdout.puts "after"
29
+ end
30
+ end
31
+ Given(/this is a step/) do
32
+ stdout.puts "during"
33
+ end
34
+ """
35
+
36
+ Scenario: Test step passes
37
+ When I run `cucumber`
38
+ Then it should pass with:
39
+ """
40
+ before
41
+ during
42
+ after
43
+ """
@@ -21,7 +21,7 @@ Feature: Exception in After Block
21
21
  end
22
22
  """
23
23
 
24
- @spawn
24
+ @spawn @todo-windows
25
25
  Scenario: Handle Exception in standard scenario step and carry on
26
26
  Given a file named "features/naughty_step_in_scenario.feature" with:
27
27
  """
@@ -54,7 +54,7 @@ Feature: Exception in After Block
54
54
 
55
55
  """
56
56
 
57
- @spawn
57
+ @spawn @todo-windows
58
58
  Scenario: Handle Exception in scenario outline table row and carry on
59
59
  Given a file named "features/naughty_step_in_scenario_outline.feature" with:
60
60
  """
@@ -100,6 +100,7 @@ Feature: Exception in After Block
100
100
 
101
101
  """
102
102
 
103
+ @todo-windows
103
104
  Scenario: Handle Exception using the progress format
104
105
  Given a file named "features/naughty_step_in_scenario.feature" with:
105
106
  """
@@ -21,6 +21,7 @@ Feature: Exception in AfterStep Block
21
21
  end
22
22
  """
23
23
 
24
+ @todo-windows
24
25
  Scenario: Handle Exception in standard scenario step and carry on
25
26
  Given a file named "features/naughty_step_in_scenario.feature" with:
26
27
  """
@@ -54,6 +55,7 @@ Feature: Exception in AfterStep Block
54
55
 
55
56
  """
56
57
 
58
+ @todo-windows
57
59
  Scenario: Handle Exception in scenario outline table row and carry on
58
60
  Given a file named "features/naughty_step_in_scenario_outline.feature" with:
59
61
  """
@@ -12,6 +12,7 @@ Feature: Exceptions in Around Hooks
12
12
  There's another scenario to consider, where the exception occurs after the steps
13
13
  have been run. How would we want to report in that case?
14
14
 
15
+ @todo-windows
15
16
  Scenario: Exception before the test case is run
16
17
  Given the standard step definitions
17
18
  And a file named "features/support/env.rb" with:
@@ -44,6 +45,7 @@ Feature: Exceptions in Around Hooks
44
45
 
45
46
  """
46
47
 
48
+ @todo-windows
47
49
  Scenario: Exception after the test case is run
48
50
  Given the standard step definitions
49
51
  And a file named "features/support/env.rb" with:
@@ -14,7 +14,7 @@ Feature: Exception in Before Block
14
14
  end
15
15
  """
16
16
 
17
- @spawn
17
+ @spawn @todo-windows
18
18
  Scenario: Handle Exception in standard scenario step and carry on
19
19
  Given a file named "features/naughty_step_in_scenario.feature" with:
20
20
  """
@@ -41,6 +41,7 @@ Feature: Exception in Before Block
41
41
 
42
42
  """
43
43
 
44
+ @todo-windows
44
45
  Scenario: Handle Exception in Before hook for Scenario with Background
45
46
  Given a file named "features/naughty_step_in_before.feature" with:
46
47
  """
@@ -74,6 +75,7 @@ Feature: Exception in Before Block
74
75
 
75
76
  """
76
77
 
78
+ @todo-windows
77
79
  Scenario: Handle Exception using the progress format
78
80
  Given a file named "features/naughty_step_in_scenario.feature" with:
79
81
  """
@@ -41,7 +41,27 @@ Feature: Custom Formatter
41
41
 
42
42
  """
43
43
 
44
- Scenario: Use the legacy API
44
+ Scenario: Custom config
45
+ Given a file named "features/support/custom_formatter.rb" with:
46
+ """
47
+ module MyCustom
48
+ class Formatter
49
+ def initialize(config, options)
50
+ @io = config.out_stream
51
+ config.on_event :test_run_finished do |event|
52
+ @io.print options.inspect
53
+ end
54
+ end
55
+ end
56
+ end
57
+ """
58
+ When I run `cucumber features/f.feature --format MyCustom::Formatter,foo=bar,one=two`
59
+ Then it should pass with exactly:
60
+ """
61
+ {"foo"=>"bar", "one"=>"two"}
62
+ """
63
+
64
+ Scenario: Use the legacy API
45
65
  This is deprecated and should no longer be used.
46
66
 
47
67
  Given a file named "features/support/custom_legacy_formatter.rb" with:
@@ -104,7 +104,7 @@ Feature: JSON output formatter
104
104
  """
105
105
 
106
106
  # Need to investigate why this won't pass in-process. error_message doesn't get det?
107
- @spawn
107
+ @spawn @todo-windows
108
108
  Scenario: one feature, one passing scenario, one failing scenario
109
109
  When I run `cucumber --format json features/one_passing_one_failing.feature`
110
110
  Then it should fail with JSON:
@@ -195,7 +195,7 @@ Feature: JSON output formatter
195
195
 
196
196
  """
197
197
 
198
- @spawn
198
+ @spawn @todo-windows
199
199
  Scenario: one feature, one passing scenario, one failing scenario with prettyfied json
200
200
  When I run `cucumber --format json_pretty features/one_passing_one_failing.feature`
201
201
  Then it should fail with JSON:
@@ -395,7 +395,7 @@ Feature: JSON output formatter
395
395
 
396
396
  """
397
397
 
398
- @spawn
398
+ @spawn @todo-windows
399
399
  Scenario: scenario outline
400
400
  When I run `cucumber --format json features/outline.feature`
401
401
  Then it should fail with JSON:
@@ -541,7 +541,7 @@ Feature: JSON output formatter
541
541
 
542
542
  """
543
543
 
544
- @spawn
544
+ @spawn @todo-windows
545
545
  Scenario: scenario outline expanded
546
546
  When I run `cucumber --expand --format json features/outline.feature`
547
547
  Then it should fail with JSON:
@@ -59,7 +59,7 @@ Feature: JUnit output formatter
59
59
  | is undefined |
60
60
  """
61
61
 
62
- @spawn
62
+ @spawn @todo-windows
63
63
  Scenario: one feature, one passing scenario, one failing scenario
64
64
  When I run `cucumber --format junit --out tmp/ features/one_passing_one_failing.feature`
65
65
  Then it should fail with:
@@ -101,7 +101,7 @@ Feature: JUnit output formatter
101
101
 
102
102
  """
103
103
 
104
- @spawn
104
+ @spawn @todo-windows
105
105
  Scenario: one feature in a subdirectory, one passing scenario, one failing scenario
106
106
  When I run `cucumber --format junit --out tmp/ features/some_subdirectory/one_passing_one_failing.feature --require features`
107
107
  Then it should fail with:
@@ -225,7 +225,8 @@ Feature: JUnit output formatter
225
225
  </testsuite>
226
226
 
227
227
  """
228
-
228
+
229
+ @todo-windows
229
230
  Scenario: run all features
230
231
  When I run `cucumber --format junit --out tmp/ features`
231
232
  Then it should fail with:
@@ -246,7 +247,7 @@ can't convert .* into String \(TypeError\)
246
247
  You *must* specify --out DIR for the junit formatter
247
248
  """
248
249
 
249
- @spawn
250
+ @spawn @todo-windows
250
251
  Scenario: strict mode, one feature, one scenario outline, four examples: one passing, one failing, one pending, one undefined
251
252
  When I run `cucumber --strict --format junit --out tmp/ features/scenario_outline.feature`
252
253
  Then it should fail with:
@@ -328,7 +329,7 @@ You *must* specify --out DIR for the junit formatter
328
329
 
329
330
  """
330
331
 
331
- @spawn
332
+ @spawn @todo-windows
332
333
  Scenario: strict mode with --expand option, one feature, one scenario outline, four examples: one passing, one failing, one pending, one undefined
333
334
  When I run `cucumber --strict --expand --format junit --out tmp/ features/scenario_outline.feature`
334
335
  Then it should fail with exactly:
@@ -410,7 +411,7 @@ You *must* specify --out DIR for the junit formatter
410
411
 
411
412
  """
412
413
 
413
- @spawn
414
+ @spawn @todo-windows
414
415
  Scenario: run test cases from different features interweaved
415
416
  When I run `cucumber --format junit --out tmp/ features/one_passing_one_failing.feature:3 features/pending.feature:3 features/one_passing_one_failing.feature:6`
416
417
  Then it should fail with:
@@ -17,6 +17,7 @@ Feature: Pretty output formatter
17
17
  When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format pretty --expand `
18
18
  Then it should pass
19
19
 
20
+ @todo-windows
20
21
  Scenario: when using a profile the output should include 'Using the default profile...'
21
22
  And a file named "cucumber.yml" with:
22
23
  """
@@ -17,6 +17,7 @@ Feature: Progress output formatter
17
17
  When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format progress --expand `
18
18
  Then it should pass
19
19
 
20
+ @todo-windows
20
21
  Scenario: when using a profile the output should include 'Using the default profile...'
21
22
  And a file named "cucumber.yml" with:
22
23
  """