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,116 +0,0 @@
1
- require 'cucumber/ast/has_steps'
2
- require 'cucumber/ast/names'
3
- require 'cucumber/ast/location'
4
-
5
- module Cucumber
6
- module Ast
7
- class Background #:nodoc:
8
- include HasSteps
9
- include Names
10
- include HasLocation
11
- attr_accessor :feature
12
-
13
- def initialize(language, location, comment, keyword, title, description, raw_steps)
14
- @language, @location, @comment, @keyword, @title, @description, @raw_steps = language, location, comment, keyword, title, description, raw_steps
15
- @failed = nil
16
- @first_collection_created = false
17
- attach_steps(@raw_steps)
18
- end
19
-
20
- def feature_elements
21
- feature.feature_elements
22
- end
23
-
24
- def step_invocations
25
- @step_invocations ||= steps.step_invocations(true)
26
- end
27
-
28
- def step_collection(scenario_step_invocations)
29
- if(@first_collection_created)
30
- steps.step_invocations(true).dup(scenario_step_invocations)
31
- else
32
- @first_collection_created = true
33
- step_invocations.dup(scenario_step_invocations)
34
- end
35
- end
36
-
37
- def accept(visitor)
38
- return if Cucumber.wants_to_quit
39
- visitor.visit_comment(@comment) unless @comment.empty?
40
- visitor.visit_background_name(@keyword, name, file_colon_line, source_indent(first_line_length))
41
- with_visitor(hook_context, visitor) do
42
- visitor.runtime.before(hook_context)
43
- skip_invoke! if failed?
44
- visitor.visit_steps(step_invocations)
45
- @failed = step_invocations.any? { |step_invocation| step_invocation.exception || step_invocation.status != :passed }
46
- visitor.runtime.after(hook_context) if @failed || feature_elements.empty?
47
- end
48
- end
49
-
50
- def with_visitor(scenario, visitor)
51
- @current_visitor = visitor
52
- if self != scenario && scenario.respond_to?(:with_visitor)
53
- scenario.with_visitor(visitor) do
54
- yield
55
- end
56
- else
57
- yield
58
- end
59
- end
60
-
61
- def accept_hook?(hook)
62
- if hook_context != self
63
- hook_context.accept_hook?(hook)
64
- else
65
- # We have no scenarios, just ask our feature
66
- feature.accept_hook?(hook)
67
- end
68
- end
69
-
70
- def skip_invoke!
71
- step_invocations.each{|step_invocation| step_invocation.skip_invoke!}
72
- end
73
-
74
- def failed?
75
- !!@failed
76
- end
77
-
78
- def hook_context
79
- feature_elements.first || self
80
- end
81
-
82
- def to_sexp
83
- sexp = [:background, line, @keyword]
84
- sexp += [name] unless name.empty?
85
- comment = @comment.to_sexp
86
- sexp += [comment] if comment
87
- sexp += steps.to_sexp if steps.any?
88
- sexp
89
- end
90
-
91
- def fail!(exception)
92
- @failed = true
93
- @exception = exception
94
- @current_visitor.visit_exception(@exception, :failed)
95
- end
96
-
97
- # Override this method, as there are situations where the background
98
- # wind up being the one called fore Before scenarios, and
99
- # backgrounds don't have tags.
100
- def source_tags
101
- []
102
- end
103
-
104
- def source_tag_names
105
- source_tags.map { |tag| tag.name }
106
- end
107
-
108
- private
109
-
110
- def steps
111
- @steps ||= StepCollection.new(@raw_steps)
112
- end
113
-
114
- end
115
- end
116
- end
@@ -1,31 +0,0 @@
1
- module Cucumber
2
- module Ast
3
- # Holds the value of a comment parsed from a feature file:
4
- #
5
- # # Lorem ipsum
6
- # # dolor sit amet
7
- #
8
- # This gets parsed into a Comment with value <tt>"# Lorem ipsum\n# dolor sit amet\n"</tt>
9
- #
10
- class Comment #:nodoc:
11
- def initialize(value)
12
- @value = value
13
- end
14
-
15
- def empty?
16
- @value.nil? || @value == ""
17
- end
18
-
19
- def accept(visitor)
20
- return if Cucumber.wants_to_quit
21
- @value.strip.split("\n").each do |line|
22
- visitor.visit_comment_line(line.strip)
23
- end
24
- end
25
-
26
- def to_sexp
27
- (@value.nil? || @value == '') ? nil : [:comment, @value]
28
- end
29
- end
30
- end
31
- end
@@ -1,61 +0,0 @@
1
- module Cucumber
2
- module Ast
3
- # Represents an inline argument in a step. Example:
4
- #
5
- # Given the message
6
- # """
7
- # I like
8
- # Cucumber sandwich
9
- # """
10
- #
11
- # The text between the pair of <tt>"""</tt> is stored inside a DocString,
12
- # which is yielded to the StepDefinition block as the last argument.
13
- #
14
- # The StepDefinition can then access the String via the #to_s method. In the
15
- # example above, that would return: <tt>"I like\nCucumber sandwich"</tt>
16
- #
17
- # Note how the indentation from the source is stripped away.
18
- #
19
- class DocString < String #:nodoc:
20
- attr_accessor :file
21
-
22
- def self.default_arg_name
23
- "string"
24
- end
25
-
26
- attr_reader :content_type
27
-
28
- def initialize(string, content_type)
29
- @content_type = content_type
30
- super string
31
- end
32
-
33
- def to_step_definition_arg
34
- self
35
- end
36
-
37
- def accept(visitor)
38
- return if Cucumber.wants_to_quit
39
- visitor.visit_doc_string(self)
40
- end
41
-
42
- def arguments_replaced(arguments) #:nodoc:
43
- string = self
44
- arguments.each do |name, value|
45
- value ||= ''
46
- string = string.gsub(name, value)
47
- end
48
- DocString.new(string, content_type)
49
- end
50
-
51
- def has_text?(text)
52
- index(text)
53
- end
54
-
55
- # For testing only
56
- def to_sexp #:nodoc:
57
- [:doc_string, to_step_definition_arg]
58
- end
59
- end
60
- end
61
- end
@@ -1,33 +0,0 @@
1
- require 'cucumber/ast/step_collection'
2
-
3
- module Cucumber
4
- module Ast
5
- class EmptyBackground
6
- attr_writer :file
7
- attr_accessor :feature
8
-
9
- def failed?
10
- false
11
- end
12
-
13
- def feature_elements
14
- []
15
- end
16
-
17
- def step_collection(step_invocations)
18
- StepCollection.new(step_invocations)
19
- end
20
-
21
- def step_invocations
22
- []
23
- end
24
-
25
- def init
26
- end
27
-
28
- def accept(visitor)
29
- end
30
- end
31
- end
32
- end
33
-
@@ -1,49 +0,0 @@
1
- require 'cucumber/ast/names'
2
-
3
- module Cucumber
4
- module Ast
5
- class Examples #:nodoc:
6
- include Names
7
- include HasLocation
8
- attr_writer :outline_table
9
-
10
- def initialize(location, comment, keyword, title, description, outline_table)
11
- @location, @comment, @keyword, @title, @description, @outline_table = location, comment, keyword, title, description, outline_table
12
- raise ArgumentError unless @location.is_a?(Location)
13
- raise ArgumentError unless @comment.is_a?(Comment)
14
- end
15
-
16
- attr_reader :gherkin_statement
17
- def gherkin_statement(statement=nil)
18
- @gherkin_statement ||= statement
19
- end
20
-
21
- def accept(visitor)
22
- return if Cucumber.wants_to_quit
23
- visitor.visit_comment(@comment) unless @comment.empty?
24
- visitor.visit_examples_name(@keyword, name)
25
- visitor.visit_outline_table(@outline_table)
26
- end
27
-
28
- def skip_invoke!
29
- @outline_table.skip_invoke!
30
- end
31
-
32
- def each_example_row(&proc)
33
- @outline_table.cells_rows[1..-1].each(&proc)
34
- end
35
-
36
- def failed?
37
- @outline_table.cells_rows[1..-1].select{|row| row.failed?}.any?
38
- end
39
-
40
- def to_sexp
41
- sexp = [:examples, @keyword, name]
42
- comment = @comment.to_sexp
43
- sexp += [comment] if comment
44
- sexp += [@outline_table.to_sexp]
45
- sexp
46
- end
47
- end
48
- end
49
- end
@@ -1,99 +0,0 @@
1
- require 'cucumber/ast/names'
2
- require 'cucumber/ast/location'
3
- require 'cucumber/ast/location'
4
-
5
- module Cucumber
6
- module Ast
7
- # Represents the root node of a parsed feature.
8
- class Feature #:nodoc:
9
- include Names
10
- include HasLocation
11
-
12
- attr_accessor :language
13
- attr_reader :feature_elements
14
-
15
- def initialize(location, background, comment, tags, keyword, title, description, feature_elements)
16
- @background, @comment, @tags, @keyword, @title, @description, @feature_elements = background, comment, tags, keyword, title, description, feature_elements
17
- @background.feature = self
18
- @location = location
19
- @feature_elements.each { |e| e.feature = self }
20
- end
21
-
22
- attr_reader :gherkin_statement
23
- def gherkin_statement(statement=nil)
24
- @gherkin_statement ||= statement
25
- end
26
-
27
- def step_count
28
- units.inject(0) { |total, unit| total += unit.step_count }
29
- end
30
-
31
- def accept(visitor)
32
- return if Cucumber.wants_to_quit
33
- visitor.visit_comment(@comment) unless @comment.empty?
34
- visitor.visit_tags(@tags)
35
- visitor.visit_feature_name(@keyword, indented_name)
36
- visitor.visit_background(@background) if !@background.is_a?(EmptyBackground)
37
- @feature_elements.each do |feature_element|
38
- visitor.visit_feature_element(feature_element)
39
- end
40
- end
41
-
42
- def indented_name
43
- indent = ""
44
- name.split("\n").map do |l|
45
- s = "#{indent}#{l}"
46
- indent = " "
47
- s
48
- end.join("\n")
49
- end
50
-
51
- def source_tags
52
- @tags.tags
53
- end
54
-
55
- def source_tag_names
56
- source_tags.map { |tag| tag.name }
57
- end
58
-
59
- def accept_hook?(hook)
60
- @tags.accept_hook?(hook)
61
- end
62
-
63
- def backtrace_line(step_name, line)
64
- "#{location.on_line(line)}:in `#{step_name}'"
65
- end
66
-
67
- def short_name
68
- first_line = name.split(/\n/)[0]
69
- if first_line =~ /#{language.keywords('feature')}:(.*)/
70
- $1.strip
71
- else
72
- first_line
73
- end
74
- end
75
-
76
- def to_sexp
77
- sexp = [:feature, file, name]
78
- comment = @comment.to_sexp
79
- sexp += [comment] if comment
80
- tags = @tags.to_sexp
81
- sexp += tags if tags.any?
82
- sexp += [@background.to_sexp] if @background
83
- sexp += @feature_elements.map{|fe| fe.to_sexp}
84
- sexp
85
- end
86
-
87
- private
88
-
89
- attr_reader :background
90
-
91
- def units
92
- @units ||= @feature_elements.map do |element|
93
- element.to_units(background)
94
- end.flatten
95
- end
96
-
97
- end
98
- end
99
- end
@@ -1,38 +0,0 @@
1
- module Cucumber
2
- module Ast
3
- class Features #:nodoc:
4
- include Enumerable
5
-
6
- attr_reader :duration
7
-
8
- def initialize
9
- @features = []
10
- end
11
-
12
- def [](index)
13
- @features[index]
14
- end
15
-
16
- def each(&proc)
17
- @features.each(&proc)
18
- end
19
-
20
- def add_feature(feature)
21
- @features << feature
22
- end
23
-
24
- def accept(visitor)
25
- return if Cucumber.wants_to_quit
26
- start = Time.now
27
- self.each do |feature|
28
- visitor.visit_feature(feature)
29
- end
30
- @duration = Time.now - start
31
- end
32
-
33
- def step_count
34
- @features.inject(0) { |total, feature| total += feature.step_count }
35
- end
36
- end
37
- end
38
- end
@@ -1,74 +0,0 @@
1
- require 'enumerator'
2
- require 'gherkin/tag_expression'
3
-
4
- module Cucumber
5
- module Ast
6
- module HasSteps #:nodoc:
7
- attr_reader :gherkin_statement, :raw_steps, :title, :description
8
- def gherkin_statement(statement=nil)
9
- @gherkin_statement ||= statement
10
- end
11
-
12
- def attach_steps(steps)
13
- steps.each do |step|
14
- step.feature_element = self
15
- end
16
- end
17
-
18
- def first_line_length
19
- name_line_lengths[0]
20
- end
21
-
22
- def text_length
23
- name_line_lengths.max
24
- end
25
-
26
- def name_line_lengths
27
- if name.strip.empty?
28
- [Ast::Step::INDENT + @keyword.unpack('U*').length + ': '.length]
29
- else
30
- name.split("\n").enum_for(:each_with_index).map do |line, line_number|
31
- if line_number == 0
32
- Ast::Step::INDENT + @keyword.unpack('U*').length + ': '.length + line.unpack('U*').length
33
- else
34
- Ast::Step::INDENT + Ast::Step::INDENT + line.unpack('U*').length
35
- end
36
- end
37
- end
38
- end
39
-
40
- def matches_scenario_names?(scenario_name_regexps)
41
- scenario_name_regexps.detect{|n| n =~ name}
42
- end
43
-
44
- def backtrace_line(step_name = "#{@keyword}: #{name}", line = self.line)
45
- "#{location.on_line(line)}:in `#{step_name}'"
46
- end
47
-
48
- def source_indent(text_length)
49
- max_line_length - text_length
50
- end
51
-
52
- def max_line_length
53
- steps.max_line_length(self)
54
- end
55
-
56
- def accept_hook?(hook)
57
- Gherkin::TagExpression.new(hook.tag_expressions).evaluate(source_tags)
58
- end
59
-
60
- def source_tag_names
61
- source_tags.map { |tag| tag.name }
62
- end
63
-
64
- def source_tags
65
- @tags.tags.to_a + feature_tags.tags.to_a
66
- end
67
-
68
- def language
69
- @language || raise("Language is required for a #{self.class}")
70
- end
71
-
72
- end
73
- end
74
- end
@@ -1,41 +0,0 @@
1
- module Cucumber
2
- module Ast
3
-
4
- class Location
5
- attr_reader :file, :line
6
-
7
- def initialize(file, line)
8
- @file = file || raise(ArgumentError, "file is mandatory")
9
- @line = line || raise(ArgumentError, "line is mandatory")
10
- end
11
-
12
- def to_s
13
- "#{file}:#{line}"
14
- end
15
-
16
- def on_line(new_line)
17
- Location.new(file, new_line)
18
- end
19
- end
20
-
21
- module HasLocation
22
- def file_colon_line
23
- location.to_s
24
- end
25
-
26
- def file
27
- location.file
28
- end
29
-
30
- def line
31
- location.line
32
- end
33
-
34
- def location
35
- raise('Please set @location in the constructor') unless @location
36
- raise("@location must be an Ast::Location but is a #{@location.class}") unless @location.is_a?(Location)
37
- @location
38
- end
39
- end
40
- end
41
- end
@@ -1,30 +0,0 @@
1
- require 'gherkin/rubify'
2
-
3
- module Cucumber
4
- module Ast
5
- module MultilineArgument
6
-
7
- class << self
8
- include Gherkin::Rubify
9
-
10
- def from(argument)
11
- return unless argument
12
- return argument if argument.respond_to?(:to_step_definition_arg)
13
-
14
- case(rubify(argument))
15
- when String
16
- # TODO: this duplicates work that gherkin does. We should really pass the string to gherkin and let it parse it.
17
- Ast::DocString.new(argument, '')
18
- when Gherkin::Formatter::Model::DocString
19
- Ast::DocString.new(argument.value, argument.content_type)
20
- when Array
21
- Ast::Table.new(argument.map{|row| row.cells})
22
- else
23
- raise ArgumentError, "Don't know how to convert #{argument} into a MultilineArgument"
24
- end
25
- end
26
-
27
- end
28
- end
29
- end
30
- end
@@ -1,13 +0,0 @@
1
- module Cucumber
2
- module Ast
3
- module Names
4
- attr_reader :title, :description
5
-
6
- def name
7
- s = @title
8
- s += "\n#{@description}" if @description != ""
9
- s
10
- end
11
- end
12
- end
13
- end