cucumber 1.3.10 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (465) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +1 -0
  3. data/.rspec +1 -1
  4. data/.travis.yml +4 -3
  5. data/CONTRIBUTING.md +9 -0
  6. data/Gemfile +9 -2
  7. data/History.md +212 -22
  8. data/LICENSE +2 -2
  9. data/README.md +4 -4
  10. data/Rakefile +10 -1
  11. data/bin/cucumber +1 -5
  12. data/cucumber.gemspec +10 -13
  13. data/cucumber.yml +14 -24
  14. data/examples/{ramaze → i18n/el}/Rakefile +1 -1
  15. data/examples/i18n/el/features/addition.feature +17 -0
  16. data/examples/i18n/el/features/division.feature +10 -0
  17. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +24 -0
  18. data/examples/i18n/el/lib/calculator.rb +14 -0
  19. data/examples/i18n/fr/Rakefile +3 -1
  20. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +2 -2
  21. data/examples/i18n/ht/Rakefile +6 -0
  22. data/examples/i18n/ht/features/adisyon.feature +17 -0
  23. data/examples/i18n/ht/features/divizyon.feature +10 -0
  24. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +25 -0
  25. data/examples/i18n/ht/lib/kalkilatris.rb +14 -0
  26. data/examples/i18n/zh-CN/features/{step_definitons → step_definitions}/calculator_steps.rb +4 -4
  27. data/examples/tcl/features/step_definitions/fib_steps.rb +1 -1
  28. data/{legacy_features → features/docs}/api/list_step_defs_as_json.feature +14 -14
  29. data/{legacy_features → features/docs}/api/run_cli_main_with_existing_runtime.feature +5 -10
  30. data/features/{backtraces.feature → docs/cli/backtraces.feature} +2 -2
  31. data/features/docs/cli/dry_run.feature +73 -0
  32. data/features/docs/cli/exclude_files.feature +18 -0
  33. data/features/docs/cli/execute_with_tag_filter.feature +117 -0
  34. data/features/docs/cli/randomize.feature +46 -0
  35. data/features/docs/cli/require.feature +27 -0
  36. data/features/docs/cli/run_scenarios_matching_name.feature +104 -0
  37. data/features/docs/cli/run_specific_scenarios.feature +75 -0
  38. data/features/docs/cli/showing_differences.feature +43 -0
  39. data/features/docs/cli/specifying_multiple_formatters.feature +44 -0
  40. data/features/docs/cli/strict_mode.feature +64 -0
  41. data/features/{nested_steps.feature → docs/defining_steps/nested_steps.feature} +52 -6
  42. data/features/{nested_steps_i18n.feature → docs/defining_steps/nested_steps_i18n.feature} +0 -2
  43. data/features/{step_definitions.feature → docs/defining_steps/one_line_step_definitions.feature} +3 -3
  44. data/features/docs/defining_steps/printing_messages.feature +148 -0
  45. data/features/docs/defining_steps/skip_scenario.feature +62 -0
  46. data/features/docs/defining_steps/snippets.feature +56 -0
  47. data/{legacy_features → features/docs/defining_steps}/table_diffing.feature +21 -16
  48. data/features/{transforms.feature → docs/defining_steps/transforms.feature} +2 -2
  49. data/{legacy_features/exception_in_after_block.feature → features/docs/exception_in_after_hook.feature} +25 -26
  50. data/{legacy_features/exception_in_after_step_block.feature → features/docs/exception_in_after_step_hook.feature} +22 -24
  51. data/features/docs/exception_in_around_hook.feature +80 -0
  52. data/{legacy_features/exception_in_before_block.feature → features/docs/exception_in_before_hook.feature} +18 -20
  53. data/features/docs/extending_cucumber/custom_filter.feature +29 -0
  54. data/features/docs/extending_cucumber/custom_formatter.feature +94 -0
  55. data/features/docs/formatters/debug_formatter.feature +47 -0
  56. data/features/{formatter_step_file_colon_line.feature → docs/formatters/formatter_step_file_colon_line.feature} +2 -4
  57. data/features/{html_formatter.feature → docs/formatters/html_formatter.feature} +10 -14
  58. data/features/docs/formatters/json_formatter.feature +760 -0
  59. data/features/docs/formatters/junit_formatter.feature +316 -0
  60. data/features/docs/formatters/pretty_formatter.feature +73 -0
  61. data/features/{progress_formatter.feature → docs/formatters/progress_formatter.feature} +1 -1
  62. data/features/docs/formatters/rerun_formatter.feature +136 -0
  63. data/features/docs/formatters/usage_formatter.feature +102 -0
  64. data/features/docs/getting_started.feature +27 -0
  65. data/features/{background.feature → docs/gherkin/background.feature} +149 -91
  66. data/features/{doc_strings.feature → docs/gherkin/doc_strings.feature} +1 -0
  67. data/features/docs/gherkin/expand_option_for_outlines.feature +46 -0
  68. data/features/docs/gherkin/language_from_header.feature +32 -0
  69. data/features/docs/gherkin/outlines.feature +158 -0
  70. data/features/docs/gherkin/unicode_table.feature +32 -0
  71. data/features/docs/gherkin/using_descriptions.feature +88 -0
  72. data/features/docs/gherkin/using_star_notation.feature +37 -0
  73. data/{legacy_features → features/docs}/post_configuration_hook.feature +17 -18
  74. data/{legacy_features → features/docs}/profiles.feature +30 -36
  75. data/{legacy_features → features/docs}/rake_task.feature +30 -41
  76. data/features/{raketask.feature → docs/raketask.feature} +6 -13
  77. data/{legacy_features/wire_protocol_erb.feature → features/docs/wire_protocol/erb_configuration.feature} +7 -8
  78. data/features/docs/wire_protocol/handle_unexpected_response.feature +30 -0
  79. data/features/docs/wire_protocol/invoke_message.feature +216 -0
  80. data/features/docs/wire_protocol/readme.md +26 -0
  81. data/features/docs/wire_protocol/snippets_message.feature +51 -0
  82. data/features/docs/wire_protocol/step_matches_message.feature +81 -0
  83. data/{legacy_features/wire_protocol_table_diffing.feature → features/docs/wire_protocol/table_diffing.feature} +19 -12
  84. data/{legacy_features/wire_protocol_tags.feature → features/docs/wire_protocol/tags.feature} +7 -7
  85. data/{legacy_features/wire_protocol_timeouts.feature → features/docs/wire_protocol/timeouts.feature} +7 -6
  86. data/{legacy_features → features/docs}/work_in_progress.feature +52 -54
  87. data/features/docs/writing_support_code/after_hooks.feature +80 -0
  88. data/{legacy_features → features/docs/writing_support_code}/around_hooks.feature +56 -28
  89. data/features/docs/writing_support_code/before_hook.feature +65 -0
  90. data/features/docs/writing_support_code/hook_order.feature +61 -0
  91. data/features/{load_path.feature → docs/writing_support_code/load_path.feature} +3 -0
  92. data/features/docs/writing_support_code/state.feature +32 -0
  93. data/features/docs/writing_support_code/tagged_hooks.feature +95 -0
  94. data/features/lib/step_definitions/aruba_steps.rb +22 -0
  95. data/features/lib/step_definitions/cucumber_steps.rb +50 -0
  96. data/features/{step_definitions → lib/step_definitions}/iso-8859-1_steps.rb +3 -15
  97. data/features/lib/step_definitions/json_steps.rb +7 -0
  98. data/features/lib/step_definitions/junit_steps.rb +13 -0
  99. data/features/lib/step_definitions/language_steps.rb +4 -5
  100. data/features/lib/step_definitions/profile_steps.rb +15 -0
  101. data/features/lib/step_definitions/ruby_steps.rb +3 -0
  102. data/features/lib/step_definitions/wire_steps.rb +58 -0
  103. data/features/lib/support/env.rb +21 -0
  104. data/{legacy_features → features/lib}/support/fake_wire_server.rb +10 -7
  105. data/features/{support → lib/support}/feature_factory.rb +1 -1
  106. data/features/lib/support/normalise_output.rb +33 -0
  107. data/gem_tasks/cov.rake +5 -0
  108. data/gem_tasks/cucumber.rake +3 -8
  109. data/gem_tasks/rspec.rake +0 -2
  110. data/lib/cucumber/ast.rb +8 -25
  111. data/lib/cucumber/cli/configuration.rb +33 -37
  112. data/lib/cucumber/cli/main.rb +14 -27
  113. data/lib/cucumber/cli/options.rb +22 -60
  114. data/lib/cucumber/cli/profile_loader.rb +1 -1
  115. data/lib/cucumber/configuration.rb +4 -0
  116. data/lib/cucumber/constantize.rb +7 -6
  117. data/lib/cucumber/core_ext/instance_exec.rb +7 -38
  118. data/lib/cucumber/core_ext/proc.rb +1 -1
  119. data/lib/cucumber/encoding.rb +5 -0
  120. data/lib/cucumber/errors.rb +21 -10
  121. data/lib/cucumber/file_specs.rb +37 -0
  122. data/lib/cucumber/filters/activate_steps.rb +33 -0
  123. data/lib/cucumber/filters/apply_after_hooks.rb +9 -0
  124. data/lib/cucumber/filters/apply_after_step_hooks.rb +12 -0
  125. data/lib/cucumber/filters/apply_around_hooks.rb +12 -0
  126. data/lib/cucumber/filters/apply_before_hooks.rb +9 -0
  127. data/lib/cucumber/filters/gated_receiver.rb +25 -0
  128. data/lib/cucumber/filters/prepare_world.rb +45 -0
  129. data/lib/cucumber/filters/quit.rb +28 -0
  130. data/lib/cucumber/filters/randomizer.rb +40 -0
  131. data/lib/cucumber/filters/tag_limits/test_case_index.rb +31 -0
  132. data/lib/cucumber/filters/tag_limits/verifier.rb +59 -0
  133. data/lib/cucumber/filters/tag_limits.rb +45 -0
  134. data/lib/cucumber/filters.rb +9 -0
  135. data/lib/cucumber/formatter/ansicolor.rb +0 -8
  136. data/lib/cucumber/formatter/console.rb +66 -36
  137. data/lib/cucumber/formatter/debug.rb +10 -8
  138. data/lib/cucumber/formatter/fanout.rb +27 -0
  139. data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +122 -12
  140. data/lib/cucumber/formatter/html.rb +67 -18
  141. data/lib/cucumber/formatter/ignore_missing_messages.rb +20 -0
  142. data/lib/cucumber/formatter/interceptor.rb +17 -3
  143. data/lib/cucumber/formatter/json.rb +1 -1
  144. data/lib/cucumber/formatter/junit.rb +105 -5
  145. data/lib/cucumber/formatter/legacy_api/adapter.rb +1060 -0
  146. data/lib/cucumber/formatter/legacy_api/ast.rb +376 -0
  147. data/lib/cucumber/formatter/legacy_api/results.rb +51 -0
  148. data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +30 -0
  149. data/lib/cucumber/formatter/pretty.rb +16 -8
  150. data/lib/cucumber/formatter/progress.rb +10 -0
  151. data/lib/cucumber/formatter/rerun.rb +14 -71
  152. data/lib/cucumber/formatter/unicode.rb +8 -21
  153. data/lib/cucumber/formatter/usage.rb +7 -1
  154. data/lib/cucumber/hooks.rb +97 -0
  155. data/lib/cucumber/language_support/language_methods.rb +0 -54
  156. data/lib/cucumber/{ast/table.rb → multiline_argument/data_table.rb} +77 -84
  157. data/lib/cucumber/multiline_argument/doc_string.rb +10 -0
  158. data/lib/cucumber/multiline_argument.rb +74 -0
  159. data/lib/cucumber/platform.rb +21 -20
  160. data/lib/cucumber/project_initializer.rb +43 -0
  161. data/lib/cucumber/rake/task.rb +3 -54
  162. data/lib/cucumber/rb_support/rb_hook.rb +2 -2
  163. data/lib/cucumber/rb_support/rb_language.rb +4 -34
  164. data/lib/cucumber/rb_support/rb_step_definition.rb +11 -2
  165. data/lib/cucumber/rb_support/rb_transform.rb +3 -1
  166. data/lib/cucumber/rb_support/rb_world.rb +13 -20
  167. data/lib/cucumber/rb_support/snippet.rb +61 -20
  168. data/lib/cucumber/rspec/doubles.rb +9 -6
  169. data/lib/cucumber/running_test_case.rb +115 -0
  170. data/lib/cucumber/runtime/after_hooks.rb +24 -0
  171. data/lib/cucumber/runtime/before_hooks.rb +23 -0
  172. data/lib/cucumber/runtime/for_programming_languages.rb +14 -10
  173. data/lib/cucumber/runtime/step_hooks.rb +22 -0
  174. data/lib/cucumber/runtime/support_code.rb +78 -21
  175. data/lib/cucumber/runtime/user_interface.rb +4 -0
  176. data/lib/cucumber/runtime.rb +153 -98
  177. data/lib/cucumber/step_match.rb +27 -3
  178. data/lib/cucumber/term/ansicolor.rb +1 -9
  179. data/lib/cucumber/wire_support/wire_language.rb +23 -9
  180. data/lib/cucumber/wire_support/wire_packet.rb +1 -1
  181. data/lib/cucumber/wire_support/wire_protocol/requests.rb +13 -5
  182. data/lib/cucumber/wire_support/wire_step_definition.rb +1 -8
  183. data/lib/cucumber.rb +8 -6
  184. data/spec/cucumber/cli/configuration_spec.rb +165 -134
  185. data/spec/cucumber/cli/main_spec.rb +36 -99
  186. data/spec/cucumber/cli/options_spec.rb +238 -272
  187. data/spec/cucumber/cli/profile_loader_spec.rb +18 -7
  188. data/spec/cucumber/configuration_spec.rb +3 -3
  189. data/spec/cucumber/constantize_spec.rb +2 -1
  190. data/spec/cucumber/core_ext/instance_exec_spec.rb +4 -0
  191. data/spec/cucumber/core_ext/proc_spec.rb +32 -43
  192. data/spec/cucumber/file_specs_spec.rb +60 -0
  193. data/spec/cucumber/filters/activate_steps_spec.rb +57 -0
  194. data/spec/cucumber/filters/gated_receiver_spec.rb +47 -0
  195. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +38 -0
  196. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +57 -0
  197. data/spec/cucumber/filters/tag_limits_spec.rb +59 -0
  198. data/spec/cucumber/formatter/ansicolor_spec.rb +11 -10
  199. data/spec/cucumber/formatter/debug_spec.rb +64 -0
  200. data/spec/cucumber/formatter/duration_spec.rb +6 -6
  201. data/spec/cucumber/formatter/html_spec.rb +233 -39
  202. data/spec/cucumber/formatter/interceptor_spec.rb +38 -31
  203. data/spec/cucumber/formatter/junit_spec.rb +213 -151
  204. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +2090 -0
  205. data/spec/cucumber/formatter/pretty_spec.rb +481 -49
  206. data/spec/cucumber/formatter/progress_spec.rb +63 -16
  207. data/spec/cucumber/formatter/rerun_spec.rb +107 -0
  208. data/spec/cucumber/formatter/spec_helper.rb +32 -17
  209. data/spec/cucumber/hooks_spec.rb +30 -0
  210. data/spec/cucumber/{ast/table_spec.rb → multiline_argument/data_table_spec.rb} +128 -208
  211. data/spec/cucumber/project_initializer_spec.rb +87 -0
  212. data/spec/cucumber/rake/forked_spec.rb +13 -22
  213. data/spec/cucumber/rb_support/rb_language_spec.rb +78 -69
  214. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +90 -44
  215. data/spec/cucumber/rb_support/rb_transform_spec.rb +24 -3
  216. data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +6 -4
  217. data/spec/cucumber/rb_support/snippet_spec.rb +47 -38
  218. data/spec/cucumber/running_test_case_spec.rb +83 -0
  219. data/spec/cucumber/runtime/for_programming_languages_spec.rb +18 -13
  220. data/spec/cucumber/runtime/support_code_spec.rb +29 -29
  221. data/spec/cucumber/runtime_spec.rb +35 -34
  222. data/spec/cucumber/step_match_spec.rb +30 -20
  223. data/spec/cucumber/wire_support/configuration_spec.rb +8 -5
  224. data/spec/cucumber/wire_support/connection_spec.rb +12 -8
  225. data/spec/cucumber/wire_support/wire_exception_spec.rb +14 -8
  226. data/spec/cucumber/wire_support/wire_language_spec.rb +8 -9
  227. data/spec/cucumber/wire_support/wire_packet_spec.rb +17 -13
  228. data/spec/cucumber/world/pending_spec.rb +36 -36
  229. data/spec/simplecov_setup.rb +18 -0
  230. data/spec/spec_helper.rb +6 -13
  231. metadata +348 -350
  232. data/.gitattributes +0 -1
  233. data/.ruby-version +0 -1
  234. data/examples/python/README.textile +0 -8
  235. data/examples/python/Rakefile +0 -4
  236. data/examples/python/features/fibonacci.feature +0 -19
  237. data/examples/python/features/step_definitions/fib_steps.py +0 -11
  238. data/examples/python/lib/fib.py +0 -7
  239. data/examples/ramaze/README.textile +0 -7
  240. data/examples/ramaze/app.rb +0 -21
  241. data/examples/ramaze/features/add.feature +0 -11
  242. data/examples/ramaze/features/step_definitions/add_steps.rb +0 -15
  243. data/examples/ramaze/features/support/env.rb +0 -32
  244. data/examples/ramaze/layout/default.html.erb +0 -8
  245. data/examples/ramaze/view/index.html.erb +0 -5
  246. data/examples/ruby2python/README.textile +0 -8
  247. data/examples/ruby2python/Rakefile +0 -4
  248. data/examples/ruby2python/features/fibonacci.feature +0 -19
  249. data/examples/ruby2python/features/step_definitions/fib_steps.rb +0 -7
  250. data/examples/ruby2python/features/support/env.rb +0 -21
  251. data/examples/ruby2python/lib/fib.py +0 -7
  252. data/examples/v8/Rakefile +0 -6
  253. data/examples/v8/features/fibonacci.feature +0 -43
  254. data/examples/v8/features/step_definitions/fib_steps.js +0 -49
  255. data/examples/v8/features/support/env.js +0 -14
  256. data/examples/v8/lib/fibonacci.js +0 -19
  257. data/features/.cucumber/stepdefs.json +0 -627
  258. data/features/assertions.feature +0 -73
  259. data/features/autoformat_profile_output.feature +0 -23
  260. data/features/before_hook.feature +0 -43
  261. data/features/bootstrap.feature +0 -27
  262. data/features/custom_formatter.feature +0 -41
  263. data/features/drb_server_integration.feature +0 -63
  264. data/features/execute_with_tag_filter.feature +0 -63
  265. data/features/formatter_callbacks.feature +0 -189
  266. data/features/json_formatter.feature +0 -338
  267. data/features/parsing.feature +0 -18
  268. data/features/pretty_formatter.feature +0 -31
  269. data/features/rerun_formatter.feature +0 -35
  270. data/features/run_specific_scenarios.feature +0 -47
  271. data/features/stats_formatters.feature +0 -73
  272. data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +0 -197
  273. data/features/step_definitions/cucumber_steps.rb +0 -55
  274. data/features/step_definitions/drb_steps.rb +0 -3
  275. data/features/support/env.rb +0 -57
  276. data/features/tagged_hooks.feature +0 -59
  277. data/fixtures/json/features/background.feature +0 -7
  278. data/fixtures/json/features/embed.feature +0 -4
  279. data/fixtures/json/features/one_passing_one_failing.feature +0 -11
  280. data/fixtures/json/features/step_definitions/steps.rb +0 -32
  281. data/fixtures/json/features/tables.feature +0 -13
  282. data/fixtures/junit/features/one_passing_one_failing.feature +0 -8
  283. data/fixtures/junit/features/pending.feature +0 -7
  284. data/fixtures/junit/features/scenario_outline.feature +0 -9
  285. data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +0 -8
  286. data/fixtures/junit/features/step_definitions/steps.rb +0 -11
  287. data/fixtures/self_test/README.textile +0 -6
  288. data/fixtures/self_test/Rakefile +0 -6
  289. data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +0 -7
  290. data/fixtures/self_test/features/failing_expectation.feature +0 -4
  291. data/fixtures/self_test/features/lots_of_undefined.feature +0 -8
  292. data/fixtures/self_test/features/multiline_name.feature +0 -27
  293. data/fixtures/self_test/features/outline_sample.feature +0 -15
  294. data/fixtures/self_test/features/sample.feature +0 -21
  295. data/fixtures/self_test/features/search_sample.feature +0 -32
  296. data/fixtures/self_test/features/step_definitions/sample_steps.rb +0 -84
  297. data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
  298. data/fixtures/self_test/features/support/env.rb +0 -26
  299. data/fixtures/self_test/features/tags_sample.feature +0 -17
  300. data/fixtures/self_test/features/tons_of_cukes.feature +0 -52
  301. data/fixtures/self_test/features/undefined_multiline_args.feature +0 -12
  302. data/fixtures/self_test/list-of-features.txt +0 -1
  303. data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +0 -8
  304. data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +0 -8
  305. data/fixtures/tickets/Rakefile +0 -20
  306. data/fixtures/tickets/features/172.feature +0 -28
  307. data/fixtures/tickets/features/177/1.feature +0 -28
  308. data/fixtures/tickets/features/177/2.feature +0 -20
  309. data/fixtures/tickets/features/177/3.feature +0 -18
  310. data/fixtures/tickets/features/180.feature +0 -7
  311. data/fixtures/tickets/features/229/tagged_hooks.feature +0 -8
  312. data/fixtures/tickets/features/229/tagged_hooks.rb +0 -14
  313. data/fixtures/tickets/features/236.feature +0 -13
  314. data/fixtures/tickets/features/241.feature +0 -12
  315. data/fixtures/tickets/features/246.feature +0 -4
  316. data/fixtures/tickets/features/248.feature +0 -11
  317. data/fixtures/tickets/features/270/back.feature +0 -14
  318. data/fixtures/tickets/features/270/back.steps.rb +0 -14
  319. data/fixtures/tickets/features/272/hooks.feature +0 -26
  320. data/fixtures/tickets/features/272/hooks_steps.rb +0 -53
  321. data/fixtures/tickets/features/279/py_string_indent.feature +0 -25
  322. data/fixtures/tickets/features/279/py_string_indent.steps.rb +0 -12
  323. data/fixtures/tickets/features/279/wrong.feature_ +0 -11
  324. data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +0 -6
  325. data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +0 -12
  326. data/fixtures/tickets/features/306/only_background.feature +0 -4
  327. data/fixtures/tickets/features/around_timeout.feature +0 -6
  328. data/fixtures/tickets/features/gherkin_67.feature +0 -12
  329. data/fixtures/tickets/features/gherkin_68.feature +0 -4
  330. data/fixtures/tickets/features/half_manual.feature +0 -11
  331. data/fixtures/tickets/features/lib/eatting_machine.rb +0 -18
  332. data/fixtures/tickets/features/lib/pantry.rb +0 -20
  333. data/fixtures/tickets/features/scenario_outline.feature +0 -95
  334. data/fixtures/tickets/features/step_definitons/246_steps.rb +0 -3
  335. data/fixtures/tickets/features/step_definitons/248_steps.rb +0 -15
  336. data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +0 -9
  337. data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +0 -11
  338. data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
  339. data/fixtures/tickets/features/step_definitons/tickets_steps.rb +0 -88
  340. data/fixtures/tickets/features/table_diffing.feature +0 -13
  341. data/fixtures/tickets/features/tickets.feature +0 -28
  342. data/fixtures/tickets/features.html +0 -138
  343. data/gem_tasks/yard/default/layout/html/bubble_32x32.png +0 -0
  344. data/gem_tasks/yard/default/layout/html/footer.erb +0 -5
  345. data/gem_tasks/yard/default/layout/html/index.erb +0 -1
  346. data/gem_tasks/yard/default/layout/html/layout.erb +0 -25
  347. data/gem_tasks/yard/default/layout/html/logo.erb +0 -1
  348. data/gem_tasks/yard/default/layout/html/setup.rb +0 -4
  349. data/gem_tasks/yard.rake +0 -40
  350. data/legacy_features/README.md +0 -14
  351. data/legacy_features/announce.feature +0 -152
  352. data/legacy_features/bug_371.feature +0 -32
  353. data/legacy_features/bug_464.feature +0 -16
  354. data/legacy_features/bug_475.feature +0 -42
  355. data/legacy_features/bug_585_tab_indentation.feature +0 -22
  356. data/legacy_features/bug_600.feature +0 -73
  357. data/legacy_features/cucumber_cli.feature +0 -584
  358. data/legacy_features/cucumber_cli_outlines.feature +0 -117
  359. data/legacy_features/default_snippets.feature +0 -43
  360. data/legacy_features/diffing.feature +0 -25
  361. data/legacy_features/drb_server_integration.feature +0 -174
  362. data/legacy_features/exclude_files.feature +0 -20
  363. data/legacy_features/expand.feature +0 -60
  364. data/legacy_features/junit_formatter.feature +0 -214
  365. data/legacy_features/language_from_header.feature +0 -30
  366. data/legacy_features/listener_debugger_formatter.feature +0 -42
  367. data/legacy_features/multiline_names.feature +0 -44
  368. data/legacy_features/report_called_undefined_steps.feature +0 -35
  369. data/legacy_features/rerun_formatter.feature +0 -52
  370. data/legacy_features/simplest.feature +0 -11
  371. data/legacy_features/snippet.feature +0 -23
  372. data/legacy_features/snippets_when_using_star_keyword.feature +0 -38
  373. data/legacy_features/step_definitions/cucumber_steps.rb +0 -179
  374. data/legacy_features/step_definitions/extra_steps.rb +0 -2
  375. data/legacy_features/step_definitions/simplest_steps.rb +0 -3
  376. data/legacy_features/step_definitions/wire_steps.rb +0 -34
  377. data/legacy_features/support/env.rb +0 -161
  378. data/legacy_features/support/env.rb.simplest +0 -7
  379. data/legacy_features/table_mapping.feature +0 -34
  380. data/legacy_features/transform.feature +0 -245
  381. data/legacy_features/unicode_table.feature +0 -35
  382. data/legacy_features/wire_protocol.feature +0 -332
  383. data/lib/README.rdoc +0 -12
  384. data/lib/cucumber/ast/background.rb +0 -116
  385. data/lib/cucumber/ast/comment.rb +0 -31
  386. data/lib/cucumber/ast/doc_string.rb +0 -61
  387. data/lib/cucumber/ast/empty_background.rb +0 -33
  388. data/lib/cucumber/ast/examples.rb +0 -49
  389. data/lib/cucumber/ast/feature.rb +0 -99
  390. data/lib/cucumber/ast/features.rb +0 -38
  391. data/lib/cucumber/ast/has_steps.rb +0 -74
  392. data/lib/cucumber/ast/location.rb +0 -41
  393. data/lib/cucumber/ast/multiline_argument.rb +0 -30
  394. data/lib/cucumber/ast/names.rb +0 -13
  395. data/lib/cucumber/ast/outline_table.rb +0 -194
  396. data/lib/cucumber/ast/scenario.rb +0 -103
  397. data/lib/cucumber/ast/scenario_outline.rb +0 -146
  398. data/lib/cucumber/ast/step.rb +0 -122
  399. data/lib/cucumber/ast/step_collection.rb +0 -92
  400. data/lib/cucumber/ast/step_invocation.rb +0 -196
  401. data/lib/cucumber/ast/tags.rb +0 -28
  402. data/lib/cucumber/ast/tree_walker.rb +0 -191
  403. data/lib/cucumber/ast/visitor.rb +0 -11
  404. data/lib/cucumber/broadcaster.rb +0 -13
  405. data/lib/cucumber/cli/drb_client.rb +0 -43
  406. data/lib/cucumber/feature_file.rb +0 -94
  407. data/lib/cucumber/formatter/ordered_xml_markup.rb +0 -24
  408. data/lib/cucumber/js_support/js_dsl.js +0 -57
  409. data/lib/cucumber/js_support/js_language.rb +0 -185
  410. data/lib/cucumber/js_support/js_snippets.rb +0 -27
  411. data/lib/cucumber/parser/gherkin_builder.rb +0 -284
  412. data/lib/cucumber/parser.rb +0 -2
  413. data/lib/cucumber/py_support/py_dsl.py +0 -10
  414. data/lib/cucumber/py_support/py_language.py +0 -10
  415. data/lib/cucumber/py_support/py_language.rb +0 -80
  416. data/lib/cucumber/runtime/features_loader.rb +0 -62
  417. data/lib/cucumber/runtime/results.rb +0 -64
  418. data/lib/cucumber/step_mother.rb +0 -10
  419. data/spec/cucumber/ast/background_spec.rb +0 -122
  420. data/spec/cucumber/ast/doc_string_spec.rb +0 -40
  421. data/spec/cucumber/ast/feature_factory.rb +0 -72
  422. data/spec/cucumber/ast/feature_spec.rb +0 -63
  423. data/spec/cucumber/ast/features_spec.rb +0 -51
  424. data/spec/cucumber/ast/outline_table_spec.rb +0 -21
  425. data/spec/cucumber/ast/scenario_outline_spec.rb +0 -74
  426. data/spec/cucumber/ast/step_spec.rb +0 -68
  427. data/spec/cucumber/ast/tree_walker_spec.rb +0 -19
  428. data/spec/cucumber/broadcaster_spec.rb +0 -15
  429. data/spec/cucumber/cli/drb_client_spec.rb +0 -76
  430. data/spec/cucumber/rake/rcov_spec.rb +0 -71
  431. data/spec/cucumber/runtime/results_spec.rb +0 -81
  432. data/spec/cucumber/wire_support/wire_step_definition_spec.rb +0 -20
  433. /data/examples/i18n/ar/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  434. /data/examples/i18n/bg/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  435. /data/examples/i18n/ca/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  436. /data/examples/i18n/cs/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  437. /data/examples/i18n/da/features/{step_definitons → step_definitions}/lommeregner_steps.rb +0 -0
  438. /data/examples/i18n/de/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  439. /data/examples/i18n/en/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  440. /data/examples/i18n/eo/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  441. /data/examples/i18n/es/features/{step_definitons → step_definitions}/calculador_steps.rb +0 -0
  442. /data/examples/i18n/fi/features/{step_definitons → step_definitions}/laskin_steps.rb +0 -0
  443. /data/examples/i18n/he/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  444. /data/examples/i18n/hi/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  445. /data/examples/i18n/hu/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  446. /data/examples/i18n/id/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  447. /data/examples/i18n/it/features/{step_definitons → step_definitions}/calcolatrice_steps.rb +0 -0
  448. /data/examples/i18n/ja/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  449. /data/examples/i18n/ko/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  450. /data/examples/i18n/lt/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  451. /data/examples/i18n/lv/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  452. /data/examples/i18n/no/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
  453. /data/examples/i18n/pl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  454. /data/examples/i18n/ro/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  455. /data/examples/i18n/ru/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  456. /data/examples/i18n/sk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  457. /data/examples/i18n/sr-Cyrl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  458. /data/examples/i18n/sr-Latn/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  459. /data/examples/i18n/sv/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
  460. /data/examples/i18n/tr/features/{step_definitons → step_definitions}/hesap_makinesi_adimlari.rb +0 -0
  461. /data/examples/i18n/uk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  462. /data/examples/i18n/uz/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  463. /data/examples/i18n/zh-TW/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  464. /data/features/{nested_steps_with_second_arg.feature → docs/defining_steps/nested_steps_with_second_arg.feature} +0 -0
  465. /data/features/{iso-8859-1.feature → docs/iso-8859-1.feature} +0 -0
@@ -0,0 +1,316 @@
1
+ @spawn
2
+ Feature: JUnit output formatter
3
+ In order for developers to create test reports with ant
4
+ Cucumber should be able to output JUnit xml files
5
+
6
+ Background:
7
+ Given the standard step definitions
8
+ And a file named "features/one_passing_one_failing.feature" with:
9
+ """
10
+ Feature: One passing scenario, one failing scenario
11
+
12
+ Scenario: Passing
13
+ Given this step passes
14
+
15
+ Scenario: Failing
16
+ Given this step fails
17
+ """
18
+ And a file named "features/some_subdirectory/one_passing_one_failing.feature" with:
19
+ """
20
+ Feature: Subdirectory - One passing scenario, one failing scenario
21
+
22
+ Scenario: Passing
23
+ Given this step passes
24
+
25
+ Scenario: Failing
26
+ Given this step fails
27
+ """
28
+ And a file named "features/pending.feature" with:
29
+ """
30
+ Feature: Pending step
31
+
32
+ Scenario: Pending
33
+ Given this step is pending
34
+
35
+ Scenario: Undefined
36
+ Given this step is undefined
37
+ """
38
+ And a file named "features/pending.feature" with:
39
+ """
40
+ Feature: Pending step
41
+
42
+ Scenario: Pending
43
+ Given this step is pending
44
+
45
+ Scenario: Undefined
46
+ Given this step is undefined
47
+ """
48
+ And a file named "features/scenario_outline.feature" with:
49
+ """
50
+ Feature: Scenario outlines
51
+
52
+ Scenario Outline: Using scenario outlines
53
+ Given this step <type>
54
+
55
+ Examples:
56
+ | type |
57
+ | passes |
58
+ | fails |
59
+ """
60
+
61
+ Scenario: one feature, one passing scenario, one failing scenario
62
+ When I run `cucumber --format junit --out tmp/ features/one_passing_one_failing.feature`
63
+ Then it should fail with:
64
+ """
65
+
66
+ """
67
+ And the junit output file "tmp/TEST-features-one_passing_one_failing.xml" should contain:
68
+ """
69
+ <?xml version="1.0" encoding="UTF-8"?>
70
+ <testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="One passing scenario, one failing scenario">
71
+ <testcase classname="One passing scenario, one failing scenario" name="Passing" time="0.05">
72
+ <system-out/>
73
+ <system-err/>
74
+ </testcase>
75
+ <testcase classname="One passing scenario, one failing scenario" name="Failing" time="0.05">
76
+ <failure message="failed Failing" type="failed">
77
+ <![CDATA[Scenario: Failing
78
+
79
+ Given this step fails
80
+
81
+ Message:
82
+ ]]>
83
+ <![CDATA[ (RuntimeError)
84
+ ./features/step_definitions/steps.rb:4:in `/^this step fails$/'
85
+ features/one_passing_one_failing.feature:7:in `Given this step fails']]>
86
+ </failure>
87
+ <system-out/>
88
+ <system-err/>
89
+ </testcase>
90
+ <system-out>
91
+ <![CDATA[]]>
92
+ </system-out>
93
+ <system-err>
94
+ <![CDATA[]]>
95
+ </system-err>
96
+ </testsuite>
97
+
98
+ """
99
+
100
+ Scenario: one feature in a subdirectory, one passing scenario, one failing scenario
101
+ When I run `cucumber --format junit --out tmp/ features/some_subdirectory/one_passing_one_failing.feature --require features`
102
+ Then it should fail with:
103
+ """
104
+
105
+ """
106
+ And the junit output file "tmp/TEST-features-some_subdirectory-one_passing_one_failing.xml" should contain:
107
+ """
108
+ <?xml version="1.0" encoding="UTF-8"?>
109
+ <testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="Subdirectory - One passing scenario, one failing scenario">
110
+ <testcase classname="Subdirectory - One passing scenario, one failing scenario" name="Passing" time="0.05">
111
+ <system-out/>
112
+ <system-err/>
113
+ </testcase>
114
+ <testcase classname="Subdirectory - One passing scenario, one failing scenario" name="Failing" time="0.05">
115
+ <failure message="failed Failing" type="failed">
116
+ <![CDATA[Scenario: Failing
117
+
118
+ Given this step fails
119
+
120
+ Message:
121
+ ]]>
122
+ <![CDATA[ (RuntimeError)
123
+ ./features/step_definitions/steps.rb:4:in `/^this step fails$/'
124
+ features/some_subdirectory/one_passing_one_failing.feature:7:in `Given this step fails']]>
125
+ </failure>
126
+ <system-out/>
127
+ <system-err/>
128
+ </testcase>
129
+ <system-out>
130
+ <![CDATA[]]>
131
+ </system-out>
132
+ <system-err>
133
+ <![CDATA[]]>
134
+ </system-err>
135
+ </testsuite>
136
+
137
+ """
138
+
139
+ Scenario: pending and undefined steps are reported as skipped
140
+ When I run `cucumber --format junit --out tmp/ features/pending.feature`
141
+ Then it should pass with:
142
+ """
143
+
144
+ """
145
+ And the junit output file "tmp/TEST-features-pending.xml" should contain:
146
+ """
147
+ <?xml version="1.0" encoding="UTF-8"?>
148
+ <testsuite failures="0" errors="0" skipped="2" tests="2" time="0.05" name="Pending step">
149
+ <testcase classname="Pending step" name="Pending" time="0.05">
150
+ <skipped/>
151
+ <system-out/>
152
+ <system-err/>
153
+ </testcase>
154
+ <testcase classname="Pending step" name="Undefined" time="0.05">
155
+ <skipped/>
156
+ <system-out/>
157
+ <system-err/>
158
+ </testcase>
159
+ <system-out>
160
+ <![CDATA[]]>
161
+ </system-out>
162
+ <system-err>
163
+ <![CDATA[]]>
164
+ </system-err>
165
+ </testsuite>
166
+
167
+ """
168
+
169
+ Scenario: pending and undefined steps with strict option should fail
170
+ When I run `cucumber --format junit --out tmp/ features/pending.feature --strict`
171
+ Then it should fail with:
172
+ """
173
+
174
+ """
175
+ And the junit output file "tmp/TEST-features-pending.xml" should contain:
176
+ """
177
+ <?xml version="1.0" encoding="UTF-8"?>
178
+ <testsuite failures="2" errors="0" skipped="0" tests="2" time="0.05" name="Pending step">
179
+ <testcase classname="Pending step" name="Pending" time="0.05">
180
+ <failure message="pending Pending" type="pending">
181
+ <![CDATA[Scenario: Pending
182
+
183
+ Given this step is pending
184
+
185
+ Message:
186
+ ]]>
187
+ <![CDATA[TODO (Cucumber::Pending)
188
+ ./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
189
+ features/pending.feature:4:in `Given this step is pending']]>
190
+ </failure>
191
+ <system-out/>
192
+ <system-err/>
193
+ </testcase>
194
+ <testcase classname="Pending step" name="Undefined" time="0.05">
195
+ <failure message="undefined Undefined" type="undefined">
196
+ <![CDATA[Scenario: Undefined
197
+
198
+ Given this step is undefined
199
+
200
+ Message:
201
+ ]]>
202
+ <![CDATA[Undefined step: "this step is undefined" (Cucumber::Undefined)
203
+ features/pending.feature:7:in `Given this step is undefined']]>
204
+ </failure>
205
+ <system-out/>
206
+ <system-err/>
207
+ </testcase>
208
+ <system-out>
209
+ <![CDATA[]]>
210
+ </system-out>
211
+ <system-err>
212
+ <![CDATA[]]>
213
+ </system-err>
214
+ </testsuite>
215
+
216
+ """
217
+
218
+ Scenario: run all features
219
+ When I run `cucumber --format junit --out tmp/ features`
220
+ Then it should fail with:
221
+ """
222
+
223
+ """
224
+ And a file named "tmp/TEST-features-one_passing_one_failing.xml" should exist
225
+ And a file named "tmp/TEST-features-pending.xml" should exist
226
+
227
+ Scenario: show correct error message if no --out is passed
228
+ When I run `cucumber --format junit features`
229
+ Then the stderr should not contain:
230
+ """
231
+ can't convert .* into String \(TypeError\)
232
+ """
233
+ And the stderr should contain:
234
+ """
235
+ You *must* specify --out DIR for the junit formatter
236
+ """
237
+
238
+ Scenario: one feature, one scenario outline, two examples: one passing, one failing
239
+ When I run `cucumber --format junit --out tmp/ features/scenario_outline.feature`
240
+ Then it should fail with:
241
+ """
242
+
243
+ """
244
+ And the junit output file "tmp/TEST-features-scenario_outline.xml" should contain:
245
+ """
246
+ <?xml version="1.0" encoding="UTF-8"?>
247
+ <testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="Scenario outlines">
248
+ <testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | passes |)" time="0.05">
249
+ <system-out/>
250
+ <system-err/>
251
+ </testcase>
252
+ <testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | fails |)" time="0.05">
253
+ <failure message="failed Using scenario outlines (outline example : | fails |)" type="failed">
254
+ <![CDATA[Scenario Outline: Using scenario outlines
255
+
256
+ Example row: | fails |
257
+
258
+ Message:
259
+ ]]>
260
+ <![CDATA[ (RuntimeError)
261
+ ./features/step_definitions/steps.rb:4:in `/^this step fails$/'
262
+ features/scenario_outline.feature:9:in `Given this step fails'
263
+ features/scenario_outline.feature:4:in `Given this step <type>']]>
264
+ </failure>
265
+ <system-out/>
266
+ <system-err/>
267
+ </testcase>
268
+ <system-out>
269
+ <![CDATA[]]>
270
+ </system-out>
271
+ <system-err>
272
+ <![CDATA[]]>
273
+ </system-err>
274
+ </testsuite>
275
+
276
+ """
277
+
278
+ Scenario: one feature, one scenario outline, two examples: one passing, one failing with --expand option
279
+ When I run `cucumber --expand --format junit --out tmp/ features/scenario_outline.feature`
280
+ Then it should fail with exactly:
281
+ """
282
+
283
+ """
284
+ And the junit output file "tmp/TEST-features-scenario_outline.xml" should contain:
285
+ """
286
+ <?xml version="1.0" encoding="UTF-8"?>
287
+ <testsuite failures="1" errors="0" skipped="0" tests="2" time="0.05" name="Scenario outlines">
288
+ <testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | passes |)" time="0.05">
289
+ <system-out/>
290
+ <system-err/>
291
+ </testcase>
292
+ <testcase classname="Scenario outlines" name="Using scenario outlines (outline example : | fails |)" time="0.05">
293
+ <failure message="failed Using scenario outlines (outline example : | fails |)" type="failed">
294
+ <![CDATA[Scenario Outline: Using scenario outlines
295
+
296
+ Example row: | fails |
297
+
298
+ Message:
299
+ ]]>
300
+ <![CDATA[ (RuntimeError)
301
+ ./features/step_definitions/steps.rb:4:in `/^this step fails$/'
302
+ features/scenario_outline.feature:9:in `Given this step fails'
303
+ features/scenario_outline.feature:4:in `Given this step <type>']]>
304
+ </failure>
305
+ <system-out/>
306
+ <system-err/>
307
+ </testcase>
308
+ <system-out>
309
+ <![CDATA[]]>
310
+ </system-out>
311
+ <system-err>
312
+ <![CDATA[]]>
313
+ </system-err>
314
+ </testsuite>
315
+
316
+ """
@@ -0,0 +1,73 @@
1
+ Feature: Pretty output formatter
2
+
3
+ Background:
4
+ Given a file named "features/scenario_outline_with_undefined_steps.feature" with:
5
+ """
6
+ Feature:
7
+
8
+ Scenario Outline:
9
+ Given this step is undefined
10
+
11
+ Examples:
12
+ |foo|
13
+ |bar|
14
+ """
15
+
16
+ Scenario: an scenario outline, one undefined step, one random example, expand flag on
17
+ When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format pretty --expand `
18
+ Then it should pass
19
+
20
+ Scenario: when using a profile the output should include 'Using the default profile...'
21
+ And a file named "cucumber.yml" with:
22
+ """
23
+ default: -r features
24
+ """
25
+ When I run `cucumber --profile default --format pretty`
26
+ Then it should pass
27
+ And the output should contain:
28
+ """
29
+ Using the default profile...
30
+ """
31
+ Scenario: Hook output should be printed before hook exception
32
+ Given the standard step definitions
33
+ And a file named "features/test.feature" with:
34
+ """
35
+ Feature:
36
+ Scenario:
37
+ Given this step passes
38
+ """
39
+ And a file named "features/step_definitions/output_steps.rb" with:
40
+ """
41
+ Before do
42
+ puts "Before hook"
43
+ end
44
+
45
+ AfterStep do
46
+ puts "AfterStep hook"
47
+ end
48
+
49
+ After do
50
+ puts "After hook"
51
+ raise "error"
52
+ end
53
+ """
54
+ When I run `cucumber -q -f pretty features/test.feature`
55
+ Then the stderr should not contain anything
56
+ Then it should fail with:
57
+ """
58
+ Feature:
59
+
60
+ Scenario:
61
+ Before hook
62
+ Given this step passes
63
+ AfterStep hook
64
+ After hook
65
+ error (RuntimeError)
66
+ ./features/step_definitions/output_steps.rb:11:in `After'
67
+
68
+ Failing Scenarios:
69
+ cucumber features/test.feature:2
70
+
71
+ 1 scenario (1 failed)
72
+ 1 step (1 passed)
73
+ """
@@ -6,7 +6,7 @@ Feature: Progress output formatter
6
6
  Feature:
7
7
 
8
8
  Scenario Outline:
9
- Given an undefined step
9
+ Given this step is undefined
10
10
 
11
11
  Examples:
12
12
  |foo|
@@ -0,0 +1,136 @@
1
+ Feature: Rerun formatter
2
+
3
+ The rerun formatter writes an output that's perfect for
4
+ passing to Cucumber when you want to rerun only the
5
+ scenarios that have failed.
6
+
7
+ You can save off the rerun output to a file by using it like this:
8
+
9
+ `cucumber -f rerun --out .cucumber.rerun`
10
+
11
+ Now you can pass that file's content to Cucumber to tell it
12
+ which scenarios to run:
13
+
14
+ `cucumber \`cat .cucumber.rerun\``
15
+
16
+ This is useful when debugging in a large suite of features.
17
+
18
+ Background:
19
+ Given the standard step definitions
20
+
21
+ Scenario: Regular scenarios
22
+ Given a file named "features/mixed.feature" with:
23
+ """
24
+ Feature: Mixed
25
+
26
+ Scenario:
27
+ Given this step fails
28
+
29
+ Scenario:
30
+ Given this step is undefined
31
+
32
+ Scenario:
33
+ Given this step is pending
34
+
35
+ Scenario:
36
+ Given this step passes
37
+
38
+ """
39
+ And a file named "features/all_good.feature" with:
40
+ """
41
+ Feature: All good
42
+
43
+ Scenario:
44
+ Given this step passes
45
+ """
46
+
47
+ When I run `cucumber -f rerun`
48
+ Then it should fail with:
49
+ """
50
+ features/mixed.feature:3:6:9
51
+ """
52
+
53
+ Scenario: Scenario outlines
54
+ For details see https://github.com/cucumber/cucumber/issues/57
55
+ Given a file named "features/one_passing_one_failing.feature" with:
56
+ """
57
+ Feature: One passing example, one failing example
58
+
59
+ Scenario Outline:
60
+ Given this step <status>
61
+
62
+ Examples:
63
+ | status |
64
+ | passes |
65
+ | fails |
66
+
67
+ """
68
+ When I run `cucumber -f rerun`
69
+ Then it should fail with:
70
+ """
71
+ features/one_passing_one_failing.feature:9
72
+ """
73
+
74
+ Scenario: Failing background
75
+ Given a file named "features/failing_background.feature" with:
76
+ """
77
+ Feature: Failing background sample
78
+
79
+ Background:
80
+ Given this step fails
81
+
82
+ Scenario: failing background
83
+ Then this step passes
84
+
85
+ Scenario: another failing background
86
+ Then this step passes
87
+ """
88
+ When I run `cucumber -f rerun`
89
+ Then it should fail with:
90
+ """
91
+ features/failing_background.feature:6:9
92
+ """
93
+
94
+ Scenario: Failing background with scenario outline
95
+ Given a file named "features/failing_background_outline.feature" with:
96
+ """
97
+ Feature: Failing background sample with scenario outline
98
+
99
+ Background:
100
+ Given this step fails
101
+
102
+ Scenario Outline:
103
+ Then this step <status>
104
+
105
+ Examples:
106
+ | status |
107
+ | passes |
108
+ | passes |
109
+ """
110
+ When I run `cucumber features/failing_background_outline.feature -r features -f rerun`
111
+ Then it should fail with:
112
+ """
113
+ features/failing_background_outline.feature:11:12
114
+ """
115
+
116
+ Scenario: Scenario outlines with expand
117
+ For details see https://github.com/cucumber/cucumber/issues/503
118
+
119
+ Given a file named "features/one_passing_one_failing.feature" with:
120
+ """
121
+ Feature: One passing example, one failing example
122
+
123
+ Scenario Outline:
124
+ Given this step <status>
125
+
126
+ Examples:
127
+ | status |
128
+ | passes |
129
+ | fails |
130
+
131
+ """
132
+ When I run `cucumber --expand -f rerun`
133
+ Then it should fail with:
134
+ """
135
+ features/one_passing_one_failing.feature:9
136
+ """
@@ -0,0 +1,102 @@
1
+ Feature: Usage formatter
2
+
3
+ In order to see where step definitions are used
4
+ Developers should be able to see a list of step definitions and their use
5
+
6
+ Background:
7
+ Given a file named "features/f.feature" with:
8
+ """
9
+ Feature: F
10
+ Background: A
11
+ Given A
12
+ Scenario: B
13
+ Given B
14
+ Scenario Outline: CA
15
+ Given <x>
16
+ And B
17
+ Examples:
18
+ |x|
19
+ |C|
20
+ |A|
21
+ Scenario: AC
22
+ Given A
23
+ Given C
24
+ """
25
+ And a file named "features/step_definitions/steps.rb" with:
26
+ """
27
+ Given(/A/) { }
28
+ Given(/B/) { }
29
+ Given(/C/) { }
30
+ Given(/D/) { }
31
+ """
32
+
33
+ @wip-new-core
34
+ Scenario: Run with --format usage
35
+ When I run `cucumber -f usage --dry-run`
36
+ Then it should pass with exactly:
37
+ """
38
+ --------
39
+
40
+ /A/ # features/step_definitions/steps.rb:1
41
+ Given A # features/f.feature:3
42
+ Given A # features/f.feature:12
43
+ Given A # features/f.feature:14
44
+ /B/ # features/step_definitions/steps.rb:2
45
+ Given B # features/f.feature:5
46
+ And B # features/f.feature:11
47
+ And B # features/f.feature:12
48
+ /C/ # features/step_definitions/steps.rb:3
49
+ Given C # features/f.feature:11
50
+ Given C # features/f.feature:15
51
+ /D/ # features/step_definitions/steps.rb:4
52
+ NOT MATCHED BY ANY STEPS
53
+
54
+ 4 scenarios (4 skipped)
55
+ 11 steps (11 skipped)
56
+ 0m0.012s
57
+
58
+ """
59
+
60
+ Scenario: Run with --expand --format usage
61
+ When I run `cucumber -x -f usage --dry-run`
62
+ Then it should pass with exactly:
63
+ """
64
+ ----------
65
+
66
+ /A/ # features/step_definitions/steps.rb:1
67
+ Given A # features/f.feature:3
68
+ Given A # features/f.feature:12
69
+ Given A # features/f.feature:14
70
+ /B/ # features/step_definitions/steps.rb:2
71
+ Given B # features/f.feature:5
72
+ And B # features/f.feature:11
73
+ And B # features/f.feature:12
74
+ /C/ # features/step_definitions/steps.rb:3
75
+ Given C # features/f.feature:11
76
+ Given C # features/f.feature:15
77
+ /D/ # features/step_definitions/steps.rb:4
78
+ NOT MATCHED BY ANY STEPS
79
+
80
+ 4 scenarios (4 skipped)
81
+ 11 steps (11 skipped)
82
+ 0m0.012s
83
+
84
+ """
85
+
86
+ Scenario: Run with --format stepdefs
87
+ When I run `cucumber -f stepdefs --dry-run`
88
+ Then it should pass with exactly:
89
+ """
90
+ --------
91
+
92
+ /A/ # features/step_definitions/steps.rb:1
93
+ /B/ # features/step_definitions/steps.rb:2
94
+ /C/ # features/step_definitions/steps.rb:3
95
+ /D/ # features/step_definitions/steps.rb:4
96
+ NOT MATCHED BY ANY STEPS
97
+
98
+ 4 scenarios (4 skipped)
99
+ 11 steps (11 skipped)
100
+ 0m0.012s
101
+
102
+ """
@@ -0,0 +1,27 @@
1
+ Feature: Getting started
2
+
3
+ To get started, just open a command prompt in an empty directory and run
4
+ `cucumber`. You'll be prompted for what to do next.
5
+
6
+ @spawn
7
+ Scenario: Run Cucumber in an empty directory
8
+ Given a directory without standard Cucumber project directory structure
9
+ When I run `cucumber`
10
+ Then it should fail with:
11
+ """
12
+ No such file or directory - features. You can use `cucumber --init` to get started.
13
+ """
14
+
15
+ Scenario: Accidentally run Cucumber in a folder with Ruby files in it.
16
+ Given a directory without standard Cucumber project directory structure
17
+ And a file named "should_not_load.rb" with:
18
+ """
19
+ puts 'this will not be shown'
20
+ """
21
+ When I run `cucumber`
22
+ Then the exit status should be 1
23
+ And the output should not contain:
24
+ """
25
+ this will not be shown
26
+
27
+ """