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
@@ -1,245 +0,0 @@
1
- Feature: transform
2
- In order to maintain modularity within step definitions
3
- As a step definition editor
4
- I want to register a regex to capture and tranform step definition arguments.
5
-
6
- Background:
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/step_definitions/steps.rb" with:
9
- """
10
- Then /^I should transform ('\d+' to an Integer)$/ do |integer|
11
- integer.should be_kind_of(Integer)
12
- end
13
-
14
- Then /^I should transform ('\w+' to a Symbol)$/ do |symbol|
15
- symbol.should be_kind_of(Symbol)
16
- end
17
-
18
- Then /^I should transform ('\d+' to a Float)$/ do |float|
19
- float.should be_kind_of(Float)
20
- end
21
-
22
- Then /^I should transform ('\w+' to an Array)$/ do |array|
23
- array.should be_kind_of(Array)
24
- end
25
-
26
- Then /^I should transform ('\w+' to Nil)$/ do |string|
27
- string.should be_nil
28
- end
29
-
30
- Then /^I should not transform ('\d+') to an Integer$/ do |string|
31
- string.should be_kind_of(String)
32
- end
33
-
34
- Then /^I should transform ((?:nothing|'\d+') to an optional Integer)$/ do |integer|
35
- integer.should be_nil
36
- end
37
- """
38
- And a file named "features/support/env.rb" with:
39
- """
40
- Transform /^'\d+' to an Integer$/ do |step_arg|
41
- /'(\d+)' to an Integer/.match(step_arg).captures[0].to_i
42
- end
43
-
44
- Transform /^(?:nothing|'(\d+)') to an optional Integer$/ do |str|
45
- str ? str.to_i : nil
46
- end
47
-
48
- Transform /^'(\d+)' to a Float$/ do |integer_string|
49
- Transform("'#{integer_string}' to an Integer").to_f
50
- end
51
-
52
- Transform(/^('\w+') to Nil$/) {|str| nil }
53
-
54
- Transform(/^('\w+') to a Symbol$/) {|str| str.to_sym }
55
-
56
- module MyHelpers
57
- def fetch_array
58
- @array
59
- end
60
- end
61
-
62
- World(MyHelpers)
63
-
64
- Before do
65
- @array = []
66
- end
67
-
68
- Transform(/^('\w+') to an Array$/) {|str| fetch_array }
69
- """
70
-
71
- Scenario: run a specific scenario with a registered transform
72
- Given a file named "features/transform_sample.feature" with:
73
- """
74
- Feature: Step argument transformations
75
-
76
- Scenario: transform with matches
77
- Then I should transform '10' to an Integer
78
-
79
- Scenario: transform with matches that capture
80
- Then I should transform 'abc' to a Symbol
81
-
82
- Scenario: transform with matches that reuse transforms
83
- Then I should transform '10' to a Float
84
-
85
- Scenario: transform with matches that use current world
86
- Then I should transform 'abc' to an Array
87
-
88
- Scenario: transform with matches that return nil
89
- Then I should transform 'nil' to Nil
90
-
91
- Scenario: transform without matches
92
- Then I should not transform '10' to an Integer
93
-
94
- Scenario: transform with optional arguments not given
95
- Then I should transform nothing to an optional Integer
96
- """
97
- When I run cucumber --backtrace -s features
98
- Then it should pass with
99
- """
100
- Feature: Step argument transformations
101
-
102
- Scenario: transform with matches
103
- Then I should transform '10' to an Integer
104
-
105
- Scenario: transform with matches that capture
106
- Then I should transform 'abc' to a Symbol
107
-
108
- Scenario: transform with matches that reuse transforms
109
- Then I should transform '10' to a Float
110
-
111
- Scenario: transform with matches that use current world
112
- Then I should transform 'abc' to an Array
113
-
114
- Scenario: transform with matches that return nil
115
- Then I should transform 'nil' to Nil
116
-
117
- Scenario: transform without matches
118
- Then I should not transform '10' to an Integer
119
-
120
- Scenario: transform with optional arguments not given
121
- Then I should transform nothing to an optional Integer
122
-
123
- 7 scenarios (7 passed)
124
- 7 steps (7 passed)
125
-
126
- """
127
-
128
- Scenario: run a table scenario with an unrelated registered transform
129
- Given a file named "features/transform_sample.feature" with:
130
- """
131
- Feature: Step argument transformations
132
-
133
- Scenario: A table
134
- Then I should check the following table:
135
- | letter | letter_plus_a |
136
- | r | ra |
137
- | m | ma |
138
- | p | pa |
139
- """
140
- And a file named "features/support/table.rb" with:
141
- """
142
- Transform /^table:number,number_plus_a$/ do |table|
143
- :not_what_you_were_expecting
144
- end
145
-
146
- Then "I should check the following table:" do |table|
147
- table.hashes.each do |hash|
148
- hash['letter_plus_a'].should == (hash['letter'] + 'a')
149
- end
150
- end
151
- """
152
- When I run cucumber -s features
153
- Then it should pass with
154
- """
155
- Feature: Step argument transformations
156
-
157
- Scenario: A table
158
- Then I should check the following table:
159
- | letter | letter_plus_a |
160
- | r | ra |
161
- | m | ma |
162
- | p | pa |
163
-
164
- 1 scenario (1 passed)
165
- 1 step (1 passed)
166
-
167
- """
168
-
169
- Scenario: run a table scenario with an related registered transform not using table
170
- Given a file named "features/transform_sample.feature" with:
171
- """
172
- Feature: Step argument transformations
173
-
174
- Scenario: A table
175
- Then I should check the following table:
176
- | letter | letter_plus_a |
177
- | r | ra |
178
- | m | ma |
179
- | p | pa |
180
- """
181
- And a file named "features/support/table.rb" with:
182
- """
183
- Transform /^table:letter,letter_plus_a$/ do |table|
184
- 1
185
- end
186
-
187
- Then "I should check the following table:" do |columns|
188
- columns.should == 1
189
- end
190
- """
191
- When I run cucumber -s features
192
- Then it should pass with
193
- """
194
- Feature: Step argument transformations
195
-
196
- Scenario: A table
197
- Then I should check the following table:
198
- | letter | letter_plus_a |
199
- | r | ra |
200
- | m | ma |
201
- | p | pa |
202
-
203
- 1 scenario (1 passed)
204
- 1 step (1 passed)
205
-
206
- """
207
-
208
- Scenario: run a table scenario with an related registered transform using table
209
- Given a file named "features/transform_sample.feature" with:
210
- """
211
- Feature: Step argument transformations
212
-
213
- Scenario: A table
214
- Then I should check the following table:
215
- | letter | letter_plus_a |
216
- | r | ra |
217
- | m | ma |
218
- | p | pa |
219
- """
220
- And a file named "features/support/table.rb" with:
221
- """
222
- Transform /^table:letter,letter_plus_a$/ do |table|
223
- table.rows.map { |row| row.join(',') }
224
- end
225
-
226
- Then "I should check the following table:" do |rows_in_table|
227
- rows_in_table.should == ['r,ra','m,ma','p,pa']
228
- end
229
- """
230
- When I run cucumber -b -s features
231
- Then it should pass with
232
- """
233
- Feature: Step argument transformations
234
-
235
- Scenario: A table
236
- Then I should check the following table:
237
- | letter | letter_plus_a |
238
- | r | ra |
239
- | m | ma |
240
- | p | pa |
241
-
242
- 1 scenario (1 passed)
243
- 1 step (1 passed)
244
-
245
- """
@@ -1,35 +0,0 @@
1
- Feature: Unicode in tables
2
- In order to please the whole world,
3
- unicode characters in tables should be
4
- properly aligned
5
-
6
- Scenario: All sorts of weird stuff
7
- Given a standard Cucumber project directory structure
8
- And a file named "features/unicode.feature" with:
9
- """
10
- Feature: Featuring unicode
11
-
12
- Scenario: So what, whatever
13
- Given passing
14
- | Brüno | abc |
15
- | Bruno | æøå |
16
- """
17
- And a file named "features/env.rb" with:
18
- """
19
- $KCODE='u'
20
- """
21
- When I run cucumber -q --dry-run features/unicode.feature
22
- Then it should pass with
23
- """
24
- Feature: Featuring unicode
25
-
26
- Scenario: So what, whatever
27
- Given passing
28
- | Brüno | abc |
29
- | Bruno | æøå |
30
-
31
- 1 scenario (1 undefined)
32
- 1 step (1 undefined)
33
-
34
- """
35
-
@@ -1,332 +0,0 @@
1
- @wire
2
- Feature: Wire Protocol
3
- In order to be allow Cucumber to touch my app in intimate places
4
- As a developer on platform which doesn't support Ruby
5
- I want a low-level protocol which Cucumber can use to run steps within my app
6
-
7
- #
8
- # Cucumber's wire protocol is an implementation of Cucumber's internal
9
- # 'programming language' abstraction, and allows step definitions to be
10
- # implemented and invoked on any platform.
11
- #
12
- # Communication is over a TCP socket, which Cucumber connects to when it finds
13
- # a definition file with the .wire extension in the step_definitions folder
14
- # (or other load path). Note that these files are rendered with ERB when loaded.
15
- #
16
- # Cucumber sends the following request messages out over the wire:
17
- #
18
- # * step_matches : this is used to find out whether the wire server has a
19
- # definition for a given step
20
- # * invoke : this is used to ask for a step definition to be invoked
21
- # * begin_scenario : signals that cucumber is about to execute a scenario
22
- # * end_scenario : signals that cucumber has finished executing a scenario
23
- # * snippet_text : requests a snippet for an undefined step
24
- #
25
- # Every message supports two standard responses:
26
- # * success : which expects different arguments (sometimes none at
27
- # all) depending on the request.
28
- # * fail : causes a Cucumber::WireSupport::WireException to be
29
- # raised.
30
- #
31
- # Some messages support more responses - see below for details.
32
- #
33
- # A WirePacket flowing in either direction is formatted as a JSON-encoded
34
- # string, with a newline character signaling the end of a packet. See the
35
- # specs for Cucumber::WireSupport::WirePacket for more details.
36
- #
37
- # These messages are described in detail below, with examples.
38
- #
39
-
40
- Background:
41
- Given a standard Cucumber project directory structure
42
- And a file named "features/wired.feature" with:
43
- """
44
- Feature: High strung
45
- Scenario: Wired
46
- Given we're all wired
47
-
48
- """
49
- And a file named "features/step_definitions/some_remote_place.wire" with:
50
- """
51
- host: localhost
52
- port: 54321
53
-
54
- """
55
-
56
-
57
- #
58
- # # Request: 'step_matches'
59
- #
60
- # When the features have been parsed, Cucumber will send a step_matches
61
- # message to ask the wire server if it can match a step name. This happens for
62
- # each of the steps in each of the features.
63
- #
64
- # The wire server replies with an array of StepMatch objects.
65
-
66
- Scenario: Dry run finds no step match
67
- Given there is a wire server running on port 54321 which understands the following protocol:
68
- | request | response |
69
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[]] |
70
- When I run cucumber --dry-run --no-snippets -f progress
71
- And it should pass with
72
- """
73
- U
74
-
75
- 1 scenario (1 undefined)
76
- 1 step (1 undefined)
77
-
78
- """
79
-
80
- # When each StepMatch is returned, it contains the following data:
81
- # * id - identifier for the step definition to be used later when if it
82
- # needs to be invoked. The identifier can be any string value and
83
- # is simply used for the wire server's own reference.
84
- # * args - any argument values as captured by the wire end's own regular
85
- # expression (or other argument matching) process.
86
- Scenario: Dry run finds a step match
87
- Given there is a wire server running on port 54321 which understands the following protocol:
88
- | request | response |
89
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[]}]] |
90
- When I run cucumber --dry-run -f progress
91
- And it should pass with
92
- """
93
- -
94
-
95
- 1 scenario (1 skipped)
96
- 1 step (1 skipped)
97
-
98
- """
99
-
100
- # Optionally, the StepMatch can also contain a source reference, and a native
101
- # regexp string which will be used by some formatters.
102
- Scenario: Step matches returns details about the remote step definition
103
- Given there is a wire server running on port 54321 which understands the following protocol:
104
- | request | response |
105
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[], "source":"MyApp.MyClass:123", "regexp":"we.*"}]] |
106
- When I run cucumber -f stepdefs --dry-run
107
- Then STDERR should be empty
108
- And it should pass with
109
- """
110
- -
111
-
112
- we.* # MyApp.MyClass:123
113
-
114
- 1 scenario (1 skipped)
115
- 1 step (1 skipped)
116
-
117
- """
118
-
119
-
120
- #
121
- # # Request: 'invoke'
122
- #
123
- # Assuming a StepMatch was returned for a given step name, when it's time to
124
- # invoke that step definition, Cucumber will send an invoke message.
125
- #
126
- # The invoke message contains the ID of the step definition, as returned by
127
- # the wire server in response to the the step_matches call, along with the
128
- # arguments that were parsed from the step name during the same step_matches
129
- # call.
130
- #
131
- # The wire server will normally[1] reply one of the following:
132
- # * success
133
- # * fail
134
- # * pending : optionally takes a message argument
135
- #
136
- # [1] This isn't the whole story: see also wire_protocol_table_diffing.feature
137
- #
138
-
139
- # ## Pending Steps
140
- #
141
- Scenario: Invoke a step definition which is pending
142
- Given there is a wire server running on port 54321 which understands the following protocol:
143
- | request | response |
144
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[]}]] |
145
- | ["begin_scenario"] | ["success"] |
146
- | ["invoke",{"id":"1","args":[]}] | ["pending", "I'll do it later"] |
147
- | ["end_scenario"] | ["success"] |
148
- When I run cucumber -f pretty -q
149
- And it should pass with
150
- """
151
- Feature: High strung
152
-
153
- Scenario: Wired
154
- Given we're all wired
155
- I'll do it later (Cucumber::Pending)
156
- features/wired.feature:3:in `Given we're all wired'
157
-
158
- 1 scenario (1 pending)
159
- 1 step (1 pending)
160
-
161
- """
162
-
163
- # ## Passing Steps
164
- #
165
- Scenario: Invoke a step definition which passes
166
- Given there is a wire server running on port 54321 which understands the following protocol:
167
- | request | response |
168
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[]}]] |
169
- | ["begin_scenario"] | ["success"] |
170
- | ["invoke",{"id":"1","args":[]}] | ["success"] |
171
- | ["end_scenario"] | ["success"] |
172
- When I run cucumber -f progress
173
- And it should pass with
174
- """
175
- .
176
-
177
- 1 scenario (1 passed)
178
- 1 step (1 passed)
179
-
180
- """
181
-
182
- # ## Failing Steps
183
- #
184
- # When an invoked step definition fails, it can return details of the exception
185
- # in the reply to invoke. This causes a Cucumber::WireSupport::WireException to be
186
- # raised.
187
- #
188
- # Valid arguments are:
189
- # * message (mandatory)
190
- # * exception
191
- # * backtrace
192
- #
193
- # See the specs for Cucumber::WireSupport::WireException for more details
194
- #
195
- Scenario: Invoke a step definition which fails
196
- Given there is a wire server running on port 54321 which understands the following protocol:
197
- | request | response |
198
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[]}]] |
199
- | ["begin_scenario"] | ["success"] |
200
- | ["invoke",{"id":"1","args":[]}] | ["fail",{"message":"The wires are down", "exception":"Some.Foreign.ExceptionType"}] |
201
- | ["end_scenario"] | ["success"] |
202
- When I run cucumber -f progress
203
- Then STDERR should be empty
204
- And it should fail with
205
- """
206
- F
207
-
208
- (::) failed steps (::)
209
-
210
- The wires are down (Some.Foreign.ExceptionType from localhost:54321)
211
- features/wired.feature:3:in `Given we're all wired'
212
-
213
- Failing Scenarios:
214
- cucumber features/wired.feature:2 # Scenario: Wired
215
-
216
- 1 scenario (1 failed)
217
- 1 step (1 failed)
218
-
219
- """
220
-
221
- # ## Step Arguments
222
- #
223
- # Imagine we have a step definition like:
224
- #
225
- # Given /we're all (.*)/ do | what_we_are |
226
- # end
227
- #
228
- # When this step definition matches the step name in our feature, the word
229
- # 'wired' will be captured as an argument.
230
- #
231
- # Cucumber expects this StepArgument to be returned in the StepMatch. The keys
232
- # have the following meanings:
233
- # * val : the value of the string captured for that argument from the step
234
- # name passed in step_matches
235
- # * pos : the position within the step name that the argument was matched
236
- # (used for formatter highlighting)
237
- #
238
- Scenario: Invoke a step definition which takes string arguments (and passes)
239
- Given there is a wire server running on port 54321 which understands the following protocol:
240
- | request | response |
241
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[{"id":"1", "args":[{"val":"wired", "pos":10}]}]] |
242
- | ["begin_scenario"] | ["success"] |
243
- | ["invoke",{"id":"1","args":["wired"]}] | ["success"] |
244
- | ["end_scenario"] | ["success"] |
245
- When I run cucumber -f progress
246
- Then STDERR should be empty
247
- And it should pass with
248
- """
249
- .
250
-
251
- 1 scenario (1 passed)
252
- 1 step (1 passed)
253
-
254
- """
255
-
256
- # ## Multiline Table Arguments
257
- #
258
- # When the step has a multiline table argument, it will be passed with the
259
- # invoke message as a string - a serialized JSON array of array of strings.
260
- # In the following scenario our step definition takes two arguments - one
261
- # captures the "we're" and the other takes the table.
262
- Scenario: Invoke a step definition which takes table arguments (and passes)
263
- Given a file named "features/wired_on_tables.feature" with:
264
- """
265
- Feature: High strung
266
- Scenario: Wired and more
267
- Given we're all:
268
- | wired |
269
- | high |
270
- | happy |
271
- """
272
- And there is a wire server running on port 54321 which understands the following protocol:
273
- | request | response |
274
- | ["step_matches",{"name_to_match":"we're all:"}] | ["success",[{"id":"1", "args":[{"val":"we're", "pos":0}]}]] |
275
- | ["begin_scenario"] | ["success"] |
276
- | ["invoke",{"id":"1","args":["we're",[["wired"],["high"],["happy"]]]}] | ["success"] |
277
- | ["end_scenario"] | ["success"] |
278
- When I run cucumber -f progress features/wired_on_tables.feature
279
- Then STDERR should be empty
280
- And it should pass with
281
- """
282
- .
283
-
284
- 1 scenario (1 passed)
285
- 1 step (1 passed)
286
-
287
- """
288
-
289
-
290
- #
291
- # # Request: 'snippets'
292
- #
293
- Scenario: Wire server returns snippets for a step that didn't match
294
- Given there is a wire server running on port 54321 which understands the following protocol:
295
- | request | response |
296
- | ["step_matches",{"name_to_match":"we're all wired"}] | ["success",[]] |
297
- | ["snippet_text",{"step_keyword":"Given","multiline_arg_class":"","step_name":"we're all wired"}] | ["success","foo()\n bar;\nbaz"] |
298
- | ["begin_scenario"] | ["success"] |
299
- | ["end_scenario"] | ["success"] |
300
- When I run cucumber -f pretty
301
- Then STDERR should be empty
302
- And it should pass with
303
- """
304
- Feature: High strung
305
-
306
- Scenario: Wired # features/wired.feature:2
307
- Given we're all wired # features/wired.feature:3
308
-
309
- 1 scenario (1 undefined)
310
- 1 step (1 undefined)
311
-
312
- You can implement step definitions for undefined steps with these snippets:
313
-
314
- foo()
315
- bar;
316
- baz
317
-
318
-
319
- """
320
-
321
- #
322
- # # Bad Response
323
- #
324
- Scenario: Unexpected response
325
- Given there is a wire server running on port 54321 which understands the following protocol:
326
- | request | response |
327
- | ["begin_scenario"] | ["yikes"] |
328
- When I run cucumber -f progress
329
- Then STDERR should match
330
- """
331
- undefined method `handle_yikes'
332
- """
data/lib/README.rdoc DELETED
@@ -1,12 +0,0 @@
1
- = Cucumber API
2
-
3
- This is the public API of Cucumber. The public API includes the classes, modules
4
- and methods you can use if you are a user of Cucumber. It also applies to you if
5
- you're developing a 3rd party tool that integrates with Cucumber.
6
-
7
- == Internal API
8
-
9
- Cucumber has more classes, modules and methods than what you can see in the public
10
- API. If you decide to dive into the source code and make use of an API that isn't
11
- part of this documentation - beware that this API might change at any time. If you
12
- want a particular internal API to be promoted to the public API - let us know.