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,75 @@
1
+ Feature: Run specific scenarios
2
+
3
+ You can choose to run a specific scenario using the file:line format,
4
+ or you can pass in a file with a list of scenarios using @-notation.
5
+
6
+ The line number can fall anywhere within the body of a scenario, including
7
+ steps, tags, comments, description, data tables or doc strings.
8
+
9
+ For scenario outlines, if the line hits one example row, just that one
10
+ will be run. Otherwise all examples in the table or outline will be run.
11
+
12
+ Background:
13
+ Given the standard step definitions
14
+
15
+ Scenario: Two scenarios, run just one of them
16
+ Given a file named "features/test.feature" with:
17
+ """
18
+ Feature:
19
+
20
+ Scenario: Miss
21
+ Given this step is undefined
22
+
23
+ Scenario: Hit
24
+ Given this step passes
25
+ """
26
+ When I run `cucumber features/test.feature:7 --format pretty --quiet`
27
+ Then it should pass with:
28
+ """
29
+ Feature:
30
+
31
+ Scenario: Hit
32
+ Given this step passes
33
+
34
+ 1 scenario (1 passed)
35
+ """
36
+
37
+ Scenario: Use @-notation to specify a file containing feature file list
38
+ Given a file named "features/test.feature" with:
39
+ """
40
+ Feature: Sample
41
+ Scenario: Passing
42
+ Given this step passes
43
+ """
44
+ And a file named "list-of-features.txt" with:
45
+ """
46
+ features/test.feature:2
47
+ """
48
+ When I run `cucumber -q @list-of-features.txt`
49
+ Then it should pass with:
50
+ """
51
+ Feature: Sample
52
+
53
+ Scenario: Passing
54
+ Given this step passes
55
+
56
+ 1 scenario (1 passed)
57
+ 1 step (1 passed)
58
+ """
59
+
60
+ Scenario: Specify order of scenarios
61
+ Given a file named "features/test.feature" with:
62
+ """
63
+ Feature:
64
+ Scenario:
65
+ Given this step passes
66
+
67
+ Scenario:
68
+ Given this step fails
69
+ """
70
+ When I run `cucumber features/test.feature:5 features/test.feature:3 -f progress`
71
+ Then it should fail with:
72
+ """
73
+ F.
74
+ """
75
+
@@ -0,0 +1,43 @@
1
+ Feature: Showing differences to expected output
2
+
3
+ Cucumber will helpfully show you the expectation error that your
4
+ testing library gives you, in the context of the failing scenario.
5
+ When using RSpec, for example, this will show the difference between
6
+ the expected and the actual output.
7
+
8
+ Scenario: Run single failing scenario with default diff enabled
9
+ Given a file named "features/failing_expectation.feature" with:
10
+ """
11
+ Feature: Failing expectation
12
+
13
+ Scenario: Failing expectation
14
+ Given failing expectation
15
+ """
16
+ And a file named "features/step_definitions/steps.rb" with:
17
+ """
18
+ Given /^failing expectation$/ do x=1
19
+ expect('this').to eq 'that'
20
+ end
21
+ """
22
+ When I run `cucumber -q features/failing_expectation.feature`
23
+ Then it should fail with:
24
+ """
25
+ Feature: Failing expectation
26
+
27
+ Scenario: Failing expectation
28
+ Given failing expectation
29
+
30
+ expected: "that"
31
+ got: "this"
32
+
33
+ (compared using ==)
34
+ (RSpec::Expectations::ExpectationNotMetError)
35
+ ./features/step_definitions/steps.rb:2:in `/^failing expectation$/'
36
+ features/failing_expectation.feature:4:in `Given failing expectation'
37
+
38
+ Failing Scenarios:
39
+ cucumber features/failing_expectation.feature:3
40
+
41
+ 1 scenario (1 failed)
42
+ 1 step (1 failed)
43
+ """
@@ -0,0 +1,44 @@
1
+ @spawn
2
+ Feature: Running multiple formatters
3
+
4
+ When running cucumber, you are able to using multiple different
5
+ formatters and redirect the output to text files.
6
+
7
+ Scenario: Multiple formatters and outputs
8
+ Given a file named "features/test.feature" with:
9
+ """
10
+ Feature: Lots of undefined
11
+
12
+ Scenario: Implement me
13
+ Given it snows in Sahara
14
+ Given it's 40 degrees in Norway
15
+ And it's 40 degrees in Norway
16
+ When I stop procrastinating
17
+ And there is world peace
18
+ """
19
+ When I run `cucumber --no-color --format progress --out progress.txt --format pretty --out pretty.txt --no-source --dry-run --no-snippets features/test.feature`
20
+ Then the stderr should not contain anything
21
+ Then the file "progress.txt" should contain:
22
+ """
23
+ UUUUU
24
+
25
+ 1 scenario (1 undefined)
26
+ 5 steps (5 undefined)
27
+
28
+ """
29
+ And the file "pretty.txt" should contain:
30
+ """
31
+ Feature: Lots of undefined
32
+
33
+ Scenario: Implement me
34
+ Given it snows in Sahara
35
+ Given it's 40 degrees in Norway
36
+ And it's 40 degrees in Norway
37
+ When I stop procrastinating
38
+ And there is world peace
39
+
40
+ 1 scenario (1 undefined)
41
+ 5 steps (5 undefined)
42
+
43
+ """
44
+
@@ -0,0 +1,64 @@
1
+ Feature: Strict mode
2
+
3
+ Using the `--strict` flag will cause cucumber to fail unless all the
4
+ step definitions have been defined.
5
+
6
+ Background:
7
+ Given a file named "features/missing.feature" with:
8
+ """
9
+ Feature: Missing
10
+ Scenario: Missing
11
+ Given this step passes
12
+ """
13
+ And a file named "features/pending.feature" with:
14
+ """
15
+ Feature: Pending
16
+ Scenario: Pending
17
+ Given this step is pending
18
+ """
19
+
20
+ Scenario: Fail with --strict due to undefined step
21
+ When I run `cucumber -q features/missing.feature --strict`
22
+ Then it should fail with:
23
+ """
24
+ Feature: Missing
25
+
26
+ Scenario: Missing
27
+ Given this step passes
28
+ Undefined step: "this step passes" (Cucumber::Undefined)
29
+ features/missing.feature:3:in `Given this step passes'
30
+
31
+ 1 scenario (1 undefined)
32
+ 1 step (1 undefined)
33
+ """
34
+
35
+ Scenario: Fail with --strict due to pending step
36
+ Given the standard step definitions
37
+ When I run `cucumber -q features/pending.feature --strict`
38
+ Then it should fail with:
39
+ """
40
+ Feature: Pending
41
+
42
+ Scenario: Pending
43
+ Given this step is pending
44
+ TODO (Cucumber::Pending)
45
+ ./features/step_definitions/steps.rb:3:in `/^this step is pending$/'
46
+ features/pending.feature:3:in `Given this step is pending'
47
+
48
+ 1 scenario (1 pending)
49
+ 1 step (1 pending)
50
+ """
51
+
52
+ Scenario: Succeed with --strict
53
+ Given the standard step definitions
54
+ When I run `cucumber -q features/missing.feature --strict`
55
+ Then it should pass with:
56
+ """
57
+ Feature: Missing
58
+
59
+ Scenario: Missing
60
+ Given this step passes
61
+
62
+ 1 scenario (1 passed)
63
+ 1 step (1 passed)
64
+ """
@@ -1,6 +1,5 @@
1
1
  Feature: Nested Steps
2
2
 
3
-
4
3
  Background:
5
4
  Given a scenario with a step that looks like this:
6
5
  """gherkin
@@ -112,16 +111,14 @@ Feature: Nested Steps
112
111
  step "I have a couple turtles"
113
112
  end
114
113
 
115
- When /I have a couple turtles/ do
116
- raise 'error'
117
- end
114
+ When(/I have a couple turtles/) { raise 'error' }
118
115
  """
119
116
  When I run the feature with the progress formatter
120
117
  Then it should fail with:
121
118
  """
122
119
  error (RuntimeError)
123
- ./features/step_definitions/test_steps2.rb:6:in `/I have a couple turtles/'
124
- ./features/step_definitions/test_steps2.rb:2:in `/two turtles/'
120
+ ./features/step_definitions/steps2.rb:5:in `/I have a couple turtles/'
121
+ ./features/step_definitions/steps2.rb:2:in `/two turtles/'
125
122
  features/test_feature_1.feature:3:in `Given two turtles'
126
123
 
127
124
  Failing Scenarios:
@@ -130,3 +127,52 @@ Feature: Nested Steps
130
127
  1 scenario (1 failed)
131
128
  1 step (1 failed)
132
129
  """
130
+
131
+ Scenario: Undefined nested step
132
+ Given a file named "features/call_undefined_step_from_step_def.feature" with:
133
+ """
134
+ Feature: Calling undefined step
135
+
136
+ Scenario: Call directly
137
+ Given a step that calls an undefined step
138
+
139
+ Scenario: Call via another
140
+ Given a step that calls a step that calls an undefined step
141
+ """
142
+ And a file named "features/step_definitions/steps.rb" with:
143
+ """
144
+ Given /^a step that calls an undefined step$/ do
145
+ step 'this does not exist'
146
+ end
147
+
148
+ Given /^a step that calls a step that calls an undefined step$/ do
149
+ step 'a step that calls an undefined step'
150
+ end
151
+ """
152
+ When I run `cucumber -q features/call_undefined_step_from_step_def.feature`
153
+ Then it should fail with exactly:
154
+ """
155
+ Feature: Calling undefined step
156
+
157
+ Scenario: Call directly
158
+ Given a step that calls an undefined step
159
+ Undefined dynamic step: "this does not exist" (Cucumber::UndefinedDynamicStep)
160
+ ./features/step_definitions/steps.rb:2:in `/^a step that calls an undefined step$/'
161
+ features/call_undefined_step_from_step_def.feature:4:in `Given a step that calls an undefined step'
162
+
163
+ Scenario: Call via another
164
+ Given a step that calls a step that calls an undefined step
165
+ Undefined dynamic step: "this does not exist" (Cucumber::UndefinedDynamicStep)
166
+ ./features/step_definitions/steps.rb:2:in `/^a step that calls an undefined step$/'
167
+ ./features/step_definitions/steps.rb:6:in `/^a step that calls a step that calls an undefined step$/'
168
+ features/call_undefined_step_from_step_def.feature:7:in `Given a step that calls a step that calls an undefined step'
169
+
170
+ Failing Scenarios:
171
+ cucumber features/call_undefined_step_from_step_def.feature:3
172
+ cucumber features/call_undefined_step_from_step_def.feature:6
173
+
174
+ 2 scenarios (2 failed)
175
+ 2 steps (2 failed)
176
+ 0m0.012s
177
+
178
+ """
@@ -1,7 +1,5 @@
1
- @fails_on_1_8_7
2
1
  Feature: Nested Steps in I18n
3
2
 
4
-
5
3
  Background:
6
4
  Given a scenario with a step that looks like this in japanese:
7
5
  """gherkin
@@ -1,4 +1,4 @@
1
- Feature: Step Definitions
1
+ Feature: One line step definitions
2
2
 
3
3
  Everybody knows you can do step definitions in Cucumber
4
4
  but did you know you can do this?
@@ -12,7 +12,7 @@ Feature: Step Definitions
12
12
  end
13
13
 
14
14
  def assert_done
15
- @done.should be_true
15
+ expect(@done).to be true
16
16
  end
17
17
  end
18
18
  World(Driver)
@@ -39,7 +39,7 @@ Feature: Step Definitions
39
39
  end
40
40
 
41
41
  def assert_done
42
- @done.should be_true
42
+ expect(@done).to be true
43
43
  end
44
44
  end
45
45
 
@@ -0,0 +1,148 @@
1
+ Feature: Pretty formatter - Printing messages
2
+
3
+ When you want to print to Cucumber's output, just call `puts` from
4
+ a step definition. Cucumber will grab the output and print it via
5
+ the formatter that you're using.
6
+
7
+ Your message will be printed out after the step has run.
8
+
9
+ Background:
10
+ Given the standard step definitions
11
+ And a file named "features/step_definitions/puts_steps.rb" with:
12
+ """
13
+ Given /^I use puts with text "(.*)"$/ do |ann|
14
+ puts(ann)
15
+ end
16
+
17
+ Given /^I use multiple putss$/ do
18
+ puts("Multiple")
19
+ puts("Announce","Me")
20
+ end
21
+
22
+ Given /^I use message (.+) in line (.+) (?:with result (.+))$/ do |ann, line, result|
23
+ puts("Last message") if line == "3"
24
+ puts("Line: #{line}: #{ann}")
25
+ fail if result =~ /fail/i
26
+ end
27
+
28
+ Given /^I use puts and step fails$/ do
29
+ puts("Announce with fail")
30
+ fail
31
+ end
32
+
33
+ Given /^I puts the world$/ do
34
+ puts(self)
35
+ end
36
+ """
37
+ And a file named "features/f.feature" with:
38
+ """
39
+ Feature:
40
+
41
+ Scenario:
42
+ Given I use puts with text "Ann"
43
+ And this step passes
44
+
45
+ Scenario:
46
+ Given I use multiple putss
47
+ And this step passes
48
+
49
+ Scenario Outline:
50
+ Given I use message <ann> in line <line>
51
+
52
+ Examples:
53
+ | line | ann |
54
+ | 1 | anno1 |
55
+ | 2 | anno2 |
56
+ | 3 | anno3 |
57
+
58
+ Scenario:
59
+ Given I use puts and step fails
60
+ And this step passes
61
+
62
+ Scenario Outline:
63
+ Given I use message <ann> in line <line> with result <result>
64
+
65
+ Examples:
66
+ | line | ann | result |
67
+ | 1 | anno1 | fail |
68
+ | 2 | anno2 | pass |
69
+ """
70
+
71
+ And a file named "features/puts_world.feature" with:
72
+ """
73
+ Feature: puts_world
74
+ Scenario: puts_world
75
+ Given I puts the world
76
+ """
77
+
78
+ # Don't know why, but we need to spawn this for JRuby otherwise it gives wierd errors
79
+ @spawn
80
+ Scenario: Delayed messages feature
81
+ When I run `cucumber --quiet --format pretty features/f.feature`
82
+ Then the stderr should not contain anything
83
+ And the output should contain:
84
+ """
85
+ Feature:
86
+
87
+ Scenario:
88
+ Given I use puts with text "Ann"
89
+ Ann
90
+ And this step passes
91
+
92
+ Scenario:
93
+ Given I use multiple putss
94
+ Multiple
95
+ Announce
96
+ Me
97
+ And this step passes
98
+
99
+ Scenario Outline:
100
+ Given I use message <ann> in line <line>
101
+
102
+ Examples:
103
+ | line | ann |
104
+ | 1 | anno1 |
105
+ | 2 | anno2 |
106
+ | 3 | anno3 |
107
+
108
+ Scenario:
109
+ Given I use puts and step fails
110
+ Announce with fail
111
+ (RuntimeError)
112
+ ./features/step_definitions/puts_steps.rb:18:in `/^I use puts and step fails$/'
113
+ features/f.feature:21:in `Given I use puts and step fails'
114
+ And this step passes
115
+
116
+ Scenario Outline:
117
+ Given I use message <ann> in line <line> with result <result>
118
+
119
+ Examples:
120
+ | line | ann | result |
121
+ | 1 | anno1 | fail | Line: 1: anno1
122
+ (RuntimeError)
123
+ ./features/step_definitions/puts_steps.rb:13:in `/^I use message (.+) in line (.+) (?:with result (.+))$/'
124
+ features/f.feature:29:in `Given I use message anno1 in line 1 with result fail'
125
+ features/f.feature:25:in `Given I use message <ann> in line <line> with result <result>'
126
+ | 2 | anno2 | pass | Line: 2: anno2
127
+ """
128
+
129
+ Scenario: Non-delayed messages feature (progress formatter)
130
+ When I run `cucumber --format progress features/f.feature`
131
+ Then the output should contain:
132
+ """
133
+ Ann
134
+ ..
135
+ Multiple
136
+
137
+ Announce
138
+
139
+ Me
140
+ ..-UUUUUU
141
+ Announce with fail
142
+ F--
143
+ Line: 1: anno1
144
+ FFF
145
+ Line: 2: anno2
146
+ ...
147
+ """
148
+
@@ -0,0 +1,62 @@
1
+ Feature: Skip Scenario
2
+
3
+ Scenario: With a passing step
4
+ Given a file named "features/test.feature" with:
5
+ """
6
+ Feature: test
7
+ Scenario: test
8
+ Given this step says to skip
9
+ And this step passes
10
+ """
11
+ And the standard step definitions
12
+ And a file named "features/step_definitions/skippy.rb" with:
13
+ """
14
+ Given /skip/ do
15
+ skip_this_scenario
16
+ end
17
+ """
18
+ When I run `cucumber -q`
19
+ Then it should pass with exactly:
20
+ """
21
+ Feature: test
22
+
23
+ Scenario: test
24
+ Given this step says to skip
25
+ And this step passes
26
+
27
+ 1 scenario (1 skipped)
28
+ 2 steps (2 skipped)
29
+ 0m0.012s
30
+
31
+ """
32
+
33
+ Scenario: Use legacy API from a hook
34
+ Given a file named "features/test.feature" with:
35
+ """
36
+ Feature: test
37
+ Scenario: test
38
+ Given this step passes
39
+ And this step passes
40
+ """
41
+ And the standard step definitions
42
+ And a file named "features/support/hook.rb" with:
43
+ """
44
+ Before do |scenario|
45
+ scenario.skip_invoke!
46
+ end
47
+ """
48
+ When I run `cucumber -q`
49
+ Then it should pass with:
50
+ """
51
+ Feature: test
52
+
53
+ Scenario: test
54
+ Given this step passes
55
+ And this step passes
56
+
57
+ 1 scenario (1 skipped)
58
+ 2 steps (2 skipped)
59
+ 0m0.012s
60
+
61
+ """
62
+
@@ -0,0 +1,56 @@
1
+ Feature: Snippets
2
+
3
+ Cucumber helpfully prints out any undefined step definitions as a code
4
+ snippet suggestion, which you can then paste into a step definitions
5
+ file of your choosing.
6
+
7
+ Scenario: Snippet for undefined step with a pystring
8
+ Given a file named "features/undefined_steps.feature" with:
9
+ """
10
+ Feature:
11
+ Scenario: pystring
12
+ Given a pystring
13
+ \"\"\"
14
+ example with <html> entities
15
+ \"\"\"
16
+ When a simple when step
17
+ And another when step
18
+ Then a simple then step
19
+ """
20
+ When I run `cucumber features/undefined_steps.feature -s`
21
+ Then the output should contain:
22
+ """
23
+ Given(/^a pystring$/) do |string|
24
+ pending # Write code here that turns the phrase above into concrete actions
25
+ end
26
+
27
+ When(/^a simple when step$/) do
28
+ pending # Write code here that turns the phrase above into concrete actions
29
+ end
30
+
31
+ When(/^another when step$/) do
32
+ pending # Write code here that turns the phrase above into concrete actions
33
+ end
34
+
35
+ Then(/^a simple then step$/) do
36
+ pending # Write code here that turns the phrase above into concrete actions
37
+ end
38
+ """
39
+
40
+ Scenario: Snippet for undefined step with a step table
41
+ Given a file named "features/undefined_steps.feature" with:
42
+ """
43
+ Feature:
44
+ Scenario: table
45
+ Given a table
46
+ | table |
47
+ |example|
48
+ """
49
+ When I run `cucumber features/undefined_steps.feature -s`
50
+ Then the output should contain:
51
+ """
52
+ Given(/^a table$/) do |table|
53
+ # table is a Cucumber::Core::Ast::DataTable
54
+ pending # Write code here that turns the phrase above into concrete actions
55
+ end
56
+ """
@@ -1,11 +1,11 @@
1
1
  Feature: Table diffing
2
- In order to more easily compare data in tables
3
- step definition writers should be able to diff
4
- a table with expected data and see the diff inline
5
-
2
+
3
+ To allow you to more easily compare data in tables, you are able
4
+ to easily diff a table with expected data and see the diff in your
5
+ output.
6
+
6
7
  Scenario: Extra row
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/tables.feature" with:
8
+ Given a file named "features/tables.feature" with:
9
9
  """
10
10
  Feature: Tables
11
11
  Scenario: Extra row
@@ -13,33 +13,38 @@ Feature: Table diffing
13
13
  | x | y |
14
14
  | a | b |
15
15
  """
16
- And a file named "features/step_definitions/table_steps.rb" with:
16
+ And a file named "features/step_definitions/steps.rb" with:
17
17
  """
18
18
  Then /the table should be:/ do |expected| x=1
19
19
  expected.diff!(table(%{
20
- | x | y |
20
+ | x | y |
21
21
  | a | c |
22
22
  }))
23
23
  end
24
24
  """
25
- When I run cucumber -i features/tables.feature
26
- Then it should fail with
25
+ When I run `cucumber features/tables.feature`
26
+ Then it should fail with exactly:
27
27
  """
28
28
  Feature: Tables
29
-
29
+
30
30
  Scenario: Extra row # features/tables.feature:2
31
- Then the table should be: # features/step_definitions/table_steps.rb:1
31
+ Then the table should be: # features/step_definitions/steps.rb:1
32
32
  | x | y |
33
33
  | a | b |
34
- | a | c |
35
- Tables were not identical (Cucumber::Ast::Table::Different)
36
- ./features/step_definitions/table_steps.rb:2:in `/the table should be:/'
34
+ Tables were not identical:
35
+
36
+ | x | y |
37
+ | (-) a | (-) b |
38
+ | (+) a | (+) c |
39
+ (Cucumber::MultilineArgument::DataTable::Different)
40
+ ./features/step_definitions/steps.rb:2:in `/the table should be:/'
37
41
  features/tables.feature:3:in `Then the table should be:'
38
-
42
+
39
43
  Failing Scenarios:
40
44
  cucumber features/tables.feature:2 # Scenario: Extra row
41
45
 
42
46
  1 scenario (1 failed)
43
47
  1 step (1 failed)
48
+ 0m0.012s
44
49
 
45
50
  """
@@ -37,7 +37,7 @@ Feature: Transforms
37
37
  end
38
38
 
39
39
  Given /^(a Person aged \d+) with blonde hair$/ do |person|
40
- person.age.should == 15
40
+ expect(person.age).to eq 15
41
41
  end
42
42
  """
43
43
  When I run `cucumber features/foo.feature`
@@ -56,7 +56,7 @@ Feature: Transforms
56
56
  end
57
57
 
58
58
  Given /^(#{A_PERSON}) with blonde hair$/ do |person|
59
- person.age.should == 15
59
+ expect(person.age).to eq 15
60
60
  end
61
61
  """
62
62
  When I run `cucumber features/foo.feature`