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,24 @@
1
+ # encoding: utf-8
2
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
3
+ require 'cucumber/formatter/unicode'
4
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
5
+ require 'calculator'
6
+
7
+ Before do
8
+ @calc = Calculator.new
9
+ end
10
+
11
+ After do
12
+ end
13
+
14
+ Δεδομένου ότι /έχω εισάγει (\d+) στην αριθμομηχανή/ do |n|
15
+ @calc.push n.to_i
16
+ end
17
+
18
+ Όταν /πατάω (\w+)/ do |op|
19
+ @result = @calc.send op
20
+ end
21
+
22
+ Τότε /το αποτέλεσμα στην οθόνη πρέπει να είναι (.*)/ do |result|
23
+ @result.should == result.to_f
24
+ end
@@ -0,0 +1,14 @@
1
+ class Calculator
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def add
8
+ @args.inject(0){|n,sum| sum+=n}
9
+ end
10
+
11
+ def divide
12
+ @args[0].to_f / @args[1].to_f
13
+ end
14
+ end
@@ -3,4 +3,6 @@ require 'cucumber/rake/task'
3
3
 
4
4
  Cucumber::Rake::Task.new do |t|
5
5
  t.cucumber_opts = %w{--format pretty}
6
- end
6
+ end
7
+
8
+ task default: :cucumber
@@ -20,11 +20,11 @@ Lorsqu /on tape additionner/ do
20
20
  end
21
21
 
22
22
  Alors /le résultat affiché doit être (\d*)/ do |result|
23
- result.to_i.should == @expected_result
23
+ expect result.to_i == @expected_result
24
24
  end
25
25
 
26
26
  Alors /le résultat doit être (\d*)/ do |result|
27
- result.to_i.should == @expected_result
27
+ expect result.to_i == @expected_result
28
28
  end
29
29
 
30
30
  Soit /^que je tape sur la touche "\+"$/ do
@@ -0,0 +1,6 @@
1
+ $:.unshift(File.dirname(__FILE__) + '/../../../lib')
2
+ require 'cucumber/rake/task'
3
+
4
+ Cucumber::Rake::Task.new do |t|
5
+ t.cucumber_opts = %w{--format pretty}
6
+ end
@@ -0,0 +1,17 @@
1
+ # language: ht
2
+ Karakteristik: Adisyon
3
+    Nan lòd pou fè pou evite erè komik
4
+    Kòm yon moun sòt nan matematik
5
+    Mwen ta vle yo dim sòm total nan antre de nimero
6
+
7
+ Plan Senaryo: ajoute de nimero
8
+ Sipoze mwen te antre <input_1> nan kalkilatris la
9
+ Epi mwen te antre <input_2> nan kalkilatris la
10
+ Lè Mwen peze <button>
11
+ Rezilta a ta dwe <output> sou ekran an
12
+
13
+ Egzanp:
14
+ | input_1 | input_2 | button | output |
15
+ | 20 | 30 | ajoute | 50 |
16
+ | 2 | 5 | ajoute | 7 |
17
+ | 0 | 40 | ajoute | 40 |
@@ -0,0 +1,10 @@
1
+ # language: ht
2
+ Karakteristik: Divizyon
3
+    Nan lòd pou fè pou evite erè komik
4
+    Kesye-a dwe kapab kalkile yon fraksyon
5
+
6
+    Senaryo: nimewo regilye
7
+      * Mwen te antre 3 nan kalkilatris la
8
+      * Mwen te antre 2 nan kalkilatris la
9
+      * Mwen peze divize
10
+      * Rezilta a ta dwe 1.5 sou ekran an
@@ -0,0 +1,25 @@
1
+
2
+ # encoding: utf-8
3
+ begin require 'rspec/expectations'; rescue LoadError; require 'spec/expectations'; end
4
+ require 'cucumber/formatter/unicode'
5
+ $:.unshift(File.dirname(__FILE__) + '/../../lib')
6
+ require 'kalkilatris'
7
+
8
+ Before do
9
+ @kalk = Kalkilatris.new
10
+ end
11
+
12
+ After do
13
+ end
14
+
15
+ Sipoze /Mwen te antre nan (\d+) nan kalkilatris la/ do |n|
16
+ @kalk.push n.to_i
17
+ end
18
+
19
+ Lè /Mwen peze (\w+)/ do |op|
20
+ @result = @kalk.send op
21
+ end
22
+
23
+ Lè sa a /Rezilta a ta dwe (.*) sou ekran an/ do |result|
24
+ @result.should == result.to_f
25
+ end
@@ -0,0 +1,14 @@
1
+ class Kalkilatris
2
+ def push(n)
3
+ @args ||= []
4
+ @args << n
5
+ end
6
+
7
+ def ajoute
8
+ @args.inject(0){|n,sum| sum+=n}
9
+ end
10
+
11
+ def divize
12
+ @args[0].to_f / @args[1].to_f
13
+ end
14
+ end
@@ -11,16 +11,16 @@ end
11
11
  After do
12
12
  end
13
13
 
14
- Given /我已经在计算器里输入(\d+)/ do |n|
14
+ Given /在计算器上输入(\d+)/ do |n|
15
15
  @calc.push n.to_i
16
16
  end
17
17
 
18
- When /我按(.*)按钮/ do |op|
19
- if op == '相加'
18
+ When /按(.*)键/ do |op|
19
+ if op == '加号'
20
20
  @result = @calc.send "add"
21
21
  end
22
22
  end
23
23
 
24
- Then /我应该在屏幕上看到的结果是(.*)/ do |result|
24
+ Then /屏幕上显示的结果应该是是(.*)/ do |result|
25
25
  @result.should == result.to_f
26
26
  end
@@ -3,5 +3,5 @@ When /^I ask Tcl to calculate fibonacci for (\d+)$/ do |n|
3
3
  end
4
4
 
5
5
  Then /^it should give me (\d+)$/ do |expected|
6
- @fib_result.should == expected.to_i
6
+ expect(@fib_result).to eq expected.to_i
7
7
  end
@@ -1,16 +1,18 @@
1
+ @spawn
1
2
  Feature: List step defs as json
3
+
2
4
  In order to build tools on top of Cucumber
3
5
  As a tool developer
4
6
  I want to be able to query a features directory for all the step definitions it contains
5
-
6
- Background:
7
- Given a standard Cucumber project directory structure
8
-
7
+
8
+ Background:
9
+ Given a directory named "features"
10
+
9
11
  Scenario: Two Ruby step definitions, in the same file
10
- Given a file named "features/step_definitions/foo_steps.rb" with:
12
+ Given a file named "features/step_definitions/steps.rb" with:
11
13
  """
12
- Given(/foo/i) {}
13
- Given(/b.r/xm) {}
14
+ Given(/foo/i) { }
15
+ Given(/b.r/xm) { }
14
16
  """
15
17
  When I run the following Ruby code:
16
18
  """
@@ -18,8 +20,7 @@ Feature: List step defs as json
18
20
  puts Cucumber::StepDefinitions.new.to_json
19
21
 
20
22
  """
21
- Then it should pass
22
- And the output should contain the following JSON:
23
+ Then it should pass with JSON:
23
24
  """
24
25
  [
25
26
  {"source": "foo", "flags": "i"},
@@ -28,10 +29,10 @@ Feature: List step defs as json
28
29
  """
29
30
 
30
31
  Scenario: Non-default directory structure
31
- Given a file named "my_weird/place/foo_steps.rb" with:
32
+ Given a file named "my_weird/place/steps.rb" with:
32
33
  """
33
- Given(/foo/) {}
34
- Given(/b.r/x) {}
34
+ Given(/foo/) { }
35
+ Given(/b.r/x) { }
35
36
  """
36
37
  When I run the following Ruby code:
37
38
  """
@@ -39,8 +40,7 @@ Feature: List step defs as json
39
40
  puts Cucumber::StepDefinitions.new(:autoload_code_paths => ['my_weird']).to_json
40
41
 
41
42
  """
42
- Then it should pass
43
- And the output should contain the following JSON:
43
+ Then it should pass with JSON:
44
44
  """
45
45
  [
46
46
  {"source": "foo", "flags": ""},
@@ -1,3 +1,4 @@
1
+ @spawn
1
2
  Feature: Run Cli::Main with existing Runtime
2
3
 
3
4
  This is the API that Spork uses. It creates an existing runtime then
@@ -5,19 +6,13 @@ Feature: Run Cli::Main with existing Runtime
5
6
  When the process forks, Spork them passes the runtime to Cli::Main to
6
7
  run it.
7
8
 
8
- Background:
9
- Given a standard Cucumber project directory structure
10
-
11
9
  Scenario: Run a single feature
12
- Given a file named "features/step_definitions/success.rb" with:
13
- """
14
- Given(/pass/) {}
15
- """
10
+ Given the standard step definitions
16
11
  Given a file named "features/success.feature" with:
17
12
  """
18
13
  Feature:
19
14
  Scenario:
20
- Given I pass
15
+ Given this step passes
21
16
  """
22
17
  When I run the following Ruby code:
23
18
  """
@@ -30,5 +25,5 @@ Feature: Run Cli::Main with existing Runtime
30
25
  Then it should pass
31
26
  And the output should contain:
32
27
  """
33
- Given I pass
34
- """
28
+ Given this step passes
29
+ """
@@ -1,4 +1,5 @@
1
1
  Feature: Backtraces
2
+
2
3
  In order to discover errors quickly
3
4
  As a cuker
4
5
  I want to see backtraces for failures
@@ -30,7 +31,6 @@ Feature: Backtraces
30
31
  Scenario: Example # features/failing_hard.feature:2
31
32
  Given failing # features/step_definitions/steps.rb:4
32
33
  (Java::JavaLang::UnsupportedOperationException)
33
- java.util.AbstractList.add(AbstractList.java:148)
34
- java.util.AbstractList.add(AbstractList.java:108)
34
+ java.util.AbstractList.add(java/util/AbstractList.java:
35
35
  """
36
36
 
@@ -0,0 +1,73 @@
1
+ Feature: Dry Run
2
+
3
+ Dry run gives you a way to quickly scan your features without actually running them.
4
+
5
+ - Invokes formatters without executing the steps.
6
+ - This also omits the loading of your support/env.rb file if it exists.
7
+
8
+ Scenario: With a failing step
9
+ Given a file named "features/test.feature" with:
10
+ """
11
+ Feature: test
12
+ Scenario:
13
+ Given this step fails
14
+ """
15
+ And the standard step definitions
16
+ When I run `cucumber --dry-run`
17
+ Then it should pass with exactly:
18
+ """
19
+ Feature: test
20
+
21
+ Scenario: # features/test.feature:2
22
+ Given this step fails # features/step_definitions/steps.rb:4
23
+
24
+ 1 scenario (1 skipped)
25
+ 1 step (1 skipped)
26
+ 0m0.012s
27
+
28
+ """
29
+
30
+ Scenario: In strict mode
31
+ Given a file named "features/test.feature" with:
32
+ """
33
+ Feature: test
34
+ Scenario:
35
+ Given this step fails
36
+ """
37
+ And the standard step definitions
38
+ When I run `cucumber --dry-run --strict`
39
+ Then it should pass with exactly:
40
+ """
41
+ Feature: test
42
+
43
+ Scenario: # features/test.feature:2
44
+ Given this step fails # features/step_definitions/steps.rb:4
45
+
46
+ 1 scenario (1 skipped)
47
+ 1 step (1 skipped)
48
+ 0m0.012s
49
+
50
+ """
51
+
52
+ Scenario: In strict mode with an undefined step
53
+ Given a file named "features/test.feature" with:
54
+ """
55
+ Feature: test
56
+ Scenario:
57
+ Given this step is undefined
58
+ """
59
+ When I run `cucumber --dry-run --strict`
60
+ Then it should fail with:
61
+ """
62
+ Feature: test
63
+
64
+ Scenario: # features/test.feature:2
65
+ Given this step is undefined # features/test.feature:3
66
+ Undefined step: "this step is undefined" (Cucumber::Undefined)
67
+ features/test.feature:3:in `Given this step is undefined'
68
+
69
+ 1 scenario (1 undefined)
70
+ 1 step (1 undefined)
71
+ 0m0.012s
72
+
73
+ """
@@ -0,0 +1,18 @@
1
+ Feature: Excluding ruby and feature files from runs
2
+
3
+ Developers are able to easily exclude files from cucumber runs
4
+ This is a nice feature to have in conjunction with profiles, so you can exclude
5
+ certain environment files from certain runs.
6
+
7
+ Scenario: exclude ruby files
8
+ Given an empty file named "features/support/dont_require_me.rb"
9
+ And an empty file named "features/step_definitions/fooz.rb"
10
+ And an empty file named "features/step_definitions/foof.rb"
11
+ And an empty file named "features/step_definitions/foot.rb"
12
+ And an empty file named "features/support/require_me.rb"
13
+ When I run `cucumber features -q --verbose --exclude features/support/dont --exclude foo[zf]`
14
+ Then "features/support/require_me.rb" should be required
15
+ And "features/step_definitions/foot.rb" should be required
16
+ And "features/support/dont_require_me.rb" should not be required
17
+ And "features/step_definitions/foof.rb" should not be required
18
+ And "features/step_definitions/fooz.rb" should not be required
@@ -0,0 +1,117 @@
1
+ Feature: Tag logic
2
+ In order to conveniently run subsets of features
3
+ As a Cuker
4
+ I want to select features using logical AND/OR of tags
5
+
6
+ Background:
7
+ Given a file named "features/test.feature" with:
8
+ """
9
+ @feature
10
+ Feature: Sample
11
+
12
+ @one @three
13
+ Scenario: Example
14
+ Given passing
15
+
16
+ @one
17
+ Scenario: Another Example
18
+ Given passing
19
+
20
+ @three
21
+ Scenario: Yet another Example
22
+ Given passing
23
+
24
+ @ignore
25
+ Scenario: And yet another Example
26
+ """
27
+
28
+ Scenario: ANDing tags
29
+ When I run `cucumber -q -t @one -t @three features/test.feature`
30
+ Then it should pass with:
31
+ """
32
+ @feature
33
+ Feature: Sample
34
+
35
+ @one @three
36
+ Scenario: Example
37
+ Given passing
38
+
39
+ 1 scenario (1 undefined)
40
+ 1 step (1 undefined)
41
+
42
+ """
43
+
44
+ Scenario: ORing tags
45
+ When I run `cucumber -q -t @one,@three features/test.feature`
46
+ Then it should pass with:
47
+ """
48
+ @feature
49
+ Feature: Sample
50
+
51
+ @one @three
52
+ Scenario: Example
53
+ Given passing
54
+
55
+ @one
56
+ Scenario: Another Example
57
+ Given passing
58
+
59
+ @three
60
+ Scenario: Yet another Example
61
+ Given passing
62
+
63
+ 3 scenarios (3 undefined)
64
+ 3 steps (3 undefined)
65
+
66
+ """
67
+
68
+ Scenario: Negative tags
69
+ When I run `cucumber -q -t ~@three features/test.feature`
70
+ Then it should pass with:
71
+ """
72
+ @feature
73
+ Feature: Sample
74
+
75
+ @one
76
+ Scenario: Another Example
77
+ Given passing
78
+
79
+ @ignore
80
+ Scenario: And yet another Example
81
+
82
+ 2 scenarios (1 undefined, 1 passed)
83
+ 1 step (1 undefined)
84
+ """
85
+
86
+ Scenario: Run with limited tag count, blowing it on scenario
87
+ When I run `cucumber -q --no-source --tags @one:1 features/test.feature`
88
+ Then it fails before running features with:
89
+ """
90
+ @one occurred 2 times, but the limit was set to 1
91
+ features/test.feature:5
92
+ features/test.feature:9
93
+ """
94
+
95
+ Scenario: Run with limited tag count, blowing it via feature inheritance
96
+ When I run `cucumber -q --no-source --tags @feature:1 features/test.feature`
97
+ Then it fails before running features with:
98
+ """
99
+ @feature occurred 4 times, but the limit was set to 1
100
+ features/test.feature:5
101
+ features/test.feature:9
102
+ features/test.feature:13
103
+ features/test.feature:17
104
+ """
105
+
106
+ Scenario: Run with limited tag count using negative tag, blowing it via a tag that is not run
107
+ When I run `cucumber -q --no-source --tags ~@one:1 features/test.feature`
108
+ Then it fails before running features with:
109
+ """
110
+ @one occurred 2 times, but the limit was set to 1
111
+ """
112
+
113
+ Scenario: Limiting with tags which do not exist in the features
114
+ Originally added to check [Lighthouse bug #464](https://rspec.lighthouseapp.com/projects/16211/tickets/464).
115
+
116
+ When I run `cucumber -q -t @i_dont_exist features/test.feature`
117
+ Then it should pass
@@ -0,0 +1,46 @@
1
+ Feature: Randomize
2
+
3
+ Use the `--order random` switch to run scenarios in random order.
4
+
5
+ This is especially helpful for detecting situations where you have state
6
+ leaking between scenarios, which can cause flickering or fragile tests.
7
+
8
+ If you do find a randmon run that exposes dependencies between your tests,
9
+ you can reproduce that run by using the seed that's printed at the end of
10
+ the test run.
11
+
12
+ Background:
13
+ Given a file named "features/bad_practice.feature" with:
14
+ """
15
+ Feature: Bad practice
16
+
17
+ Scenario: Set state
18
+ Given I set some state
19
+
20
+ Scenario: Depend on state
21
+ When I depend on the state
22
+ """
23
+ And a file named "features/step_definitions/steps.rb" with:
24
+ """
25
+ Given(/^I set some state$/) do
26
+ $global_state = "set"
27
+ end
28
+
29
+ Given(/^I depend on the state$/) do
30
+ raise "I expect the state to be set!" unless $global_state == "set"
31
+ end
32
+ """
33
+
34
+ Scenario: Run scenarios in order
35
+ When I run `cucumber`
36
+ Then it should pass
37
+
38
+ @spawn
39
+ Scenario: Run scenarios randomized
40
+ When I run `cucumber --order random:41515`
41
+ Then it should fail
42
+ And the stdout should contain:
43
+ """
44
+ Randomized with seed 41515
45
+ """
46
+
@@ -0,0 +1,27 @@
1
+ Feature: Requiring extra step files
2
+
3
+ Cucumber allows you to require extra files using the `-r` option.
4
+
5
+ Scenario:
6
+ Given a file named "features/test.feature" with:
7
+ """
8
+ Feature: Sample
9
+ Scenario: Sample
10
+ Given found in extra file
11
+ """
12
+ And a file named "tmp/extras.rb" with:
13
+ """
14
+ Given(/^found in extra file$/) { }
15
+ """
16
+ When I run `cucumber -q -r tmp/extras.rb features/test.feature`
17
+ Then it should pass with:
18
+ """
19
+ Feature: Sample
20
+
21
+ Scenario: Sample
22
+ Given found in extra file
23
+
24
+ 1 scenario (1 passed)
25
+ 1 step (1 passed)
26
+ """
27
+
@@ -0,0 +1,104 @@
1
+ Feature: Run feature elements matching a name with --name/-n
2
+
3
+ The `--name NAME` option runs only scenarios which match a certain
4
+ name. The NAME can be a substring of the names of Features, Scenarios,
5
+ Scenario Outlines or Example blocks.
6
+
7
+ Background:
8
+ Given a file named "features/first.feature" with:
9
+ """
10
+ Feature: first feature
11
+ Scenario: foo first
12
+ Given missing
13
+ Scenario: bar first
14
+ Given missing
15
+ """
16
+ Given a file named "features/second.feature" with:
17
+ """
18
+ Feature: second
19
+ Scenario: foo second
20
+ Given missing
21
+ Scenario: bar second
22
+ Given missing
23
+ """
24
+ Given a file named "features/outline.feature" with:
25
+ """
26
+ Feature: outline
27
+ Scenario Outline: baz outline
28
+ Given outline step <name>
29
+
30
+ Examples: quux example
31
+ | name |
32
+ | a |
33
+ | b |
34
+ """
35
+
36
+ Scenario: Matching Feature names
37
+ When I run `cucumber -q --name feature`
38
+ Then it should pass with:
39
+ """
40
+ Feature: first feature
41
+
42
+ Scenario: foo first
43
+ Given missing
44
+
45
+ Scenario: bar first
46
+ Given missing
47
+
48
+ 2 scenarios (2 undefined)
49
+ 2 steps (2 undefined)
50
+ """
51
+
52
+ Scenario: Matching Scenario names
53
+ When I run `cucumber -q --name foo`
54
+ Then it should pass with:
55
+ """
56
+ Feature: first feature
57
+
58
+ Scenario: foo first
59
+ Given missing
60
+
61
+ Feature: second
62
+
63
+ Scenario: foo second
64
+ Given missing
65
+
66
+ 2 scenarios (2 undefined)
67
+ 2 steps (2 undefined)
68
+ """
69
+
70
+ Scenario: Matching Scenario Outline names
71
+ When I run `cucumber -q --name baz`
72
+ Then it should pass with:
73
+ """
74
+ Feature: outline
75
+
76
+ Scenario Outline: baz outline
77
+ Given outline step <name>
78
+
79
+ Examples: quux example
80
+ | name |
81
+ | a |
82
+ | b |
83
+
84
+ 2 scenarios (2 undefined)
85
+ 2 steps (2 undefined)
86
+ """
87
+
88
+ Scenario: Matching Example block names
89
+ When I run `cucumber -q --name quux`
90
+ Then it should pass with:
91
+ """
92
+ Feature: outline
93
+
94
+ Scenario Outline: baz outline
95
+ Given outline step <name>
96
+
97
+ Examples: quux example
98
+ | name |
99
+ | a |
100
+ | b |
101
+
102
+ 2 scenarios (2 undefined)
103
+ 2 steps (2 undefined)
104
+ """