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
@@ -4,6 +4,7 @@ Feature: Fail fast
4
4
  The --fail-fast flag causes Cucumber to exit immediately after the first
5
5
  scenario fails.
6
6
 
7
+ @todo-windows
7
8
  Scenario: When a scenario fails
8
9
  Given a file named "features/bad.feature" with:
9
10
  """
@@ -25,6 +26,7 @@ Feature: Fail fast
25
26
  1 scenario (1 failed)
26
27
  """
27
28
 
29
+ @todo-windows
28
30
  Scenario: When all the scenarios pass
29
31
  Given a file named "features/first.feature" with:
30
32
  """
@@ -1,17 +1,17 @@
1
1
  @needs-many-fonts
2
- Feature: Language help
2
+ Feature: i18n
3
3
 
4
4
  It's possible to ask cucumber which keywords are used for any
5
5
  particular language by running:
6
6
 
7
- `cucumber --i18n <language code> help`
7
+ `cucumber --i18n-keywords <LANG>`
8
8
 
9
9
  This will print a table showing all the different words we use for
10
10
  that language, to allow you to easily write features in any language
11
11
  you choose.
12
12
 
13
13
  Scenario: Get help for Portuguese language
14
- When I run `cucumber --i18n pt help`
14
+ When I run `cucumber --i18n-keywords pt`
15
15
  Then it should pass with:
16
16
  """
17
17
  | feature | "Funcionalidade", "Característica", "Caracteristica" |
@@ -33,10 +33,10 @@ Feature: Language help
33
33
  """
34
34
 
35
35
  Scenario: List languages
36
- When I run `cucumber --i18n help`
36
+ When I run `cucumber --i18n-languages`
37
37
  Then cucumber lists all the supported languages
38
38
 
39
39
  Scenario: Seek help for invalid language
40
- When I run `cucumber --i18n foo`
40
+ When I run `cucumber --i18n-keywords foo`
41
41
  Then the output includes the message "Invalid language 'foo'"
42
- And cucumber lists all the supported languages
42
+ And cucumber lists all the supported languages
@@ -57,7 +57,7 @@ Feature: Randomize
57
57
  When I run `cucumber`
58
58
  Then it should pass
59
59
 
60
- @spawn
60
+ @spawn @todo-windows
61
61
  Scenario: Run scenarios randomized
62
62
  When I run `cucumber --order random:41544 -q`
63
63
  Then it should fail
@@ -101,7 +101,7 @@ Feature: Randomize
101
101
 
102
102
  """
103
103
 
104
- @spawn
104
+ @spawn @todo-windows
105
105
  Scenario: Run scenarios randomized with some skipped
106
106
  When I run `cucumber --tags ~@skipme --order random:41544 -q`
107
107
  Then it should fail
@@ -14,13 +14,14 @@ Feature: Retry failing tests
14
14
  Given a scenario "Fails-once" that fails once, then passes
15
15
  And a scenario "Fails-twice" that fails twice, then passes
16
16
  And a scenario "Solid" that passes
17
- And a scenario "Fails-forever" that fails
18
17
 
18
+ @todo-windows
19
19
  Scenario: Retry once, so Fails-once starts to pass
20
+ Given a scenario "Fails-forever" that fails
20
21
  When I run `cucumber -q --retry 1 --format summary`
21
22
  Then it should fail with:
22
23
  """
23
- 7 scenarios (5 failed, 2 passed)
24
+ 4 scenarios (2 failed, 1 flaky, 1 passed)
24
25
  """
25
26
  And it should fail with:
26
27
  """
@@ -40,11 +41,13 @@ Feature: Retry failing tests
40
41
  Fails-twice ✗
41
42
  """
42
43
 
44
+ @todo-windows
43
45
  Scenario: Retry twice, so Fails-twice starts to pass too
46
+ Given a scenario "Fails-forever" that fails
44
47
  When I run `cucumber -q --retry 2 --format summary`
45
48
  Then it should fail with:
46
49
  """
47
- 9 scenarios (6 failed, 3 passed)
50
+ 4 scenarios (1 failed, 2 flaky, 1 passed)
48
51
  """
49
52
  And it should fail with:
50
53
  """
@@ -65,3 +68,25 @@ Feature: Retry failing tests
65
68
  Fails-twice ✗
66
69
  Fails-twice ✓
67
70
  """
71
+
72
+ @todo-windows
73
+ Scenario: Flaky scenarios gives exit code zero in non-strict mode
74
+ When I run `cucumber -q --retry 2 --format summary`
75
+ Then it should pass with:
76
+ """
77
+
78
+
79
+ 3 scenarios (2 flaky, 1 passed)
80
+ """
81
+
82
+ @todo-windows
83
+ Scenario: Flaky scenarios gives non-zero exit code in strict mode
84
+ When I run `cucumber -q --retry 2 --format summary --strict`
85
+ Then it should fail with:
86
+ """
87
+ Flaky Scenarios:
88
+ cucumber features/fails_once.feature:2
89
+ cucumber features/fails_twice.feature:2
90
+
91
+ 3 scenarios (2 flaky, 1 passed)
92
+ """
@@ -33,6 +33,7 @@ Feature: Run feature elements matching a name with --name/-n
33
33
  | b |
34
34
  """
35
35
 
36
+ @todo-windows
36
37
  Scenario: Matching Feature names
37
38
  When I run `cucumber -q --name feature`
38
39
  Then it should pass with:
@@ -18,6 +18,7 @@ Feature: Running multiple formatters
18
18
  And there is world peace
19
19
  """
20
20
 
21
+ @todo-windows
21
22
  Scenario: Multiple formatters and outputs
22
23
  When I run `cucumber --no-color --format progress --out progress.txt --format pretty --out pretty.txt --no-source --dry-run --no-snippets features/test.feature`
23
24
  Then the stderr should not contain anything
@@ -45,6 +46,7 @@ Feature: Running multiple formatters
45
46
 
46
47
  """
47
48
 
49
+ @todo-windows
48
50
  Scenario: Two formatters to stdout
49
51
  When I run `cucumber -f progress -f pretty features/test.feature`
50
52
  Then it should fail with:
@@ -52,6 +54,7 @@ Feature: Running multiple formatters
52
54
  All but one formatter must use --out, only one can print to each stream (or STDOUT) (RuntimeError)
53
55
  """
54
56
 
57
+ @todo-windows
55
58
  Scenario: Two formatters to stdout when using a profile
56
59
  Given the following profiles are defined:
57
60
  """
@@ -28,6 +28,9 @@ Feature: Strict mode
28
28
  Undefined step: "this step passes" (Cucumber::Undefined)
29
29
  features/missing.feature:3:in `Given this step passes'
30
30
 
31
+ Undefined Scenarios:
32
+ cucumber features/missing.feature:2
33
+
31
34
  1 scenario (1 undefined)
32
35
  1 step (1 undefined)
33
36
  """
@@ -45,6 +48,9 @@ Feature: Strict mode
45
48
  ./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
46
49
  features/pending.feature:3:in `Given this step is pending'
47
50
 
51
+ Pending Scenarios:
52
+ cucumber features/pending.feature:2
53
+
48
54
  1 scenario (1 pending)
49
55
  1 step (1 pending)
50
56
  """
@@ -12,6 +12,7 @@ Feature: Nested Steps
12
12
  end
13
13
  """
14
14
 
15
+ @todo-windows
15
16
  Scenario: Use #steps to call several steps at once
16
17
  Given a step definition that looks like this:
17
18
  """ruby
@@ -31,6 +32,7 @@ Feature: Nested Steps
31
32
 
32
33
  """
33
34
 
35
+ @todo-windows
34
36
  Scenario: Use #step to call a single step
35
37
  Given a step definition that looks like this:
36
38
  """ruby
@@ -48,6 +50,7 @@ Feature: Nested Steps
48
50
 
49
51
  """
50
52
 
53
+ @todo-windows
51
54
  Scenario: Use #steps to call a table
52
55
  Given a step definition that looks like this:
53
56
  """ruby
@@ -77,6 +80,7 @@ Feature: Nested Steps
77
80
 
78
81
  """
79
82
 
83
+ @todo-windows
80
84
  Scenario: Use #steps to call a multi-line string
81
85
  Given a step definition that looks like this:
82
86
  """ruby
@@ -103,7 +107,7 @@ Feature: Nested Steps
103
107
  Liouville
104
108
  """
105
109
 
106
- @spawn
110
+ @spawn @todo-windows
107
111
  Scenario: Backtrace doesn't skip nested steps
108
112
  Given a step definition that looks like this:
109
113
  """ruby
@@ -14,6 +14,7 @@ Feature: Nested Steps in I18n
14
14
  end
15
15
  """
16
16
 
17
+ @todo-windows
17
18
  Scenario: Use #steps to call several steps at once
18
19
  Given a step definition that looks like this:
19
20
  """ruby
@@ -6,6 +6,7 @@ Feature: Nested Steps with either table or doc string
6
6
  Given two turtles
7
7
  """
8
8
 
9
+ @todo-windows
9
10
  Scenario: Use #step with table
10
11
  Given a step definition that looks like this:
11
12
  """ruby
@@ -34,6 +35,7 @@ Feature: Nested Steps with either table or doc string
34
35
 
35
36
  """
36
37
 
38
+ @todo-windows
37
39
  Scenario: Use #step with Doc String
38
40
  Given a step definition that looks like this:
39
41
  """ruby
@@ -76,7 +76,7 @@ Feature: Pretty formatter - Printing messages
76
76
  """
77
77
 
78
78
  # Don't know why, but we need to spawn this for JRuby otherwise it gives wierd errors
79
- @spawn
79
+ @spawn @todo-windows
80
80
  Scenario: Delayed messages feature
81
81
  When I run `cucumber --quiet --format pretty features/f.feature`
82
82
  Then the stderr should not contain anything
@@ -1,5 +1,6 @@
1
1
  Feature: Skip Scenario
2
2
 
3
+ @todo-windows
3
4
  Scenario: With a passing step
4
5
  Given a file named "features/test.feature" with:
5
6
  """
@@ -4,35 +4,35 @@ Feature: Snippets
4
4
  snippet suggestion, which you can then paste into a step definitions
5
5
  file of your choosing.
6
6
 
7
- Scenario: Snippet for undefined step with a pystring
7
+ Scenario: Snippet for undefined step with a Doc String
8
8
  Given a file named "features/undefined_steps.feature" with:
9
9
  """
10
10
  Feature:
11
- Scenario: pystring
12
- Given a pystring
13
- \"\"\"
14
- example with <html> entities
15
- \"\"\"
16
- When a simple when step
17
- And another when step
18
- Then a simple then step
11
+ Scenario: Doc String
12
+ Given a Doc String
13
+ \"\"\"
14
+ example with <html> entities
15
+ \"\"\"
16
+ When 1 simple when step
17
+ And another "when" step
18
+ Then a simple then step
19
19
  """
20
20
  When I run `cucumber features/undefined_steps.feature -s`
21
21
  Then the output should contain:
22
22
  """
23
- Given(/^a pystring$/) do |string|
23
+ Given("a Doc String") do |string|
24
24
  pending # Write code here that turns the phrase above into concrete actions
25
25
  end
26
26
 
27
- When(/^a simple when step$/) do
27
+ When("{int} simple when step") do |int|
28
28
  pending # Write code here that turns the phrase above into concrete actions
29
29
  end
30
30
 
31
- When(/^another when step$/) do
31
+ When("another {string} step") do |string|
32
32
  pending # Write code here that turns the phrase above into concrete actions
33
33
  end
34
34
 
35
- Then(/^a simple then step$/) do
35
+ Then("a simple then step") do
36
36
  pending # Write code here that turns the phrase above into concrete actions
37
37
  end
38
38
  """
@@ -41,15 +41,15 @@ Feature: Snippets
41
41
  Given a file named "features/undefined_steps.feature" with:
42
42
  """
43
43
  Feature:
44
- Scenario: table
45
- Given a table
46
- | table |
47
- |example|
44
+ Scenario: table
45
+ Given a table
46
+ | table |
47
+ |example|
48
48
  """
49
49
  When I run `cucumber features/undefined_steps.feature -s`
50
50
  Then the output should contain:
51
51
  """
52
- Given(/^a table$/) do |table|
52
+ Given("a table") do |table|
53
53
  # table is a Cucumber::MultilineArgument::DataTable
54
54
  pending # Write code here that turns the phrase above into concrete actions
55
55
  end
@@ -0,0 +1,43 @@
1
+ Feature: Gherkin Source Read Event
2
+
3
+ This event is fired when Cucumber reads a Gherkin document.
4
+
5
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/GherkinSourceRead)
6
+ for more information about the data available on this event.
7
+
8
+ @todo-windows
9
+ Scenario: Read two documents
10
+ Given a file named "features/one.feature" with:
11
+ """
12
+ Feature: One
13
+ This is the first feature
14
+
15
+ """
16
+ And a file named "features/two.feature" with:
17
+ """
18
+ Feature: Two
19
+ This is the other feature
20
+
21
+ """
22
+ And a file named "features/support/events.rb" with:
23
+ """
24
+ AfterConfiguration do |config|
25
+ config.on_event :gherkin_source_read do |event|
26
+ config.out_stream.puts "path: #{event.path}"
27
+ config.out_stream.puts "body:\n#{event.body}"
28
+ end
29
+ end
30
+ """
31
+ When I run `cucumber --dry-run`
32
+ Then it should pass with:
33
+ """
34
+ path: features/one.feature
35
+ body:
36
+ Feature: One
37
+ This is the first feature
38
+ path: features/two.feature
39
+ body:
40
+ Feature: Two
41
+ This is the other feature
42
+ """
43
+
@@ -0,0 +1,36 @@
1
+ Feature: Step Activated Event
2
+
3
+ This event is fired when Cucumber finds a matching definition for a Gherkin step.
4
+
5
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/StepActivated)
6
+ for more information about the data available on this event.
7
+
8
+ Scenario: Activate a step
9
+ Given a file named "features/step_definitions/steps.rb" with:
10
+ """
11
+ Given /a step/ do
12
+ # automation goes here
13
+ end
14
+ """
15
+ And a file named "features/test.feature" with:
16
+ """
17
+ Feature:
18
+ Scenario:
19
+ Given a step
20
+ """
21
+ And a file named "features/support/events.rb" with:
22
+ """
23
+ AfterConfiguration do |config|
24
+ config.on_event :step_activated do |event|
25
+ config.out_stream.puts "The step: #{event.test_step.location}"
26
+ config.out_stream.puts "The step definition: #{event.step_match.location}"
27
+ end
28
+ end
29
+ """
30
+ When I run `cucumber`
31
+ Then it should pass with:
32
+ """
33
+ The step: features/test.feature:3
34
+ The step definition: features/step_definitions/steps.rb:1
35
+ """
36
+
@@ -0,0 +1,29 @@
1
+ Feature: Step definition registered
2
+
3
+ This event is fired when Cucumber loads the user's step definitions. Typically, this is
4
+ when the `Given /^my step$/ do` methods are called.
5
+
6
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/StepDefinitionRegistered) for more information about the data available on this event.
7
+
8
+ Scenario: Register a new step definition
9
+ Given the standard step definitions
10
+ And a file named "features/step_definitions/steps.rb" with:
11
+ """
12
+ Given /a step/ do
13
+ # automation goes here
14
+ end
15
+ """
16
+ And a file named "features/support/events.rb" with:
17
+ """
18
+ AfterConfiguration do |config|
19
+ config.on_event :step_definition_registered do |event|
20
+ config.out_stream.puts "The step definition: #{event.step_definition.location}"
21
+ end
22
+ end
23
+ """
24
+ When I run `cucumber`
25
+ Then it should pass with:
26
+ """
27
+ The step definition: features/step_definitions/steps.rb:1
28
+ """
29
+
@@ -0,0 +1,35 @@
1
+ Feature: Test Case Finished Event
2
+
3
+ This event is fired after each scenario or examples table row (generally named a
4
+ Test Case) has finished executing. You can use the event to learn about the
5
+ result of the test case.
6
+
7
+ See [the API documentation](http://www.rubydoc.info/github/cucumber/cucumber-ruby/Cucumber/Events/TestCaseFinished) for more information about the data available on this event.
8
+
9
+ Scenario: Test case passes
10
+ Given the standard step definitions
11
+ And a file named "features/passing.feature" with:
12
+ """
13
+ Feature: A feature
14
+ Scenario: A scenario
15
+ Given this step passes
16
+ """
17
+ And a file named "features/support/events.rb" with:
18
+ """
19
+ AfterConfiguration do |config|
20
+ config.on_event :test_case_finished do |event|
21
+ config.out_stream.puts "Results"
22
+ config.out_stream.puts "-------"
23
+ config.out_stream.puts "Test case: #{event.test_case.name}"
24
+ config.out_stream.puts "The result is: #{event.result}"
25
+ end
26
+ end
27
+ """
28
+ When I run `cucumber`
29
+ Then it should pass with:
30
+ """
31
+ Results
32
+ -------
33
+ Test case: A scenario
34
+ The result is: ✓
35
+ """