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
@@ -4,14 +4,12 @@ Feature: Exception in After Block
4
4
  I want exceptions raised in After blocks to be handled gracefully and reported by the formatters
5
5
 
6
6
  Background:
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/step_definitions/steps.rb" with:
7
+ Given the standard step definitions
8
+ And a file named "features/step_definitions/naughty_steps.rb" with:
9
9
  """
10
10
  Given /^this step does something naughty$/ do x=1
11
11
  @naughty = true
12
12
  end
13
-
14
- Given(/^this step works$/) do; end
15
13
  """
16
14
  And a file named "features/support/env.rb" with:
17
15
  """
@@ -23,6 +21,7 @@ Feature: Exception in After Block
23
21
  end
24
22
  """
25
23
 
24
+ @spawn
26
25
  Scenario: Handle Exception in standard scenario step and carry on
27
26
  Given a file named "features/naughty_step_in_scenario.feature" with:
28
27
  """
@@ -32,20 +31,20 @@ Feature: Exception in After Block
32
31
  Given this step does something naughty
33
32
 
34
33
  Scenario: Success
35
- Given this step works
34
+ Given this step passes
36
35
  """
37
- When I run cucumber features
38
- Then it should fail with
36
+ When I run `cucumber features`
37
+ Then it should fail with:
39
38
  """
40
39
  Feature: Sample
41
40
 
42
41
  Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
43
- Given this step does something naughty # features/step_definitions/steps.rb:1
42
+ Given this step does something naughty # features/step_definitions/naughty_steps.rb:1
44
43
  This scenario has been very very naughty (NaughtyScenarioException)
45
44
  ./features/support/env.rb:4:in `After'
46
45
 
47
- Scenario: Success # features/naughty_step_in_scenario.feature:6
48
- Given this step works # features/step_definitions/steps.rb:5
46
+ Scenario: Success # features/naughty_step_in_scenario.feature:6
47
+ Given this step passes # features/step_definitions/steps.rb:1
49
48
 
50
49
  Failing Scenarios:
51
50
  cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
@@ -55,6 +54,7 @@ Feature: Exception in After Block
55
54
 
56
55
  """
57
56
 
57
+ @spawn
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
  """
@@ -65,35 +65,35 @@ Feature: Exception in After Block
65
65
 
66
66
  Examples:
67
67
  | Might Work |
68
- | works |
68
+ | passes |
69
69
  | does something naughty |
70
- | works |
70
+ | passes |
71
71
 
72
72
  Scenario: Success
73
- Given this step works
73
+ Given this step passes
74
74
 
75
75
  """
76
- When I run cucumber features
77
- Then it should fail with
76
+ When I run `cucumber features -q`
77
+ Then it should fail with:
78
78
  """
79
79
  Feature: Sample
80
80
 
81
- Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
82
- Given this step <Might Work> # features/step_definitions/steps.rb:5
81
+ Scenario Outline: Naughty Step
82
+ Given this step <Might Work>
83
83
 
84
84
  Examples:
85
85
  | Might Work |
86
- | works |
86
+ | passes |
87
87
  | does something naughty |
88
88
  This scenario has been very very naughty (NaughtyScenarioException)
89
89
  ./features/support/env.rb:4:in `After'
90
- | works |
90
+ | passes |
91
91
 
92
- Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
93
- Given this step works # features/step_definitions/steps.rb:5
92
+ Scenario: Success
93
+ Given this step passes
94
94
 
95
95
  Failing Scenarios:
96
- cucumber features/naughty_step_in_scenario_outline.feature:3 # Scenario: Naughty Step
96
+ cucumber features/naughty_step_in_scenario_outline.feature:9
97
97
 
98
98
  4 scenarios (1 failed, 3 passed)
99
99
  4 steps (4 passed)
@@ -109,10 +109,10 @@ Feature: Exception in After Block
109
109
  Given this step does something naughty
110
110
 
111
111
  Scenario: Success
112
- Given this step works
112
+ Given this step passes
113
113
  """
114
- When I run cucumber features --format progress
115
- Then it should fail with
114
+ When I run `cucumber features --format progress`
115
+ Then it should fail with:
116
116
  """
117
117
  .F.
118
118
 
@@ -124,4 +124,3 @@ Feature: Exception in After Block
124
124
 
125
125
  """
126
126
 
127
-
@@ -4,14 +4,12 @@ Feature: Exception in AfterStep Block
4
4
  I want exceptions raised in AfterStep blocks to be handled gracefully and reported by the formatters
5
5
 
6
6
  Background:
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/step_definitions/steps.rb" with:
7
+ Given the standard step definitions
8
+ And a file named "features/step_definitions/naughty_steps.rb" with:
9
9
  """
10
10
  Given /^this step does something naughty$/ do x=1
11
11
  @naughty = true
12
12
  end
13
-
14
- Given(/^this step works$/) do; end
15
13
  """
16
14
  And a file named "features/support/env.rb" with:
17
15
  """
@@ -32,27 +30,27 @@ Feature: Exception in AfterStep Block
32
30
  Given this step does something naughty
33
31
 
34
32
  Scenario: Success
35
- Given this step works
33
+ Given this step passes
36
34
  """
37
- When I run cucumber features
38
- Then it should fail with
35
+ When I run `cucumber features`
36
+ Then it should fail with:
39
37
  """
40
38
  Feature: Sample
41
39
 
42
40
  Scenario: Naughty Step # features/naughty_step_in_scenario.feature:3
43
- Given this step does something naughty # features/step_definitions/steps.rb:1
41
+ Given this step does something naughty # features/step_definitions/naughty_steps.rb:1
44
42
  This step has been very very naughty (NaughtyStepException)
45
43
  ./features/support/env.rb:4:in `AfterStep'
46
44
  features/naughty_step_in_scenario.feature:4:in `Given this step does something naughty'
47
45
 
48
- Scenario: Success # features/naughty_step_in_scenario.feature:6
49
- Given this step works # features/step_definitions/steps.rb:5
46
+ Scenario: Success # features/naughty_step_in_scenario.feature:6
47
+ Given this step passes # features/step_definitions/steps.rb:1
50
48
 
51
49
  Failing Scenarios:
52
50
  cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Naughty Step
53
51
 
54
52
  2 scenarios (1 failed, 1 passed)
55
- 2 steps (1 failed, 1 passed)
53
+ 2 steps (2 passed)
56
54
 
57
55
  """
58
56
 
@@ -66,39 +64,39 @@ Feature: Exception in AfterStep Block
66
64
 
67
65
  Examples:
68
66
  | Might Work |
69
- | works |
67
+ | passes |
70
68
  | does something naughty |
71
- | works |
69
+ | passes |
72
70
 
73
71
  Scenario: Success
74
- Given this step works
72
+ Given this step passes
75
73
 
76
74
  """
77
- When I run cucumber features
78
- Then it should fail with
75
+ When I run `cucumber features`
76
+ Then it should fail with:
79
77
  """
80
78
  Feature: Sample
81
79
 
82
80
  Scenario Outline: Naughty Step # features/naughty_step_in_scenario_outline.feature:3
83
- Given this step <Might Work> # features/step_definitions/steps.rb:5
81
+ Given this step <Might Work> # features/naughty_step_in_scenario_outline.feature:4
84
82
 
85
83
  Examples:
86
84
  | Might Work |
87
- | works |
85
+ | passes |
88
86
  | does something naughty |
89
87
  This step has been very very naughty (NaughtyStepException)
90
88
  ./features/support/env.rb:4:in `AfterStep'
89
+ features/naughty_step_in_scenario_outline.feature:9:in `Given this step does something naughty'
91
90
  features/naughty_step_in_scenario_outline.feature:4:in `Given this step <Might Work>'
92
- | works |
91
+ | passes |
93
92
 
94
- Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
95
- Given this step works # features/step_definitions/steps.rb:5
93
+ Scenario: Success # features/naughty_step_in_scenario_outline.feature:12
94
+ Given this step passes # features/step_definitions/steps.rb:1
96
95
 
97
96
  Failing Scenarios:
98
- cucumber features/naughty_step_in_scenario_outline.feature:3 # Scenario: Naughty Step
97
+ cucumber features/naughty_step_in_scenario_outline.feature:9 # Scenario Outline: Naughty Step, Examples (#2)
99
98
 
100
99
  4 scenarios (1 failed, 3 passed)
101
- 4 steps (1 failed, 3 passed)
100
+ 4 steps (4 passed)
102
101
 
103
102
  """
104
-
@@ -0,0 +1,80 @@
1
+ Feature: Exceptions in Around Hooks
2
+
3
+ Around hooks are awkward beasts to handle internally.
4
+
5
+ Right now, if there's an error in your Around hook before you call `block.call`,
6
+ we won't even print the steps for the scenario.
7
+
8
+ This is because that `block.call` invokes all the logic that would tell Cucumber's
9
+ UI about the steps in your scenario. If we never reach that code, we'll never be
10
+ told about them.
11
+
12
+ There's another scenario to consider, where the exception occurs after the steps
13
+ have been run. How would we want to report in that case?
14
+
15
+ Scenario: Exception before the test case is run
16
+ Given the standard step definitions
17
+ And a file named "features/support/env.rb" with:
18
+ """
19
+ Around do |scenario, block|
20
+ fail "this should be reported"
21
+ block.call
22
+ end
23
+ """
24
+ And a file named "features/test.feature" with:
25
+ """
26
+ Feature:
27
+ Scenario:
28
+ Given this step passes
29
+ """
30
+ When I run `cucumber -q`
31
+ Then it should fail with exactly:
32
+ """
33
+ Feature:
34
+
35
+ Scenario:
36
+ this should be reported (RuntimeError)
37
+ ./features/support/env.rb:2:in `Around'
38
+
39
+ Failing Scenarios:
40
+ cucumber features/test.feature:2
41
+
42
+ 1 scenario (1 failed)
43
+ 0 steps
44
+ 0m0.012s
45
+
46
+ """
47
+
48
+ Scenario: Exception after the test case is run
49
+ Given the standard step definitions
50
+ And a file named "features/support/env.rb" with:
51
+ """
52
+ Around do |scenario, block|
53
+ block.call
54
+ fail "this should be reported"
55
+ end
56
+ """
57
+ And a file named "features/test.feature" with:
58
+ """
59
+ Feature:
60
+ Scenario:
61
+ Given this step passes
62
+ """
63
+ When I run `cucumber -q`
64
+ Then it should fail with exactly:
65
+ """
66
+ Feature:
67
+
68
+ Scenario:
69
+ Given this step passes
70
+ this should be reported (RuntimeError)
71
+ ./features/support/env.rb:3:in `Around'
72
+
73
+ Failing Scenarios:
74
+ cucumber features/test.feature:2
75
+
76
+ 1 scenario (1 failed)
77
+ 1 step (1 passed)
78
+ 0m0.012s
79
+
80
+ """
@@ -4,11 +4,7 @@ Feature: Exception in Before Block
4
4
  I want exceptions raised in Before blocks to be handled gracefully and reported by the formatters
5
5
 
6
6
  Background:
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/step_definitions/steps.rb" with:
9
- """
10
- Given(/^this step works$/) do; end
11
- """
7
+ Given the standard step definitions
12
8
  And a file named "features/support/env.rb" with:
13
9
  """
14
10
  class SomeSetupException < Exception; end
@@ -18,23 +14,24 @@ Feature: Exception in Before Block
18
14
  end
19
15
  """
20
16
 
17
+ @spawn
21
18
  Scenario: Handle Exception in standard scenario step and carry on
22
19
  Given a file named "features/naughty_step_in_scenario.feature" with:
23
20
  """
24
21
  Feature: Sample
25
22
 
26
23
  Scenario: Run a good step
27
- Given this step works
24
+ Given this step passes
28
25
  """
29
- When I run cucumber features
30
- Then it should fail with
26
+ When I run `cucumber features`
27
+ Then it should fail with:
31
28
  """
32
29
  Feature: Sample
33
30
 
34
31
  Scenario: Run a good step # features/naughty_step_in_scenario.feature:3
35
32
  I cannot even start this scenario (SomeSetupException)
36
33
  ./features/support/env.rb:4:in `Before'
37
- Given this step works # features/step_definitions/steps.rb:1
34
+ Given this step passes # features/step_definitions/steps.rb:1
38
35
 
39
36
  Failing Scenarios:
40
37
  cucumber features/naughty_step_in_scenario.feature:3 # Scenario: Run a good step
@@ -50,29 +47,30 @@ Feature: Exception in Before Block
50
47
  Feature: Sample
51
48
 
52
49
  Background:
53
- Given this step works
50
+ Given this step passes
54
51
 
55
52
  Scenario: Run a good step
56
- Given this step works
53
+ Given this step passes
57
54
  """
58
- When I run cucumber features
59
- Then it should fail with
55
+ When I run `cucumber features`
56
+ Then it should fail with exactly:
60
57
  """
61
58
  Feature: Sample
62
59
 
63
- Background: # features/naughty_step_in_before.feature:3
60
+ Background: # features/naughty_step_in_before.feature:3
64
61
  I cannot even start this scenario (SomeSetupException)
65
62
  ./features/support/env.rb:4:in `Before'
66
- Given this step works # features/step_definitions/steps.rb:1
63
+ Given this step passes # features/step_definitions/steps.rb:1
67
64
 
68
65
  Scenario: Run a good step # features/naughty_step_in_before.feature:6
69
- Given this step works # features/step_definitions/steps.rb:1
66
+ Given this step passes # features/step_definitions/steps.rb:1
70
67
 
71
68
  Failing Scenarios:
72
69
  cucumber features/naughty_step_in_before.feature:6 # Scenario: Run a good step
73
70
 
74
71
  1 scenario (1 failed)
75
- 2 steps (1 skipped, 1 passed)
72
+ 2 steps (2 skipped)
73
+ 0m0.012s
76
74
 
77
75
  """
78
76
 
@@ -82,10 +80,10 @@ Feature: Exception in Before Block
82
80
  Feature: Sample
83
81
 
84
82
  Scenario: Run a good step
85
- Given this step works
83
+ Given this step passes
86
84
  """
87
- When I run cucumber features --format progress
88
- Then it should fail with
85
+ When I run `cucumber features --format progress`
86
+ Then it should fail with:
89
87
  """
90
88
  F-
91
89
 
@@ -0,0 +1,29 @@
1
+ Feature: Custom filter
2
+
3
+ Scenario: Add a custom filter via AfterConfiguration hook
4
+ Given a file named "features/test.feature" with:
5
+ """
6
+ Feature:
7
+ Scenario:
8
+ Given my special step
9
+ """
10
+ And a file named "features/support/my_filter.rb" with:
11
+ """
12
+ require 'cucumber/core/filter'
13
+
14
+ MakeAnythingPass = Cucumber::Core::Filter.new do
15
+ def test_case(test_case)
16
+ activated_steps = test_case.test_steps.map do |test_step|
17
+ test_step.with_action { }
18
+ end
19
+ test_case.with_steps(activated_steps).describe_to receiver
20
+ end
21
+ end
22
+
23
+ AfterConfiguration do |config|
24
+ config.filters << MakeAnythingPass.new
25
+ end
26
+ """
27
+ When I run `cucumber --strict`
28
+ Then it should pass
29
+
@@ -0,0 +1,94 @@
1
+ Feature: Custom Formatter
2
+
3
+ Background:
4
+ Given a file named "features/f.feature" with:
5
+ """
6
+ Feature: I'll use my own
7
+ Scenario: Just print me
8
+ Given this step passes
9
+ """
10
+ And the standard step definitions
11
+
12
+ Scenario: Use the new API
13
+ Given a file named "features/support/custom_formatter.rb" with:
14
+ """
15
+ module MyCustom
16
+ class Formatter
17
+ def initialize(runtime, io, options)
18
+ @io = io
19
+ end
20
+
21
+ def before_test_case(test_case)
22
+ feature = test_case.source.first
23
+ scenario = test_case.source.last
24
+ @io.puts feature.short_name.upcase
25
+ @io.puts " #{scenario.name.upcase}"
26
+ end
27
+ end
28
+ end
29
+ """
30
+ When I run `cucumber features/f.feature --format MyCustom::Formatter`
31
+ Then it should pass with exactly:
32
+ """
33
+ I'LL USE MY OWN
34
+ JUST PRINT ME
35
+
36
+ """
37
+
38
+ Scenario: Use the legacy API
39
+ Given a file named "features/support/custom_legacy_formatter.rb" with:
40
+ """
41
+ module MyCustom
42
+ class LegacyFormatter
43
+ def initialize(runtime, io, options)
44
+ @io = io
45
+ end
46
+
47
+ def before_feature(feature)
48
+ @io.puts feature.short_name.upcase
49
+ end
50
+
51
+ def scenario_name(keyword, name, file_colon_line, source_indent)
52
+ @io.puts " #{name.upcase}"
53
+ end
54
+ end
55
+ end
56
+ """
57
+ When I run `cucumber features/f.feature --format MyCustom::LegacyFormatter`
58
+ Then it should pass with exactly:
59
+ """
60
+ I'LL USE MY OWN
61
+ JUST PRINT ME
62
+
63
+ """
64
+
65
+ Scenario: Use both
66
+ You can use a specific shim to opt-in to both APIs at once.
67
+
68
+ Given a file named "features/support/custom_mixed_formatter.rb" with:
69
+ """
70
+ module MyCustom
71
+ class MixedFormatter
72
+
73
+ def initialize(runtime, io, options)
74
+ @io = io
75
+ end
76
+
77
+ def before_test_case(test_case)
78
+ feature = test_case.source.first
79
+ @io.puts feature.short_name.upcase
80
+ end
81
+
82
+ def scenario_name(keyword, name, file_colon_line, source_indent)
83
+ @io.puts " #{name.upcase}"
84
+ end
85
+ end
86
+ end
87
+ """
88
+ When I run `cucumber features/f.feature --format MyCustom::MixedFormatter`
89
+ Then it should pass with exactly:
90
+ """
91
+ I'LL USE MY OWN
92
+ JUST PRINT ME
93
+
94
+ """
@@ -0,0 +1,47 @@
1
+ Feature: Debug formatter
2
+
3
+ In order to help you easily visualise the listener API, you can use
4
+ the `debug` formatter that prints the calls to the listener as a
5
+ feature is run.
6
+
7
+ Background:
8
+ Given the standard step definitions
9
+
10
+ Scenario: title
11
+ Given a file named "features/test.feature" with:
12
+ """
13
+ Feature:
14
+ Scenario:
15
+ Given this step passes
16
+ """
17
+ When I run `cucumber -f debug`
18
+ Then the stderr should not contain anything
19
+ Then it should pass with:
20
+ """
21
+ before_test_case
22
+ before_features
23
+ before_feature
24
+ before_tags
25
+ after_tags
26
+ feature_name
27
+ before_test_step
28
+ after_test_step
29
+ before_test_step
30
+ before_feature_element
31
+ before_tags
32
+ after_tags
33
+ scenario_name
34
+ before_steps
35
+ before_step
36
+ before_step_result
37
+ step_name
38
+ after_step_result
39
+ after_step
40
+ after_test_step
41
+ after_steps
42
+ after_feature_element
43
+ after_test_case
44
+ after_feature
45
+ after_features
46
+ done
47
+ """
@@ -13,15 +13,13 @@ Feature: Formatter API: Step file path and line number (Issue #179)
13
13
  """
14
14
  And a file named "features/step_definitions/steps.rb" with:
15
15
  """
16
- Given /^step at line (.*)$/ do |line|
17
- end
16
+ Given(/^step at line (.*)$/) {|line| }
18
17
  """
19
18
  And a file named "features/support/jb/formatter.rb" with:
20
19
  """
21
20
  module Jb
22
21
  class Formatter
23
- def initialize(step_mother, io, options)
24
- @step_mother = step_mother
22
+ def initialize(runtime, io, options)
25
23
  @io = io
26
24
  end
27
25
 
@@ -1,13 +1,14 @@
1
1
  Feature: HTML output formatter
2
2
 
3
3
  Background:
4
- Given a file named "features/scenario_outline_with_undefined_steps.feature" with:
4
+ Given the standard step definitions
5
+ And a file named "features/scenario_outline_with_undefined_steps.feature" with:
5
6
  """
6
7
  Feature:
7
8
 
8
9
  Scenario Outline:
9
- Given an undefined step
10
-
10
+ Given this step is undefined
11
+
11
12
  Examples:
12
13
  |foo|
13
14
  |bar|
@@ -17,7 +18,7 @@ Feature: HTML output formatter
17
18
  Feature: Outline
18
19
 
19
20
  Scenario Outline: Will it blend?
20
- Given this hasn't been implemented yet
21
+ Given this step is pending
21
22
  And other step
22
23
  When I do something with <example>
23
24
  Then I should see something
@@ -32,21 +33,12 @@ Feature: HTML output formatter
32
33
  Feature: Feature with failing background step
33
34
 
34
35
  Background:
35
- Given this fails
36
+ Given this step fails
36
37
 
37
38
  Scenario:
38
39
  When I do something
39
40
  Then I should see something
40
41
  """
41
- And a file named "features/step_definitions/steps.rb" with:
42
- """
43
- Given /^this fails$/ do
44
- fail 'This step should fail'
45
- end
46
- Given /^this hasn't been implemented yet$/ do
47
- pending
48
- end
49
- """
50
42
 
51
43
  Scenario: an scenario outline, one undefined step, one random example, expand flag on
52
44
  When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format html --expand `
@@ -63,10 +55,14 @@ Feature: HTML output formatter
63
55
  """
64
56
  makeRed('scenario_1')
65
57
  """
58
+
66
59
  Examples:
67
60
  | file | flag |
68
61
  | features/scenario_outline_with_pending_step.feature | --expand |
69
62
  | features/scenario_outline_with_pending_step.feature | |
63
+
64
+ Examples:
65
+ | file | flag |
70
66
  | features/scenario_outline_with_undefined_steps.feature | --expand |
71
67
  | features/scenario_outline_with_undefined_steps.feature | |
72
68