cucumber 1.3.20 → 2.0.0.beta.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (404) hide show
  1. checksums.yaml +7 -0
  2. data/.coveralls.yml +1 -0
  3. data/.rspec +1 -1
  4. data/.travis.yml +1 -2
  5. data/CONTRIBUTING.md +9 -0
  6. data/Gemfile +9 -2
  7. data/History.md +26 -17
  8. data/LICENSE +2 -2
  9. data/README.md +4 -4
  10. data/Rakefile +12 -0
  11. data/bin/cucumber +1 -5
  12. data/bin/cuke +60 -0
  13. data/cucumber.gemspec +10 -15
  14. data/cucumber.yml +14 -26
  15. data/examples/i18n/ar/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  16. data/examples/i18n/bg/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  17. data/examples/i18n/ca/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  18. data/examples/i18n/cs/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  19. data/examples/i18n/da/features/{step_definitons → step_definitions}/lommeregner_steps.rb +0 -0
  20. data/examples/i18n/de/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  21. data/examples/{ramaze → i18n/el}/Rakefile +1 -1
  22. data/examples/i18n/el/features/addition.feature +17 -0
  23. data/examples/i18n/el/features/division.feature +10 -0
  24. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +24 -0
  25. data/examples/i18n/el/lib/calculator.rb +14 -0
  26. data/examples/i18n/en/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  27. data/examples/i18n/eo/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  28. data/examples/i18n/es/features/{step_definitons → step_definitions}/calculador_steps.rb +0 -0
  29. data/examples/i18n/fi/features/{step_definitons → step_definitions}/laskin_steps.rb +0 -0
  30. data/examples/i18n/fr/Rakefile +3 -1
  31. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +2 -2
  32. data/examples/i18n/he/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  33. data/examples/i18n/hi/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  34. data/examples/i18n/hu/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  35. data/examples/i18n/id/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  36. data/examples/i18n/it/features/{step_definitons → step_definitions}/calcolatrice_steps.rb +0 -0
  37. data/examples/i18n/ja/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  38. data/examples/i18n/ko/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  39. data/examples/i18n/lt/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  40. data/examples/i18n/lv/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  41. data/examples/i18n/no/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
  42. data/examples/i18n/pl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  43. data/examples/i18n/ro/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  44. data/examples/i18n/ru/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  45. data/examples/i18n/sk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  46. data/examples/i18n/sr-Cyrl/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  47. data/examples/i18n/sr-Latn/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  48. data/examples/i18n/sv/features/{step_definitons → step_definitions}/kalkulator_steps.rb +0 -0
  49. data/examples/i18n/tr/features/{step_definitons → step_definitions}/hesap_makinesi_adimlari.rb +0 -0
  50. data/examples/i18n/uk/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  51. data/examples/i18n/uz/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  52. data/examples/i18n/zh-CN/features/{step_definitons → step_definitions}/calculator_steps.rb +4 -4
  53. data/examples/i18n/zh-TW/features/{step_definitons → step_definitions}/calculator_steps.rb +0 -0
  54. data/{legacy_features → features/docs}/api/list_step_defs_as_json.feature +14 -14
  55. data/{legacy_features → features/docs}/api/run_cli_main_with_existing_runtime.feature +5 -10
  56. data/features/{backtraces.feature → docs/cli/backtraces.feature} +2 -2
  57. data/features/docs/cli/dry_run.feature +25 -0
  58. data/features/docs/cli/exclude_files.feature +19 -0
  59. data/features/docs/cli/execute_with_tag_filter.feature +117 -0
  60. data/features/docs/cli/randomize.feature +46 -0
  61. data/features/docs/cli/require.feature +27 -0
  62. data/features/docs/cli/run_scenarios_matching_name.feature +104 -0
  63. data/features/docs/cli/run_specific_scenarios.feature +113 -0
  64. data/features/docs/cli/showing_differences.feature +43 -0
  65. data/features/docs/cli/specifying_multiple_formatters.feature +44 -0
  66. data/features/docs/cli/strict_mode.feature +41 -0
  67. data/features/{nested_steps.feature → docs/defining_steps/nested_steps.feature} +3 -5
  68. data/features/{nested_steps_i18n.feature → docs/defining_steps/nested_steps_i18n.feature} +0 -2
  69. data/features/{nested_steps_with_second_arg.feature → docs/defining_steps/nested_steps_with_second_arg.feature} +0 -0
  70. data/features/{step_definitions.feature → docs/defining_steps/one_line_step_definitions.feature} +3 -3
  71. data/features/docs/defining_steps/printing_messages.feature +147 -0
  72. data/features/docs/defining_steps/skip_scenario.feature +33 -0
  73. data/features/docs/defining_steps/snippets.feature +41 -0
  74. data/{legacy_features → features/docs/defining_steps}/table_diffing.feature +15 -15
  75. data/features/{transforms.feature → docs/defining_steps/transforms.feature} +2 -2
  76. data/{legacy_features/exception_in_after_block.feature → features/docs/exception_in_after_hook.feature} +25 -26
  77. data/{legacy_features/exception_in_after_step_block.feature → features/docs/exception_in_after_step_hook.feature} +21 -24
  78. data/{legacy_features/exception_in_before_block.feature → features/docs/exception_in_before_hook.feature} +18 -20
  79. data/features/{custom_formatter.feature → docs/extending_cucumber/custom_formatter.feature} +3 -8
  80. data/features/{formatter_callbacks.feature → docs/extending_cucumber/formatter_callbacks.feature} +185 -4
  81. data/{legacy_features/listener_debugger_formatter.feature → features/docs/formatters/debug_formatter.feature} +13 -15
  82. data/features/{formatter_step_file_colon_line.feature → docs/formatters/formatter_step_file_colon_line.feature} +2 -4
  83. data/features/{html_formatter.feature → docs/formatters/html_formatter.feature} +10 -14
  84. data/features/{json_formatter.feature → docs/formatters/json_formatter.feature} +109 -247
  85. data/features/docs/formatters/junit_formatter.feature +275 -0
  86. data/features/{pretty_formatter.feature → docs/formatters/pretty_formatter.feature} +1 -1
  87. data/features/{progress_formatter.feature → docs/formatters/progress_formatter.feature} +1 -1
  88. data/features/docs/formatters/rerun_formatter.feature +135 -0
  89. data/features/docs/formatters/usage_formatter.feature +102 -0
  90. data/features/docs/getting_started.feature +27 -0
  91. data/features/{background.feature → docs/gherkin/background.feature} +149 -91
  92. data/features/{doc_strings.feature → docs/gherkin/doc_strings.feature} +1 -0
  93. data/features/docs/gherkin/expand_option_for_outlines.feature +46 -0
  94. data/features/docs/gherkin/language_from_header.feature +32 -0
  95. data/features/docs/gherkin/outlines.feature +154 -0
  96. data/features/docs/gherkin/unicode_table.feature +32 -0
  97. data/features/docs/gherkin/using_descriptions.feature +88 -0
  98. data/features/docs/gherkin/using_star_notation.feature +37 -0
  99. data/features/{iso-8859-1.feature → docs/iso-8859-1.feature} +0 -0
  100. data/{legacy_features → features/docs}/post_configuration_hook.feature +17 -18
  101. data/{legacy_features → features/docs}/profiles.feature +30 -36
  102. data/{legacy_features → features/docs}/rake_task.feature +30 -41
  103. data/features/{raketask.feature → docs/raketask.feature} +6 -13
  104. data/features/docs/report_called_undefined_steps.feature +57 -0
  105. data/{legacy_features → features/docs}/wire_protocol.feature +36 -31
  106. data/{legacy_features → features/docs}/wire_protocol_erb.feature +5 -6
  107. data/{legacy_features → features/docs}/wire_protocol_table_diffing.feature +14 -12
  108. data/{legacy_features → features/docs}/wire_protocol_tags.feature +6 -7
  109. data/{legacy_features → features/docs}/wire_protocol_timeouts.feature +6 -6
  110. data/{legacy_features → features/docs}/work_in_progress.feature +52 -54
  111. data/{legacy_features → features/docs/writing_support_code}/around_hooks.feature +25 -28
  112. data/features/docs/writing_support_code/before_hook.feature +61 -0
  113. data/features/docs/writing_support_code/hook_order.feature +61 -0
  114. data/features/{load_path.feature → docs/writing_support_code/load_path.feature} +3 -0
  115. data/features/docs/writing_support_code/state.feature +32 -0
  116. data/features/{tagged_hooks.feature → docs/writing_support_code/tagged_hooks.feature} +11 -13
  117. data/features/lib/step_definitions/aruba_steps.rb +22 -0
  118. data/features/lib/step_definitions/cucumber_steps.rb +50 -0
  119. data/features/{step_definitions → lib/step_definitions}/iso-8859-1_steps.rb +3 -15
  120. data/features/lib/step_definitions/json_steps.rb +7 -0
  121. data/features/lib/step_definitions/junit_steps.rb +13 -0
  122. data/features/lib/step_definitions/language_steps.rb +4 -5
  123. data/features/lib/step_definitions/profile_steps.rb +15 -0
  124. data/features/lib/step_definitions/ruby_steps.rb +3 -0
  125. data/{legacy_features → features/lib}/step_definitions/wire_steps.rb +16 -9
  126. data/features/lib/support/env.rb +21 -0
  127. data/{legacy_features → features/lib}/support/fake_wire_server.rb +0 -0
  128. data/features/{support → lib/support}/feature_factory.rb +1 -1
  129. data/features/lib/support/normalise_output.rb +33 -0
  130. data/gem_tasks/cov.rake +5 -0
  131. data/gem_tasks/cucumber.rake +1 -10
  132. data/gem_tasks/rspec.rake +0 -2
  133. data/gem_tasks/yard.rake +4 -1
  134. data/lib/cucumber.rb +1 -3
  135. data/lib/cucumber/cli/configuration.rb +30 -25
  136. data/lib/cucumber/cli/main.rb +13 -25
  137. data/lib/cucumber/cli/options.rb +15 -57
  138. data/lib/cucumber/configuration.rb +4 -0
  139. data/lib/cucumber/constantize.rb +7 -6
  140. data/lib/cucumber/core_ext/instance_exec.rb +7 -38
  141. data/lib/cucumber/core_ext/proc.rb +1 -1
  142. data/lib/cucumber/errors.rb +3 -1
  143. data/lib/cucumber/file_specs.rb +35 -0
  144. data/lib/cucumber/formatter/console.rb +32 -21
  145. data/lib/cucumber/formatter/debug.rb +5 -0
  146. data/lib/cucumber/formatter/gherkin_formatter_adapter.rb +8 -38
  147. data/lib/cucumber/formatter/html.rb +29 -21
  148. data/lib/cucumber/formatter/junit.rb +10 -7
  149. data/lib/cucumber/formatter/pretty.rb +2 -8
  150. data/lib/cucumber/formatter/rerun.rb +2 -3
  151. data/lib/cucumber/formatter/unicode.rb +8 -21
  152. data/lib/cucumber/formatter/usage.rb +65 -2
  153. data/lib/cucumber/language_support/language_methods.rb +1 -1
  154. data/lib/cucumber/mappings.rb +212 -0
  155. data/lib/cucumber/multiline_argument.rb +115 -0
  156. data/lib/cucumber/platform.rb +21 -22
  157. data/lib/cucumber/rake/task.rb +3 -54
  158. data/lib/cucumber/rb_support/rb_language.rb +2 -5
  159. data/lib/cucumber/rb_support/rb_world.rb +14 -19
  160. data/lib/cucumber/rb_support/snippet.rb +60 -19
  161. data/lib/cucumber/reports/legacy_formatter.rb +1279 -0
  162. data/lib/cucumber/runtime.rb +176 -26
  163. data/lib/cucumber/runtime/for_programming_languages.rb +10 -4
  164. data/lib/cucumber/runtime/gated_receiver.rb +21 -0
  165. data/lib/cucumber/runtime/support_code.rb +9 -7
  166. data/lib/cucumber/runtime/tag_limits.rb +15 -0
  167. data/lib/cucumber/runtime/tag_limits/filter.rb +31 -0
  168. data/lib/cucumber/runtime/tag_limits/test_case_index.rb +29 -0
  169. data/lib/cucumber/runtime/tag_limits/verifier.rb +57 -0
  170. data/lib/cucumber/runtime/user_interface.rb +4 -0
  171. data/lib/cucumber/step_match.rb +3 -3
  172. data/lib/cucumber/term/ansicolor.rb +1 -9
  173. data/lib/cucumber/wire_support/wire_language.rb +23 -9
  174. data/lib/cucumber/wire_support/wire_packet.rb +1 -1
  175. data/lib/cucumber/wire_support/wire_protocol/requests.rb +13 -5
  176. data/lib/cucumber/wire_support/wire_step_definition.rb +1 -8
  177. data/spec/cucumber/cli/configuration_spec.rb +151 -150
  178. data/spec/cucumber/cli/main_spec.rb +36 -99
  179. data/spec/cucumber/cli/options_spec.rb +238 -272
  180. data/spec/cucumber/cli/profile_loader_spec.rb +9 -8
  181. data/spec/cucumber/configuration_spec.rb +3 -3
  182. data/spec/cucumber/constantize_spec.rb +2 -1
  183. data/spec/cucumber/core_ext/proc_spec.rb +32 -43
  184. data/spec/cucumber/file_specs_spec.rb +41 -0
  185. data/spec/cucumber/formatter/ansicolor_spec.rb +11 -10
  186. data/spec/cucumber/formatter/debug_spec.rb +569 -0
  187. data/spec/cucumber/formatter/duration_spec.rb +6 -6
  188. data/spec/cucumber/formatter/html_spec.rb +53 -62
  189. data/spec/cucumber/formatter/interceptor_spec.rb +38 -31
  190. data/spec/cucumber/formatter/junit_spec.rb +34 -28
  191. data/spec/cucumber/formatter/pretty_spec.rb +238 -52
  192. data/spec/cucumber/formatter/progress_spec.rb +2 -2
  193. data/spec/cucumber/formatter/spec_helper.rb +23 -17
  194. data/spec/cucumber/rake/forked_spec.rb +13 -22
  195. data/spec/cucumber/rb_support/rb_language_spec.rb +76 -67
  196. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +63 -42
  197. data/spec/cucumber/rb_support/rb_transform_spec.rb +4 -3
  198. data/spec/cucumber/rb_support/regexp_argument_matcher_spec.rb +6 -4
  199. data/spec/cucumber/rb_support/snippet_spec.rb +42 -33
  200. data/spec/cucumber/reports/legacy_formatter_spec.rb +1750 -0
  201. data/spec/cucumber/runtime/for_programming_languages_spec.rb +11 -10
  202. data/spec/cucumber/runtime/gated_receiver_spec.rb +47 -0
  203. data/spec/cucumber/runtime/results_spec.rb +33 -26
  204. data/spec/cucumber/runtime/support_code_spec.rb +29 -29
  205. data/spec/cucumber/runtime/tag_limits/filter_spec.rb +59 -0
  206. data/spec/cucumber/runtime/tag_limits/test_case_index_spec.rb +38 -0
  207. data/spec/cucumber/runtime/tag_limits/verifier_spec.rb +57 -0
  208. data/spec/cucumber/runtime_spec.rb +39 -34
  209. data/spec/cucumber/step_match_spec.rb +30 -20
  210. data/spec/cucumber/wire_support/configuration_spec.rb +8 -5
  211. data/spec/cucumber/wire_support/connection_spec.rb +12 -8
  212. data/spec/cucumber/wire_support/wire_exception_spec.rb +14 -8
  213. data/spec/cucumber/wire_support/wire_language_spec.rb +8 -9
  214. data/spec/cucumber/wire_support/wire_packet_spec.rb +17 -13
  215. data/spec/cucumber/world/pending_spec.rb +36 -36
  216. data/spec/simplecov_setup.rb +18 -0
  217. data/spec/spec_helper.rb +3 -9
  218. metadata +298 -507
  219. data/.gitattributes +0 -1
  220. data/.ruby-version +0 -1
  221. data/examples/python/README.textile +0 -8
  222. data/examples/python/Rakefile +0 -4
  223. data/examples/python/features/fibonacci.feature +0 -19
  224. data/examples/python/features/step_definitions/fib_steps.py +0 -11
  225. data/examples/python/lib/fib.py +0 -7
  226. data/examples/ramaze/README.textile +0 -7
  227. data/examples/ramaze/app.rb +0 -21
  228. data/examples/ramaze/features/add.feature +0 -11
  229. data/examples/ramaze/features/step_definitions/add_steps.rb +0 -15
  230. data/examples/ramaze/features/support/env.rb +0 -32
  231. data/examples/ramaze/layout/default.html.erb +0 -8
  232. data/examples/ramaze/view/index.html.erb +0 -5
  233. data/examples/ruby2python/README.textile +0 -8
  234. data/examples/ruby2python/Rakefile +0 -4
  235. data/examples/ruby2python/features/fibonacci.feature +0 -19
  236. data/examples/ruby2python/features/step_definitions/fib_steps.rb +0 -7
  237. data/examples/ruby2python/features/support/env.rb +0 -21
  238. data/examples/ruby2python/lib/fib.py +0 -7
  239. data/examples/v8/Rakefile +0 -6
  240. data/examples/v8/features/fibonacci.feature +0 -43
  241. data/examples/v8/features/step_definitions/fib_steps.js +0 -49
  242. data/examples/v8/features/support/env.js +0 -14
  243. data/examples/v8/lib/fibonacci.js +0 -19
  244. data/features/.cucumber/stepdefs.json +0 -722
  245. data/features/assertions.feature +0 -73
  246. data/features/autoformat_profile_output.feature +0 -23
  247. data/features/before_hook.feature +0 -43
  248. data/features/bootstrap.feature +0 -26
  249. data/features/drb_server_integration.feature +0 -63
  250. data/features/execute_with_tag_filter.feature +0 -63
  251. data/features/parsing.feature +0 -18
  252. data/features/rerun_formatter.feature +0 -99
  253. data/features/run_specific_scenarios.feature +0 -47
  254. data/features/stats_formatters.feature +0 -73
  255. data/features/step_definitions/cucumber-features/cucumber_ruby_mappings.rb +0 -197
  256. data/features/step_definitions/cucumber_steps.rb +0 -57
  257. data/features/step_definitions/drb_steps.rb +0 -3
  258. data/features/support/env.rb +0 -57
  259. data/fixtures/json/features/background.feature +0 -7
  260. data/fixtures/json/features/embed.feature +0 -4
  261. data/fixtures/json/features/one_passing_one_failing.feature +0 -11
  262. data/fixtures/json/features/step_definitions/steps.rb +0 -32
  263. data/fixtures/json/features/tables.feature +0 -13
  264. data/fixtures/junit/features/one_passing_one_failing.feature +0 -8
  265. data/fixtures/junit/features/pending.feature +0 -7
  266. data/fixtures/junit/features/scenario_outline.feature +0 -9
  267. data/fixtures/junit/features/some_subdirectory/one_passing_one_failing.feature +0 -8
  268. data/fixtures/junit/features/step_definitions/steps.rb +0 -11
  269. data/fixtures/self_test/README.textile +0 -6
  270. data/fixtures/self_test/Rakefile +0 -6
  271. data/fixtures/self_test/features/call_undefined_step_from_step_def.feature +0 -7
  272. data/fixtures/self_test/features/failing_expectation.feature +0 -4
  273. data/fixtures/self_test/features/lots_of_undefined.feature +0 -8
  274. data/fixtures/self_test/features/multiline_name.feature +0 -27
  275. data/fixtures/self_test/features/outline_sample.feature +0 -15
  276. data/fixtures/self_test/features/sample.feature +0 -21
  277. data/fixtures/self_test/features/search_sample.feature +0 -32
  278. data/fixtures/self_test/features/step_definitions/sample_steps.rb +0 -84
  279. data/fixtures/self_test/features/support/bubble_256x256.png +0 -0
  280. data/fixtures/self_test/features/support/env.rb +0 -26
  281. data/fixtures/self_test/features/tags_sample.feature +0 -17
  282. data/fixtures/self_test/features/tons_of_cukes.feature +0 -52
  283. data/fixtures/self_test/features/undefined_multiline_args.feature +0 -12
  284. data/fixtures/self_test/list-of-features.txt +0 -1
  285. data/fixtures/steps_library/features/step_definitions/steps_lib1.rb +0 -8
  286. data/fixtures/steps_library/features/step_definitions/steps_lib2.rb +0 -8
  287. data/fixtures/tickets/Rakefile +0 -20
  288. data/fixtures/tickets/features.html +0 -138
  289. data/fixtures/tickets/features/172.feature +0 -28
  290. data/fixtures/tickets/features/177/1.feature +0 -28
  291. data/fixtures/tickets/features/177/2.feature +0 -20
  292. data/fixtures/tickets/features/177/3.feature +0 -18
  293. data/fixtures/tickets/features/180.feature +0 -7
  294. data/fixtures/tickets/features/229/tagged_hooks.feature +0 -8
  295. data/fixtures/tickets/features/229/tagged_hooks.rb +0 -14
  296. data/fixtures/tickets/features/236.feature +0 -13
  297. data/fixtures/tickets/features/241.feature +0 -12
  298. data/fixtures/tickets/features/246.feature +0 -4
  299. data/fixtures/tickets/features/248.feature +0 -11
  300. data/fixtures/tickets/features/270/back.feature +0 -14
  301. data/fixtures/tickets/features/270/back.steps.rb +0 -14
  302. data/fixtures/tickets/features/272/hooks.feature +0 -26
  303. data/fixtures/tickets/features/272/hooks_steps.rb +0 -53
  304. data/fixtures/tickets/features/279/py_string_indent.feature +0 -25
  305. data/fixtures/tickets/features/279/py_string_indent.steps.rb +0 -12
  306. data/fixtures/tickets/features/279/wrong.feature_ +0 -11
  307. data/fixtures/tickets/features/301/filter_background_tagged_hooks.feature +0 -6
  308. data/fixtures/tickets/features/301/filter_background_tagged_hooks_steps.rb +0 -12
  309. data/fixtures/tickets/features/306/only_background.feature +0 -4
  310. data/fixtures/tickets/features/around_timeout.feature +0 -6
  311. data/fixtures/tickets/features/gherkin_67.feature +0 -12
  312. data/fixtures/tickets/features/gherkin_68.feature +0 -4
  313. data/fixtures/tickets/features/half_manual.feature +0 -11
  314. data/fixtures/tickets/features/lib/eatting_machine.rb +0 -18
  315. data/fixtures/tickets/features/lib/pantry.rb +0 -20
  316. data/fixtures/tickets/features/scenario_outline.feature +0 -95
  317. data/fixtures/tickets/features/step_definitons/246_steps.rb +0 -3
  318. data/fixtures/tickets/features/step_definitons/248_steps.rb +0 -15
  319. data/fixtures/tickets/features/step_definitons/around_timeout_steps.rb +0 -9
  320. data/fixtures/tickets/features/step_definitons/half_manual_steps.rb +0 -11
  321. data/fixtures/tickets/features/step_definitons/scenario_outline_steps.rb +0 -42
  322. data/fixtures/tickets/features/step_definitons/tickets_steps.rb +0 -88
  323. data/fixtures/tickets/features/table_diffing.feature +0 -13
  324. data/fixtures/tickets/features/tickets.feature +0 -28
  325. data/legacy_features/README.md +0 -14
  326. data/legacy_features/announce.feature +0 -152
  327. data/legacy_features/bug_371.feature +0 -32
  328. data/legacy_features/bug_464.feature +0 -16
  329. data/legacy_features/bug_475.feature +0 -42
  330. data/legacy_features/bug_585_tab_indentation.feature +0 -22
  331. data/legacy_features/bug_600.feature +0 -73
  332. data/legacy_features/cucumber_cli.feature +0 -584
  333. data/legacy_features/cucumber_cli_outlines.feature +0 -117
  334. data/legacy_features/default_snippets.feature +0 -43
  335. data/legacy_features/diffing.feature +0 -25
  336. data/legacy_features/drb_server_integration.feature +0 -174
  337. data/legacy_features/exclude_files.feature +0 -20
  338. data/legacy_features/expand.feature +0 -60
  339. data/legacy_features/junit_formatter.feature +0 -214
  340. data/legacy_features/language_from_header.feature +0 -30
  341. data/legacy_features/multiline_names.feature +0 -44
  342. data/legacy_features/report_called_undefined_steps.feature +0 -35
  343. data/legacy_features/rerun_formatter.feature +0 -52
  344. data/legacy_features/simplest.feature +0 -11
  345. data/legacy_features/snippet.feature +0 -23
  346. data/legacy_features/snippets_when_using_star_keyword.feature +0 -38
  347. data/legacy_features/step_definitions/cucumber_steps.rb +0 -179
  348. data/legacy_features/step_definitions/extra_steps.rb +0 -2
  349. data/legacy_features/step_definitions/simplest_steps.rb +0 -3
  350. data/legacy_features/support/env.rb +0 -161
  351. data/legacy_features/support/env.rb.simplest +0 -7
  352. data/legacy_features/table_mapping.feature +0 -34
  353. data/legacy_features/transform.feature +0 -245
  354. data/legacy_features/unicode_table.feature +0 -35
  355. data/lib/README.rdoc +0 -12
  356. data/lib/cucumber/ast.rb +0 -30
  357. data/lib/cucumber/ast/background.rb +0 -116
  358. data/lib/cucumber/ast/comment.rb +0 -31
  359. data/lib/cucumber/ast/doc_string.rb +0 -61
  360. data/lib/cucumber/ast/empty_background.rb +0 -33
  361. data/lib/cucumber/ast/examples.rb +0 -49
  362. data/lib/cucumber/ast/feature.rb +0 -99
  363. data/lib/cucumber/ast/features.rb +0 -38
  364. data/lib/cucumber/ast/has_steps.rb +0 -74
  365. data/lib/cucumber/ast/location.rb +0 -41
  366. data/lib/cucumber/ast/multiline_argument.rb +0 -30
  367. data/lib/cucumber/ast/names.rb +0 -13
  368. data/lib/cucumber/ast/outline_table.rb +0 -194
  369. data/lib/cucumber/ast/scenario.rb +0 -103
  370. data/lib/cucumber/ast/scenario_outline.rb +0 -146
  371. data/lib/cucumber/ast/step.rb +0 -122
  372. data/lib/cucumber/ast/step_collection.rb +0 -92
  373. data/lib/cucumber/ast/step_invocation.rb +0 -196
  374. data/lib/cucumber/ast/table.rb +0 -738
  375. data/lib/cucumber/ast/tags.rb +0 -28
  376. data/lib/cucumber/ast/tree_walker.rb +0 -191
  377. data/lib/cucumber/ast/visitor.rb +0 -11
  378. data/lib/cucumber/broadcaster.rb +0 -13
  379. data/lib/cucumber/cli/drb_client.rb +0 -43
  380. data/lib/cucumber/feature_file.rb +0 -101
  381. data/lib/cucumber/formatter/ordered_xml_markup.rb +0 -24
  382. data/lib/cucumber/js_support/js_dsl.js +0 -57
  383. data/lib/cucumber/js_support/js_language.rb +0 -185
  384. data/lib/cucumber/js_support/js_snippets.rb +0 -27
  385. data/lib/cucumber/parser.rb +0 -2
  386. data/lib/cucumber/parser/gherkin_builder.rb +0 -284
  387. data/lib/cucumber/py_support/py_dsl.py +0 -10
  388. data/lib/cucumber/py_support/py_language.py +0 -10
  389. data/lib/cucumber/py_support/py_language.rb +0 -80
  390. data/lib/cucumber/step_mother.rb +0 -10
  391. data/spec/cucumber/ast/background_spec.rb +0 -122
  392. data/spec/cucumber/ast/doc_string_spec.rb +0 -40
  393. data/spec/cucumber/ast/feature_factory.rb +0 -72
  394. data/spec/cucumber/ast/feature_spec.rb +0 -63
  395. data/spec/cucumber/ast/features_spec.rb +0 -51
  396. data/spec/cucumber/ast/outline_table_spec.rb +0 -21
  397. data/spec/cucumber/ast/scenario_outline_spec.rb +0 -74
  398. data/spec/cucumber/ast/step_spec.rb +0 -68
  399. data/spec/cucumber/ast/table_spec.rb +0 -594
  400. data/spec/cucumber/ast/tree_walker_spec.rb +0 -19
  401. data/spec/cucumber/broadcaster_spec.rb +0 -15
  402. data/spec/cucumber/cli/drb_client_spec.rb +0 -76
  403. data/spec/cucumber/rake/rcov_spec.rb +0 -71
  404. data/spec/cucumber/wire_support/wire_step_definition_spec.rb +0 -20
@@ -6,19 +6,14 @@ Feature: Custom Formatter
6
6
  Feature: I'll use my own
7
7
  because I'm worth it
8
8
  Scenario: just print me
9
- Given this step works
10
- """
11
- And a file named "features/step_definitions/steps.rb" with:
12
- """
13
- Given /^this step works$/ do
14
- end
9
+ Given this step passes
15
10
  """
11
+ And the standard step definitions
16
12
  And a file named "features/support/ze/formator.rb" with:
17
13
  """
18
14
  module Ze
19
15
  class Formator
20
- def initialize(step_mother, io, options)
21
- @step_mother = step_mother
16
+ def initialize(runtime, io, options)
22
17
  @io = io
23
18
  end
24
19
 
@@ -17,10 +17,8 @@ Feature: Formatter Callback
17
17
  """
18
18
  And a file named "features/step_definitions/steps.rb" with:
19
19
  """
20
- Given /^.+ step works$/ do
21
- end
22
- Then /^that|there$/ do
23
- end
20
+ Given(/^.+ step works$/) { }
21
+ Then(/^that|there$/) { }
24
22
  """
25
23
  When I run `cucumber features/f.feature --format debug`
26
24
  Then it should pass with exactly:
@@ -95,6 +93,7 @@ Feature: Formatter Callback
95
93
 
96
94
  """
97
95
 
96
+
98
97
  Scenario: callback if expanded
99
98
  Given a file named "features/f.feature" with:
100
99
  """
@@ -187,3 +186,185 @@ Feature: Formatter Callback
187
186
  after_features
188
187
 
189
188
  """
189
+
190
+ Scenario: callback with background if not expanded
191
+ Given a file named "features/f.feature" with:
192
+ """
193
+ Feature: I'll use my own
194
+ because I'm worth it
195
+ Background:
196
+ Given this step works
197
+ Scenario Outline: outline
198
+ Given <x> step works
199
+ Then <y>
200
+ Examples:
201
+ |x|y|
202
+ |this|that|
203
+ |here|there|
204
+ """
205
+ And a file named "features/step_definitions/steps.rb" with:
206
+ """
207
+ Given(/^.+ step works$/) { }
208
+ Then(/^that|there$/) { }
209
+ """
210
+ When I run `cucumber features/f.feature --format debug`
211
+ Then it should pass with exactly:
212
+ """
213
+ before_features
214
+ before_feature
215
+ before_tags
216
+ after_tags
217
+ feature_name
218
+ before_background
219
+ background_name
220
+ before_steps
221
+ before_step
222
+ before_step_result
223
+ step_name
224
+ after_step_result
225
+ after_step
226
+ after_steps
227
+ after_background
228
+ before_feature_element
229
+ before_tags
230
+ after_tags
231
+ scenario_name
232
+ before_steps
233
+ before_step
234
+ before_step_result
235
+ step_name
236
+ after_step_result
237
+ after_step
238
+ before_step
239
+ before_step_result
240
+ step_name
241
+ after_step_result
242
+ after_step
243
+ after_steps
244
+ before_examples_array
245
+ before_examples
246
+ examples_name
247
+ before_outline_table
248
+ before_table_row
249
+ before_table_cell
250
+ table_cell_value
251
+ after_table_cell
252
+ before_table_cell
253
+ table_cell_value
254
+ after_table_cell
255
+ after_table_row
256
+ before_table_row
257
+ before_table_cell
258
+ table_cell_value
259
+ after_table_cell
260
+ before_table_cell
261
+ table_cell_value
262
+ after_table_cell
263
+ after_table_row
264
+ before_table_row
265
+ before_table_cell
266
+ table_cell_value
267
+ after_table_cell
268
+ before_table_cell
269
+ table_cell_value
270
+ after_table_cell
271
+ after_table_row
272
+ after_outline_table
273
+ after_examples
274
+ after_examples_array
275
+ after_feature_element
276
+ after_feature
277
+ after_features
278
+
279
+ """
280
+
281
+ Scenario: callback with background if expanded
282
+ Given a file named "features/f.feature" with:
283
+ """
284
+ Feature: I'll use my own
285
+ because I'm worth it
286
+ Background:
287
+ Given this step works
288
+ Scenario Outline: outline
289
+ Given <x> step works
290
+ Then <y>
291
+ Examples:
292
+ |x|y|
293
+ |this|that|
294
+ |here|there|
295
+ """
296
+ And a file named "features/step_definitions/steps.rb" with:
297
+ """
298
+ Given /^.+ step works$/ do
299
+ end
300
+ Then /^that|there$/ do
301
+ end
302
+ """
303
+ When I run `cucumber features/f.feature --format debug --expand`
304
+ Then it should pass with exactly:
305
+ """
306
+ before_features
307
+ before_feature
308
+ before_tags
309
+ after_tags
310
+ feature_name
311
+ before_background
312
+ background_name
313
+ before_steps
314
+ before_step
315
+ before_step_result
316
+ step_name
317
+ after_step_result
318
+ after_step
319
+ after_steps
320
+ after_background
321
+ before_feature_element
322
+ before_tags
323
+ after_tags
324
+ scenario_name
325
+ before_steps
326
+ before_step
327
+ before_step_result
328
+ step_name
329
+ after_step_result
330
+ after_step
331
+ before_step
332
+ before_step_result
333
+ step_name
334
+ after_step_result
335
+ after_step
336
+ after_steps
337
+ before_examples_array
338
+ before_examples
339
+ examples_name
340
+ before_outline_table
341
+ scenario_name
342
+ before_step
343
+ before_step_result
344
+ step_name
345
+ after_step_result
346
+ after_step
347
+ before_step
348
+ before_step_result
349
+ step_name
350
+ after_step_result
351
+ after_step
352
+ scenario_name
353
+ before_step
354
+ before_step_result
355
+ step_name
356
+ after_step_result
357
+ after_step
358
+ before_step
359
+ before_step_result
360
+ step_name
361
+ after_step_result
362
+ after_step
363
+ after_outline_table
364
+ after_examples
365
+ after_examples_array
366
+ after_feature_element
367
+ after_feature
368
+ after_features
369
+
370
+ """
@@ -1,23 +1,22 @@
1
- Feature: Listener Debugger
2
- In order to easily visualise the listener API
3
- As a developer
4
- I want a formatter that prints the calls to the listener as a feature is run
1
+ Feature: Debug formatter
2
+
3
+ In order to help you easily visualise the listener API, you can use
4
+ the `debug` formatter that prints the calls to the listener as a
5
+ feature is run.
5
6
 
6
7
  Background:
7
- Given a standard Cucumber project directory structure
8
+ Given the standard step definitions
8
9
 
9
10
  Scenario: title
10
- Given a file named "features/sample.feature" with:
11
+ Given a file named "features/test.feature" with:
11
12
  """
12
- Feature: Sample
13
-
14
- Scenario: Sample
15
- Given Sample
16
-
13
+ Feature:
14
+ Scenario:
15
+ Given this step passes
17
16
  """
18
- When I run cucumber -f debug features/sample.feature
19
- Then STDERR should be empty
20
- Then it should pass with
17
+ When I run `cucumber -f debug`
18
+ Then the stderr should not contain anything
19
+ Then it should pass with:
21
20
  """
22
21
  before_features
23
22
  before_feature
@@ -38,5 +37,4 @@ Feature: Listener Debugger
38
37
  after_feature_element
39
38
  after_feature
40
39
  after_features
41
-
42
40
  """
@@ -13,15 +13,13 @@ Feature: Formatter API: Step file path and line number (Issue #179)
13
13
  """
14
14
  And a file named "features/step_definitions/steps.rb" with:
15
15
  """
16
- Given /^step at line (.*)$/ do |line|
17
- end
16
+ Given(/^step at line (.*)$/) {|line| }
18
17
  """
19
18
  And a file named "features/support/jb/formatter.rb" with:
20
19
  """
21
20
  module Jb
22
21
  class Formatter
23
- def initialize(step_mother, io, options)
24
- @step_mother = step_mother
22
+ def initialize(runtime, io, options)
25
23
  @io = io
26
24
  end
27
25
 
@@ -1,13 +1,14 @@
1
1
  Feature: HTML output formatter
2
2
 
3
3
  Background:
4
- Given a file named "features/scenario_outline_with_undefined_steps.feature" with:
4
+ Given the standard step definitions
5
+ And a file named "features/scenario_outline_with_undefined_steps.feature" with:
5
6
  """
6
7
  Feature:
7
8
 
8
9
  Scenario Outline:
9
- Given an undefined step
10
-
10
+ Given this step is undefined
11
+
11
12
  Examples:
12
13
  |foo|
13
14
  |bar|
@@ -17,7 +18,7 @@ Feature: HTML output formatter
17
18
  Feature: Outline
18
19
 
19
20
  Scenario Outline: Will it blend?
20
- Given this hasn't been implemented yet
21
+ Given this step is pending
21
22
  And other step
22
23
  When I do something with <example>
23
24
  Then I should see something
@@ -32,21 +33,12 @@ Feature: HTML output formatter
32
33
  Feature: Feature with failing background step
33
34
 
34
35
  Background:
35
- Given this fails
36
+ Given this step fails
36
37
 
37
38
  Scenario:
38
39
  When I do something
39
40
  Then I should see something
40
41
  """
41
- And a file named "features/step_definitions/steps.rb" with:
42
- """
43
- Given /^this fails$/ do
44
- fail 'This step should fail'
45
- end
46
- Given /^this hasn't been implemented yet$/ do
47
- pending
48
- end
49
- """
50
42
 
51
43
  Scenario: an scenario outline, one undefined step, one random example, expand flag on
52
44
  When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format html --expand `
@@ -63,10 +55,14 @@ Feature: HTML output formatter
63
55
  """
64
56
  makeRed('scenario_1')
65
57
  """
58
+
66
59
  Examples:
67
60
  | file | flag |
68
61
  | features/scenario_outline_with_pending_step.feature | --expand |
69
62
  | features/scenario_outline_with_pending_step.feature | |
63
+
64
+ Examples:
65
+ | file | flag |
70
66
  | features/scenario_outline_with_undefined_steps.feature | --expand |
71
67
  | features/scenario_outline_with_undefined_steps.feature | |
72
68
 
@@ -3,49 +3,22 @@ Feature: JSON output formatter
3
3
  Developers should be able to consume features as JSON
4
4
 
5
5
  Background:
6
- Given a file named "features/one_passing_one_failing.feature" with:
6
+ Given the standard step definitions
7
+ And a file named "features/one_passing_one_failing.feature" with:
7
8
  """
8
9
  @a
9
10
  Feature: One passing scenario, one failing scenario
10
11
 
11
12
  @b
12
13
  Scenario: Passing
13
- Given a passing step
14
+ Given this step passes
14
15
 
15
16
  @c
16
17
  Scenario: Failing
17
- Given a failing step
18
+ Given this step fails
18
19
  """
19
- And a file named "features/step_definitions/steps.rb" with:
20
+ And a file named "features/step_definitions/json_steps.rb" with:
20
21
  """
21
- Given /a passing step/ do
22
- #does nothing
23
- end
24
-
25
- Given /a failing step/ do
26
- fail
27
- end
28
-
29
- Given /a pending step/ do
30
- pending
31
- end
32
-
33
- Given /^I add (\d+) and (\d+)$/ do |a,b|
34
- @result = a.to_i + b.to_i
35
- end
36
-
37
- Then /^I the result should be (\d+)$/ do |c|
38
- @result.should == c.to_i
39
- end
40
-
41
- Then /^I should see/ do |string|
42
-
43
- end
44
-
45
- Given /^I pass a table argument/ do |table|
46
-
47
- end
48
-
49
22
  Given /^I embed a screenshot/ do
50
23
  File.open("screenshot.png", "w") { |file| file << "foo" }
51
24
  embed "screenshot.png", "image/png"
@@ -54,11 +27,6 @@ Feature: JSON output formatter
54
27
  Given /^I print from step definition/ do
55
28
  puts "from step definition"
56
29
  end
57
-
58
- Given /^I embed data directly/ do
59
- data = "YWJj"
60
- embed data, "mime-type;base64"
61
- end
62
30
  """
63
31
  And a file named "features/embed.feature" with:
64
32
  """
@@ -67,47 +35,39 @@ Feature: JSON output formatter
67
35
  Scenario:
68
36
  Given I embed a screenshot
69
37
 
70
- """
71
- And a file named "features/print_from_step_definition.feature" with:
72
- """
73
- Feature: A print from step definition feature
74
-
75
- Scenario:
76
- Given I print from step definition
77
- And I print from step definition
78
-
79
38
  """
80
39
  And a file named "features/outline.feature" with:
81
40
  """
82
41
  Feature: An outline feature
83
42
 
84
43
  Scenario Outline: outline
85
- Given a <type> step
44
+ Given this step <status>
86
45
 
87
46
  Examples: examples1
88
- | type |
89
- | passing |
90
- | failing |
47
+ | status |
48
+ | passes |
49
+ | fails |
91
50
 
92
51
  Examples: examples2
93
- | type |
94
- | passing |
95
-
52
+ | status |
53
+ | passes |
96
54
  """
97
- And a file named "features/embed_data_directly.feature" with:
55
+ And a file named "features/print_from_step_definition.feature" with:
98
56
  """
99
- Feature: An embed data directly feature
57
+ Feature: A print from step definition feature
100
58
 
101
- Scenario Outline:
102
- Given I embed data directly
59
+ Scenario:
60
+ Given I print from step definition
61
+ And I print from step definition
103
62
 
104
- Examples:
105
- | dummy |
106
- | 1 |
107
- | 2 |
63
+ """
64
+ And a file named "features/print_from_step_definition.feature" with:
65
+ """
66
+ Feature: A print from step definition feature
108
67
 
109
68
  Scenario:
110
- Given I embed data directly
69
+ Given I print from step definition
70
+ And I print from step definition
111
71
 
112
72
  """
113
73
 
@@ -148,7 +108,7 @@ Feature: JSON output formatter
148
108
  "steps": [
149
109
  {
150
110
  "keyword": "Given ",
151
- "name": "a passing step",
111
+ "name": "this step passes",
152
112
  "line": 6,
153
113
  "match": {
154
114
  "location": "features/step_definitions/steps.rb:1"
@@ -176,14 +136,14 @@ Feature: JSON output formatter
176
136
  "steps": [
177
137
  {
178
138
  "keyword": "Given ",
179
- "name": "a failing step",
139
+ "name": "this step fails",
180
140
  "line": 10,
181
141
  "match": {
182
- "location": "features/step_definitions/steps.rb:5"
142
+ "location": "features/step_definitions/steps.rb:4"
183
143
  },
184
144
  "result": {
185
145
  "status": "failed",
186
- "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:6:in `/a failing step/'\nfeatures/one_passing_one_failing.feature:10:in `Given a failing step'",
146
+ "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/one_passing_one_failing.feature:10:in `Given this step fails'",
187
147
  "duration": 1
188
148
  }
189
149
  }
@@ -231,7 +191,7 @@ Feature: JSON output formatter
231
191
  "steps": [
232
192
  {
233
193
  "keyword": "Given ",
234
- "name": "a passing step",
194
+ "name": "this step passes",
235
195
  "line": 6,
236
196
  "match": {
237
197
  "location": "features/step_definitions/steps.rb:1"
@@ -259,14 +219,14 @@ Feature: JSON output formatter
259
219
  "steps": [
260
220
  {
261
221
  "keyword": "Given ",
262
- "name": "a failing step",
222
+ "name": "this step fails",
263
223
  "line": 10,
264
224
  "match": {
265
- "location": "features/step_definitions/steps.rb:5"
225
+ "location": "features/step_definitions/steps.rb:4"
266
226
  },
267
227
  "result": {
268
228
  "status": "failed",
269
- "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:6:in `/a failing step/'\nfeatures/one_passing_one_failing.feature:10:in `Given a failing step'",
229
+ "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/one_passing_one_failing.feature:10:in `Given this step fails'",
270
230
  "duration": 1
271
231
  }
272
232
  }
@@ -278,7 +238,7 @@ Feature: JSON output formatter
278
238
 
279
239
  """
280
240
 
281
- @spawn
241
+ @spawn @wip-jruby
282
242
  Scenario: DocString
283
243
  Given a file named "features/doc_string.feature" with:
284
244
  """
@@ -290,7 +250,7 @@ Feature: JSON output formatter
290
250
  a string
291
251
  \"\"\"
292
252
  """
293
- And a file named "features/step_definitions/doc_string_steps.rb" with:
253
+ And a file named "features/step_definitions/steps.rb" with:
294
254
  """
295
255
  Then /I should fail with/ do |s|
296
256
  raise s
@@ -326,11 +286,11 @@ Feature: JSON output formatter
326
286
  "line": 5
327
287
  },
328
288
  "match": {
329
- "location": "features/step_definitions/doc_string_steps.rb:1"
289
+ "location": "features/step_definitions/steps.rb:1"
330
290
  },
331
291
  "result": {
332
292
  "status": "failed",
333
- "error_message": "a string (RuntimeError)\n./features/step_definitions/doc_string_steps.rb:2:in `/I should fail with/'\nfeatures/doc_string.feature:4:in `Then I should fail with'",
293
+ "error_message": "a string (RuntimeError)\n./features/step_definitions/steps.rb:2:in `/I should fail with/'\nfeatures/doc_string.feature:4:in `Then I should fail with'",
334
294
  "duration": 1
335
295
  }
336
296
  }
@@ -340,6 +300,8 @@ Feature: JSON output formatter
340
300
  }
341
301
  ]
342
302
  """
303
+
304
+ @spawn
343
305
  Scenario: embedding screenshot
344
306
  When I run `cucumber -b --format json features/embed.feature`
345
307
  Then it should pass with JSON:
@@ -372,7 +334,7 @@ Feature: JSON output formatter
372
334
  }
373
335
  ],
374
336
  "match": {
375
- "location": "features/step_definitions/steps.rb:29"
337
+ "location": "features/step_definitions/json_steps.rb:1"
376
338
  },
377
339
  "result": {
378
340
  "status": "passed",
@@ -386,167 +348,7 @@ Feature: JSON output formatter
386
348
  ]
387
349
 
388
350
  """
389
- Scenario: print from step definition
390
- When I run `cucumber --format json features/print_from_step_definition.feature`
391
- Then it should pass with JSON:
392
- """
393
- [
394
- {
395
- "uri": "features/print_from_step_definition.feature",
396
- "id": "a-print-from-step-definition-feature",
397
- "keyword": "Feature",
398
- "name": "A print from step definition feature",
399
- "line": 1,
400
- "description": "",
401
- "elements": [
402
- {
403
- "id": "a-print-from-step-definition-feature;",
404
- "keyword": "Scenario",
405
- "name": "",
406
- "line": 3,
407
- "description": "",
408
- "type": "scenario",
409
- "steps": [
410
- {
411
- "keyword": "Given ",
412
- "name": "I print from step definition",
413
- "line": 4,
414
- "output": [
415
- "from step definition"
416
- ],
417
- "match": {
418
- "location": "features/step_definitions/steps.rb:34"
419
- },
420
- "result": {
421
- "status": "passed",
422
- "duration": 1
423
- }
424
- },
425
- {
426
- "keyword": "And ",
427
- "name": "I print from step definition",
428
- "line": 5,
429
- "output": [
430
- "from step definition"
431
- ],
432
- "match": {
433
- "location": "features/step_definitions/steps.rb:34"
434
- },
435
- "result": {
436
- "status": "passed",
437
- "duration": 1
438
- }
439
- }
440
- ]
441
- }
442
- ]
443
- }
444
- ]
445
-
446
- """
447
- Scenario: embedding data directly
448
- When I run `cucumber -b --format json -x features/embed_data_directly.feature`
449
- Then it should pass with JSON:
450
- """
451
- [
452
- {
453
- "uri": "features/embed_data_directly.feature",
454
- "id": "an-embed-data-directly-feature",
455
- "keyword": "Feature",
456
- "name": "An embed data directly feature",
457
- "line": 1,
458
- "description": "",
459
- "elements": [
460
- {
461
- "keyword": "Scenario Outline",
462
- "name": "",
463
- "line": 8,
464
- "description": "",
465
- "id": "an-embed-data-directly-feature;;;2",
466
- "type": "scenario",
467
- "steps": [
468
- {
469
- "keyword": "Given ",
470
- "name": "I embed data directly",
471
- "line": 4,
472
- "embeddings": [
473
- {
474
- "mime_type": "mime-type",
475
- "data": "YWJj"
476
- }
477
- ],
478
- "match": {
479
- "location": "features/step_definitions/steps.rb:38"
480
- },
481
- "result": {
482
- "status": "passed",
483
- "duration": 1
484
- }
485
- }
486
- ]
487
- },
488
- {
489
- "keyword": "Scenario Outline",
490
- "name": "",
491
- "line": 9,
492
- "description": "",
493
- "id": "an-embed-data-directly-feature;;;3",
494
- "type": "scenario",
495
- "steps": [
496
- {
497
- "keyword": "Given ",
498
- "name": "I embed data directly",
499
- "line": 4,
500
- "embeddings": [
501
- {
502
- "mime_type": "mime-type",
503
- "data": "YWJj"
504
- }
505
- ],
506
- "match": {
507
- "location": "features/step_definitions/steps.rb:38"
508
- },
509
- "result": {
510
- "status": "passed",
511
- "duration": 1
512
- }
513
- }
514
- ]
515
- },
516
- {
517
- "id": "an-embed-data-directly-feature;",
518
- "keyword": "Scenario",
519
- "name": "",
520
- "line": 11,
521
- "description": "",
522
- "type": "scenario",
523
- "steps": [
524
- {
525
- "keyword": "Given ",
526
- "name": "I embed data directly",
527
- "line": 12,
528
- "embeddings": [
529
- {
530
- "mime_type": "mime-type",
531
- "data": "YWJj"
532
- }
533
- ],
534
- "match": {
535
- "location": "features/step_definitions/steps.rb:38"
536
- },
537
- "result": {
538
- "status": "passed",
539
- "duration": 1
540
- }
541
- }
542
- ]
543
- }
544
- ]
545
- }
546
- ]
547
351
 
548
- """
549
- @spawn
550
352
  Scenario: scenario outline
551
353
  When I run `cucumber --format json features/outline.feature`
552
354
  Then it should fail with JSON:
@@ -570,10 +372,10 @@ Feature: JSON output formatter
570
372
  "steps": [
571
373
  {
572
374
  "keyword": "Given ",
573
- "name": "a <type> step",
375
+ "name": "this step <status>",
574
376
  "line": 4,
575
377
  "match": {
576
- "location": "features/step_definitions/steps.rb:1"
378
+ "location": "features/outline.feature:4"
577
379
  }
578
380
  }
579
381
  ],
@@ -587,21 +389,21 @@ Feature: JSON output formatter
587
389
  "rows": [
588
390
  {
589
391
  "cells": [
590
- "type"
392
+ "status"
591
393
  ],
592
394
  "line": 7,
593
395
  "id": "an-outline-feature;outline;examples1;1"
594
396
  },
595
397
  {
596
398
  "cells": [
597
- "passing"
399
+ "passes"
598
400
  ],
599
401
  "line": 8,
600
402
  "id": "an-outline-feature;outline;examples1;2"
601
403
  },
602
404
  {
603
405
  "cells": [
604
- "failing"
406
+ "fails"
605
407
  ],
606
408
  "line": 9,
607
409
  "id": "an-outline-feature;outline;examples1;3"
@@ -617,14 +419,14 @@ Feature: JSON output formatter
617
419
  "rows": [
618
420
  {
619
421
  "cells": [
620
- "type"
422
+ "status"
621
423
  ],
622
424
  "line": 12,
623
425
  "id": "an-outline-feature;outline;examples2;1"
624
426
  },
625
427
  {
626
428
  "cells": [
627
- "passing"
429
+ "passes"
628
430
  ],
629
431
  "line": 13,
630
432
  "id": "an-outline-feature;outline;examples2;2"
@@ -638,6 +440,66 @@ Feature: JSON output formatter
638
440
  ]
639
441
 
640
442
  """
443
+
444
+ Scenario: print from step definition
445
+ When I run `cucumber --format json features/print_from_step_definition.feature`
446
+ Then it should pass with JSON:
447
+ """
448
+ [
449
+ {
450
+ "uri": "features/print_from_step_definition.feature",
451
+ "id": "a-print-from-step-definition-feature",
452
+ "keyword": "Feature",
453
+ "name": "A print from step definition feature",
454
+ "line": 1,
455
+ "description": "",
456
+ "elements": [
457
+ {
458
+ "id": "a-print-from-step-definition-feature;",
459
+ "keyword": "Scenario",
460
+ "name": "",
461
+ "line": 3,
462
+ "description": "",
463
+ "type": "scenario",
464
+ "steps": [
465
+ {
466
+ "keyword": "Given ",
467
+ "name": "I print from step definition",
468
+ "line": 4,
469
+ "output": [
470
+ "from step definition"
471
+ ],
472
+ "match": {
473
+ "location": "features/step_definitions/json_steps.rb:6"
474
+ },
475
+ "result": {
476
+ "status": "passed",
477
+ "duration": 1
478
+ }
479
+ },
480
+ {
481
+ "keyword": "And ",
482
+ "name": "I print from step definition",
483
+ "line": 5,
484
+ "output": [
485
+ "from step definition"
486
+ ],
487
+ "match": {
488
+ "location": "features/step_definitions/json_steps.rb:6"
489
+ },
490
+ "result": {
491
+ "status": "passed",
492
+ "duration": 1
493
+ }
494
+ }
495
+ ]
496
+ }
497
+ ]
498
+ }
499
+ ]
500
+
501
+ """
502
+
641
503
  @spawn
642
504
  Scenario: scenario outline expanded
643
505
  When I run `cucumber --expand --format json features/outline.feature`
@@ -662,7 +524,7 @@ Feature: JSON output formatter
662
524
  "steps": [
663
525
  {
664
526
  "keyword": "Given ",
665
- "name": "a passing step",
527
+ "name": "this step passes",
666
528
  "line": 4,
667
529
  "match": {
668
530
  "location": "features/step_definitions/steps.rb:1"
@@ -684,14 +546,14 @@ Feature: JSON output formatter
684
546
  "steps": [
685
547
  {
686
548
  "keyword": "Given ",
687
- "name": "a failing step",
549
+ "name": "this step fails",
688
550
  "line": 4,
689
551
  "match": {
690
- "location": "features/step_definitions/steps.rb:5"
552
+ "location": "features/step_definitions/steps.rb:4"
691
553
  },
692
554
  "result": {
693
555
  "status": "failed",
694
- "error_message" : " (RuntimeError)\n./features/step_definitions/steps.rb:6:in `/a failing step/'\nfeatures/outline.feature:4:in `Given a <type> step'",
556
+ "error_message" : " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/outline.feature:4:in `Given this step <status>'",
695
557
  "duration": 1
696
558
  }
697
559
  }
@@ -707,7 +569,7 @@ Feature: JSON output formatter
707
569
  "steps": [
708
570
  {
709
571
  "keyword": "Given ",
710
- "name": "a passing step",
572
+ "name": "this step passes",
711
573
  "line": 4,
712
574
  "match": {
713
575
  "location": "features/step_definitions/steps.rb:1"