cucumber 3.0.1 → 3.2.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 (517) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +84 -4
  3. data/CONTRIBUTING.md +3 -4
  4. data/README.md +12 -12
  5. data/lib/autotest/cucumber.rb +1 -0
  6. data/lib/autotest/cucumber_mixin.rb +1 -0
  7. data/lib/autotest/cucumber_rails.rb +1 -0
  8. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  9. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  10. data/lib/autotest/cucumber_rspec.rb +1 -0
  11. data/lib/autotest/cucumber_rspec2.rb +1 -0
  12. data/lib/autotest/discover.rb +1 -0
  13. data/lib/cucumber.rb +1 -0
  14. data/lib/cucumber/cli/configuration.rb +1 -0
  15. data/lib/cucumber/cli/main.rb +2 -2
  16. data/lib/cucumber/cli/options.rb +63 -55
  17. data/lib/cucumber/cli/profile_loader.rb +5 -7
  18. data/lib/cucumber/cli/rerun_file.rb +1 -0
  19. data/lib/cucumber/configuration.rb +8 -7
  20. data/lib/cucumber/constantize.rb +6 -5
  21. data/lib/cucumber/core_ext/string.rb +1 -0
  22. data/lib/cucumber/deprecate.rb +1 -1
  23. data/lib/cucumber/encoding.rb +2 -1
  24. data/lib/cucumber/errors.rb +2 -1
  25. data/lib/cucumber/events.rb +1 -2
  26. data/lib/cucumber/events/gherkin_source_read.rb +1 -4
  27. data/lib/cucumber/events/step_activated.rb +4 -5
  28. data/lib/cucumber/events/step_definition_registered.rb +4 -8
  29. data/lib/cucumber/events/test_case_finished.rb +0 -4
  30. data/lib/cucumber/events/test_case_started.rb +0 -4
  31. data/lib/cucumber/events/test_run_finished.rb +2 -3
  32. data/lib/cucumber/events/test_run_started.rb +2 -4
  33. data/lib/cucumber/events/test_step_finished.rb +0 -6
  34. data/lib/cucumber/events/test_step_started.rb +1 -7
  35. data/lib/cucumber/file_specs.rb +2 -1
  36. data/lib/cucumber/filters.rb +1 -0
  37. data/lib/cucumber/filters/activate_steps.rb +1 -1
  38. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  39. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  40. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  41. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  42. data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
  43. data/lib/cucumber/filters/gated_receiver.rb +1 -2
  44. data/lib/cucumber/filters/prepare_world.rb +2 -5
  45. data/lib/cucumber/filters/quit.rb +2 -4
  46. data/lib/cucumber/filters/randomizer.rb +6 -7
  47. data/lib/cucumber/filters/retry.rb +2 -2
  48. data/lib/cucumber/filters/tag_limits.rb +2 -2
  49. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
  50. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
  51. data/lib/cucumber/formatter/ansicolor.rb +13 -12
  52. data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
  53. data/lib/cucumber/formatter/console.rb +11 -12
  54. data/lib/cucumber/formatter/console_counts.rb +4 -4
  55. data/lib/cucumber/formatter/console_issues.rb +3 -3
  56. data/lib/cucumber/formatter/duration.rb +1 -0
  57. data/lib/cucumber/formatter/duration_extractor.rb +1 -1
  58. data/lib/cucumber/formatter/fail_fast.rb +9 -6
  59. data/lib/cucumber/formatter/fanout.rb +1 -3
  60. data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
  61. data/lib/cucumber/formatter/html.rb +28 -32
  62. data/lib/cucumber/formatter/html_builder.rb +3 -2
  63. data/lib/cucumber/formatter/http_io.rb +146 -0
  64. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -3
  65. data/lib/cucumber/formatter/interceptor.rb +18 -5
  66. data/lib/cucumber/formatter/io.rb +18 -11
  67. data/lib/cucumber/formatter/json.rb +11 -4
  68. data/lib/cucumber/formatter/json_pretty.rb +1 -1
  69. data/lib/cucumber/formatter/junit.rb +22 -17
  70. data/lib/cucumber/formatter/pretty.rb +4 -3
  71. data/lib/cucumber/formatter/progress.rb +3 -2
  72. data/lib/cucumber/formatter/rerun.rb +2 -1
  73. data/lib/cucumber/formatter/stepdefs.rb +1 -0
  74. data/lib/cucumber/formatter/steps.rb +2 -2
  75. data/lib/cucumber/formatter/summary.rb +1 -2
  76. data/lib/cucumber/formatter/unicode.rb +2 -2
  77. data/lib/cucumber/formatter/usage.rb +22 -19
  78. data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
  79. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
  80. data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
  81. data/lib/cucumber/gherkin/i18n.rb +1 -0
  82. data/lib/cucumber/gherkin/steps_parser.rb +1 -0
  83. data/lib/cucumber/glue/dsl.rb +1 -0
  84. data/lib/cucumber/glue/hook.rb +1 -0
  85. data/lib/cucumber/glue/invoke_in_world.rb +3 -3
  86. data/lib/cucumber/glue/proto_world.rb +10 -9
  87. data/lib/cucumber/glue/registry_and_more.rb +13 -12
  88. data/lib/cucumber/glue/snippet.rb +1 -5
  89. data/lib/cucumber/glue/step_definition.rb +10 -10
  90. data/lib/cucumber/glue/world_factory.rb +1 -3
  91. data/lib/cucumber/hooks.rb +13 -3
  92. data/lib/cucumber/load_path.rb +1 -0
  93. data/lib/cucumber/multiline_argument.rb +3 -3
  94. data/lib/cucumber/multiline_argument/data_table.rb +16 -20
  95. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +7 -11
  96. data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
  97. data/lib/cucumber/platform.rb +2 -1
  98. data/lib/cucumber/project_initializer.rb +1 -1
  99. data/lib/cucumber/rake/task.rb +8 -5
  100. data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
  101. data/lib/cucumber/rspec/doubles.rb +1 -0
  102. data/lib/cucumber/running_test_case.rb +2 -1
  103. data/lib/cucumber/runtime.rb +6 -6
  104. data/lib/cucumber/runtime/after_hooks.rb +1 -0
  105. data/lib/cucumber/runtime/before_hooks.rb +1 -0
  106. data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
  107. data/lib/cucumber/runtime/step_hooks.rb +2 -0
  108. data/lib/cucumber/runtime/support_code.rb +3 -7
  109. data/lib/cucumber/runtime/user_interface.rb +2 -3
  110. data/lib/cucumber/step_argument.rb +1 -0
  111. data/lib/cucumber/step_definition_light.rb +2 -1
  112. data/lib/cucumber/step_definitions.rb +2 -1
  113. data/lib/cucumber/step_match.rb +9 -8
  114. data/lib/cucumber/step_match_search.rb +8 -9
  115. data/lib/cucumber/term/ansicolor.rb +30 -30
  116. data/lib/cucumber/unit.rb +1 -0
  117. data/lib/cucumber/version +1 -1
  118. data/lib/simplecov_setup.rb +1 -0
  119. metadata +64 -659
  120. data/.coveralls.yml +0 -1
  121. data/.cucumberproignore +0 -6
  122. data/.gitattributes +0 -32
  123. data/.github/ISSUE_TEMPLATE.md +0 -48
  124. data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
  125. data/.rspec +0 -1
  126. data/.rubocop.yml +0 -13
  127. data/.rubocop_todo.yml +0 -991
  128. data/.ruby-gemset +0 -1
  129. data/.travis.yml +0 -70
  130. data/.yardopts +0 -1
  131. data/Gemfile +0 -28
  132. data/Rakefile +0 -32
  133. data/appveyor.yml +0 -27
  134. data/cucumber.gemspec +0 -52
  135. data/cucumber.yml +0 -19
  136. data/examples/i18n/README.textile +0 -3
  137. data/examples/i18n/Rakefile +0 -33
  138. data/examples/i18n/ar/Rakefile +0 -6
  139. data/examples/i18n/ar/features/addition.feature +0 -17
  140. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
  141. data/examples/i18n/ar/lib/calculator.rb +0 -11
  142. data/examples/i18n/bg/Rakefile +0 -6
  143. data/examples/i18n/bg/features/addition.feature +0 -12
  144. data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
  145. data/examples/i18n/bg/features/division.feature +0 -17
  146. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
  147. data/examples/i18n/bg/features/support/env.rb +0 -10
  148. data/examples/i18n/bg/features/support/world.rb +0 -8
  149. data/examples/i18n/bg/lib/calculator.rb +0 -25
  150. data/examples/i18n/ca/Rakefile +0 -6
  151. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
  152. data/examples/i18n/ca/features/suma.feature +0 -17
  153. data/examples/i18n/ca/lib/calculadora.rb +0 -16
  154. data/examples/i18n/cs/Rakefile +0 -6
  155. data/examples/i18n/cs/features/addition.feature +0 -17
  156. data/examples/i18n/cs/features/division.feature +0 -11
  157. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
  158. data/examples/i18n/cs/lib/calculator.rb +0 -14
  159. data/examples/i18n/da/Rakefile +0 -6
  160. data/examples/i18n/da/features/sammenlaegning.feature +0 -18
  161. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
  162. data/examples/i18n/da/lib/lommeregner.rb +0 -11
  163. data/examples/i18n/de/Rakefile +0 -6
  164. data/examples/i18n/de/features/addition.feature +0 -17
  165. data/examples/i18n/de/features/division.feature +0 -10
  166. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
  167. data/examples/i18n/de/lib/calculator.rb +0 -14
  168. data/examples/i18n/el/Rakefile +0 -6
  169. data/examples/i18n/el/features/addition.feature +0 -17
  170. data/examples/i18n/el/features/division.feature +0 -10
  171. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
  172. data/examples/i18n/el/lib/calculator.rb +0 -14
  173. data/examples/i18n/en-lol/Rakefile +0 -4
  174. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
  175. data/examples/i18n/en-lol/features/stuffing.feature +0 -8
  176. data/examples/i18n/en-lol/features/support/env.rb +0 -11
  177. data/examples/i18n/en-lol/lib/basket.rb +0 -12
  178. data/examples/i18n/en-lol/lib/belly.rb +0 -11
  179. data/examples/i18n/en/Rakefile +0 -6
  180. data/examples/i18n/en/features/addition.feature +0 -17
  181. data/examples/i18n/en/features/division.feature +0 -10
  182. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
  183. data/examples/i18n/en/lib/calculator.rb +0 -14
  184. data/examples/i18n/eo/Rakefile +0 -6
  185. data/examples/i18n/eo/features/adicio.feature +0 -17
  186. data/examples/i18n/eo/features/divido.feature +0 -10
  187. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
  188. data/examples/i18n/eo/lib/calculator.rb +0 -14
  189. data/examples/i18n/es/Rakefile +0 -6
  190. data/examples/i18n/es/features/adicion.feature +0 -17
  191. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
  192. data/examples/i18n/es/lib/calculador.rb +0 -14
  193. data/examples/i18n/et/Rakefile +0 -6
  194. data/examples/i18n/et/features/jagamine.feature +0 -10
  195. data/examples/i18n/et/features/liitmine.feature +0 -17
  196. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
  197. data/examples/i18n/et/lib/kalkulaator.rb +0 -14
  198. data/examples/i18n/fi/Rakefile +0 -6
  199. data/examples/i18n/fi/features/jakolasku.feature +0 -10
  200. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
  201. data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
  202. data/examples/i18n/fi/lib/laskin.rb +0 -14
  203. data/examples/i18n/fr/Rakefile +0 -8
  204. data/examples/i18n/fr/features/addition.feature +0 -18
  205. data/examples/i18n/fr/features/addition2.feature +0 -17
  206. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
  207. data/examples/i18n/fr/features/support/env.rb +0 -10
  208. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  209. data/examples/i18n/he/Rakefile +0 -6
  210. data/examples/i18n/he/features/addition.feature +0 -17
  211. data/examples/i18n/he/features/division.feature +0 -10
  212. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
  213. data/examples/i18n/he/lib/calculator.rb +0 -15
  214. data/examples/i18n/hi/Rakefile +0 -6
  215. data/examples/i18n/hi/features/addition.feature +0 -16
  216. data/examples/i18n/hi/features/division.feature +0 -10
  217. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
  218. data/examples/i18n/hi/lib/calculator.rb +0 -15
  219. data/examples/i18n/ht/Rakefile +0 -6
  220. data/examples/i18n/ht/features/adisyon.feature +0 -17
  221. data/examples/i18n/ht/features/divizyon.feature +0 -10
  222. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
  223. data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
  224. data/examples/i18n/hu/Rakefile +0 -6
  225. data/examples/i18n/hu/features/osszeadas.feature +0 -17
  226. data/examples/i18n/hu/features/osztas.feature +0 -10
  227. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
  228. data/examples/i18n/hu/lib/calculator.rb +0 -14
  229. data/examples/i18n/id/Rakefile +0 -6
  230. data/examples/i18n/id/features/addition.feature +0 -17
  231. data/examples/i18n/id/features/division.feature +0 -10
  232. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
  233. data/examples/i18n/id/lib/calculator.rb +0 -14
  234. data/examples/i18n/it/Rakefile +0 -6
  235. data/examples/i18n/it/features/somma.feature +0 -11
  236. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
  237. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  238. data/examples/i18n/ja/Rakefile +0 -6
  239. data/examples/i18n/ja/features/addition.feature +0 -17
  240. data/examples/i18n/ja/features/division.feature +0 -10
  241. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
  242. data/examples/i18n/ja/features/support/env.rb +0 -10
  243. data/examples/i18n/ja/lib/calculator.rb +0 -14
  244. data/examples/i18n/ko/Rakefile +0 -6
  245. data/examples/i18n/ko/features/addition.feature +0 -17
  246. data/examples/i18n/ko/features/division.feature +0 -11
  247. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
  248. data/examples/i18n/ko/lib/calculator.rb +0 -14
  249. data/examples/i18n/lt/Rakefile +0 -6
  250. data/examples/i18n/lt/features/addition.feature +0 -17
  251. data/examples/i18n/lt/features/division.feature +0 -10
  252. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
  253. data/examples/i18n/lt/lib/calculator.rb +0 -14
  254. data/examples/i18n/lv/Rakefile +0 -6
  255. data/examples/i18n/lv/features/addition.feature +0 -17
  256. data/examples/i18n/lv/features/division.feature +0 -10
  257. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
  258. data/examples/i18n/lv/lib/calculator.rb +0 -14
  259. data/examples/i18n/no/Rakefile +0 -6
  260. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
  261. data/examples/i18n/no/features/summering.feature +0 -19
  262. data/examples/i18n/no/features/support/env.rb +0 -11
  263. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  264. data/examples/i18n/pl/Rakefile +0 -6
  265. data/examples/i18n/pl/features/addition.feature +0 -17
  266. data/examples/i18n/pl/features/division.feature +0 -10
  267. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
  268. data/examples/i18n/pl/features/support/env.rb +0 -10
  269. data/examples/i18n/pl/lib/calculator.rb +0 -14
  270. data/examples/i18n/pt/Rakefile +0 -6
  271. data/examples/i18n/pt/features/adicao.feature +0 -11
  272. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
  273. data/examples/i18n/pt/features/support/env.rb +0 -10
  274. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  275. data/examples/i18n/ro/Rakefile +0 -6
  276. data/examples/i18n/ro/features/adunare.feature +0 -12
  277. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
  278. data/examples/i18n/ro/lib/calculator.rb +0 -11
  279. data/examples/i18n/ru/Rakefile +0 -6
  280. data/examples/i18n/ru/features/addition.feature +0 -11
  281. data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
  282. data/examples/i18n/ru/features/division.feature +0 -16
  283. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
  284. data/examples/i18n/ru/features/support/env.rb +0 -10
  285. data/examples/i18n/ru/features/support/world.rb +0 -8
  286. data/examples/i18n/ru/lib/calculator.rb +0 -25
  287. data/examples/i18n/sk/Rakefile +0 -6
  288. data/examples/i18n/sk/features/addition.feature +0 -17
  289. data/examples/i18n/sk/features/division.feature +0 -10
  290. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
  291. data/examples/i18n/sk/lib/calculator.rb +0 -14
  292. data/examples/i18n/sr-Cyrl/Rakefile +0 -6
  293. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
  294. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
  295. data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
  296. data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
  297. data/examples/i18n/sr-Latn/Rakefile +0 -6
  298. data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
  299. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
  300. data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
  301. data/examples/i18n/sv/Rakefile +0 -6
  302. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
  303. data/examples/i18n/sv/features/summering.feature +0 -18
  304. data/examples/i18n/sv/lib/kalkulator.rb +0 -11
  305. data/examples/i18n/tr/Rakefile +0 -6
  306. data/examples/i18n/tr/features/bolme.feature +0 -10
  307. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
  308. data/examples/i18n/tr/features/toplama.feature +0 -18
  309. data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
  310. data/examples/i18n/uk/Rakefile +0 -6
  311. data/examples/i18n/uk/features/addition.feature +0 -11
  312. data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
  313. data/examples/i18n/uk/features/division.feature +0 -16
  314. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
  315. data/examples/i18n/uk/features/support/env.rb +0 -10
  316. data/examples/i18n/uk/features/support/world.rb +0 -8
  317. data/examples/i18n/uk/lib/calculator.rb +0 -25
  318. data/examples/i18n/uz/Rakefile +0 -6
  319. data/examples/i18n/uz/features/addition.feature +0 -10
  320. data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
  321. data/examples/i18n/uz/features/division.feature +0 -17
  322. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
  323. data/examples/i18n/uz/features/support/env.rb +0 -10
  324. data/examples/i18n/uz/features/support/world.rb +0 -8
  325. data/examples/i18n/uz/lib/calculator.rb +0 -25
  326. data/examples/i18n/zh-CN/Rakefile +0 -4
  327. data/examples/i18n/zh-CN/features/addition.feature +0 -18
  328. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
  329. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  330. data/examples/i18n/zh-TW/Rakefile +0 -4
  331. data/examples/i18n/zh-TW/features/addition.feature +0 -17
  332. data/examples/i18n/zh-TW/features/division.feature +0 -11
  333. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
  334. data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
  335. data/examples/rspec_doubles/Rakefile +0 -4
  336. data/examples/rspec_doubles/features/mocking.feature +0 -9
  337. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
  338. data/examples/rspec_doubles/features/support/env.rb +0 -12
  339. data/examples/sinatra/README.textile +0 -13
  340. data/examples/sinatra/Rakefile +0 -6
  341. data/examples/sinatra/app.rb +0 -14
  342. data/examples/sinatra/features/add.feature +0 -11
  343. data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
  344. data/examples/sinatra/features/support/env.rb +0 -15
  345. data/examples/sinatra/views/add.erb +0 -7
  346. data/examples/sinatra/views/layout.erb +0 -8
  347. data/examples/tcl/README.textile +0 -11
  348. data/examples/tcl/Rakefile +0 -6
  349. data/examples/tcl/features/fibonnacci.feature +0 -17
  350. data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
  351. data/examples/tcl/features/support/env.rb +0 -7
  352. data/examples/tcl/src/fib.tcl +0 -3
  353. data/examples/test_unit/Gemfile +0 -4
  354. data/examples/test_unit/Rakefile +0 -6
  355. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
  356. data/examples/test_unit/features/test_unit.feature +0 -9
  357. data/examples/watir/README.textile +0 -16
  358. data/examples/watir/Rakefile +0 -12
  359. data/examples/watir/cucumber.yml +0 -1
  360. data/examples/watir/features/search.feature +0 -12
  361. data/examples/watir/features/step_definitions/search_steps.rb +0 -27
  362. data/examples/watir/features/support/env.rb +0 -39
  363. data/examples/watir/features/support/screenshots.rb +0 -47
  364. data/features/docs/api/list_step_defs_as_json.feature +0 -64
  365. data/features/docs/api/listen_for_events.feature +0 -59
  366. data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
  367. data/features/docs/cli/backtraces.feature +0 -36
  368. data/features/docs/cli/dry_run.feature +0 -73
  369. data/features/docs/cli/exclude_files.feature +0 -18
  370. data/features/docs/cli/execute_with_tag_filter.feature +0 -119
  371. data/features/docs/cli/fail_fast.feature +0 -48
  372. data/features/docs/cli/finding_steps.feature +0 -28
  373. data/features/docs/cli/help.feature +0 -8
  374. data/features/docs/cli/i18n.feature +0 -42
  375. data/features/docs/cli/randomize.feature +0 -140
  376. data/features/docs/cli/require.feature +0 -27
  377. data/features/docs/cli/retry_failing_tests.feature +0 -92
  378. data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
  379. data/features/docs/cli/run_specific_scenarios.feature +0 -77
  380. data/features/docs/cli/showing_differences.feature +0 -43
  381. data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
  382. data/features/docs/cli/strict_mode.feature +0 -70
  383. data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
  384. data/features/docs/defining_steps/nested_steps.feature +0 -181
  385. data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
  386. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
  387. data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
  388. data/features/docs/defining_steps/printing_messages.feature +0 -147
  389. data/features/docs/defining_steps/skip_scenario.feature +0 -31
  390. data/features/docs/defining_steps/snippets.feature +0 -56
  391. data/features/docs/defining_steps/table_diffing.feature +0 -50
  392. data/features/docs/events/gherkin_source_read_event.feature +0 -43
  393. data/features/docs/events/step_activated_event.feature +0 -36
  394. data/features/docs/events/step_definition_registered_event.feature +0 -29
  395. data/features/docs/events/test_case_finished_event.feature +0 -35
  396. data/features/docs/events/test_case_started_event.feature +0 -54
  397. data/features/docs/events/test_run_finished_event.feature +0 -40
  398. data/features/docs/events/test_run_started_event.feature +0 -41
  399. data/features/docs/events/test_step_finished_event.feature +0 -47
  400. data/features/docs/events/test_step_started_event.feature +0 -43
  401. data/features/docs/exception_in_after_hook.feature +0 -127
  402. data/features/docs/exception_in_after_step_hook.feature +0 -104
  403. data/features/docs/exception_in_around_hook.feature +0 -80
  404. data/features/docs/exception_in_before_hook.feature +0 -98
  405. data/features/docs/extending_cucumber/custom_filter.feature +0 -29
  406. data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
  407. data/features/docs/formatters/api_methods.feature +0 -37
  408. data/features/docs/formatters/html_formatter.feature +0 -91
  409. data/features/docs/formatters/json_formatter.feature +0 -767
  410. data/features/docs/formatters/junit_formatter.feature +0 -455
  411. data/features/docs/formatters/pretty_formatter.feature +0 -74
  412. data/features/docs/formatters/progress_formatter.feature +0 -32
  413. data/features/docs/formatters/rerun_formatter.feature +0 -190
  414. data/features/docs/formatters/summary_formatter.feature +0 -35
  415. data/features/docs/formatters/usage_formatter.feature +0 -101
  416. data/features/docs/getting_started.feature +0 -28
  417. data/features/docs/gherkin/background.feature +0 -548
  418. data/features/docs/gherkin/doc_strings.feature +0 -76
  419. data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
  420. data/features/docs/gherkin/language_from_header.feature +0 -32
  421. data/features/docs/gherkin/outlines.feature +0 -158
  422. data/features/docs/gherkin/unicode_table.feature +0 -33
  423. data/features/docs/gherkin/using_descriptions.feature +0 -83
  424. data/features/docs/gherkin/using_star_notation.feature +0 -37
  425. data/features/docs/iso-8859-1.feature +0 -6
  426. data/features/docs/post_configuration_hook.feature +0 -33
  427. data/features/docs/profiles.feature +0 -120
  428. data/features/docs/rake_task.feature +0 -146
  429. data/features/docs/raketask.feature +0 -46
  430. data/features/docs/work_in_progress.feature +0 -157
  431. data/features/docs/writing_support_code/after_hooks.feature +0 -102
  432. data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
  433. data/features/docs/writing_support_code/around_hooks.feature +0 -266
  434. data/features/docs/writing_support_code/before_hook.feature +0 -66
  435. data/features/docs/writing_support_code/hook_order.feature +0 -63
  436. data/features/docs/writing_support_code/load_path.feature +0 -17
  437. data/features/docs/writing_support_code/parameter_types.feature +0 -69
  438. data/features/docs/writing_support_code/state.feature +0 -32
  439. data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
  440. data/features/docs/writing_support_code/world.feature +0 -129
  441. data/features/lib/step_definitions/aruba_steps.rb +0 -21
  442. data/features/lib/step_definitions/cli_steps.rb +0 -4
  443. data/features/lib/step_definitions/cucumber_steps.rb +0 -75
  444. data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
  445. data/features/lib/step_definitions/json_steps.rb +0 -8
  446. data/features/lib/step_definitions/junit_steps.rb +0 -14
  447. data/features/lib/step_definitions/language_steps.rb +0 -9
  448. data/features/lib/step_definitions/profile_steps.rb +0 -16
  449. data/features/lib/step_definitions/retry_steps.rb +0 -55
  450. data/features/lib/step_definitions/ruby_steps.rb +0 -4
  451. data/features/lib/support/env.rb +0 -22
  452. data/features/lib/support/fake_wire_server.rb +0 -94
  453. data/features/lib/support/feature_factory.rb +0 -68
  454. data/features/lib/support/normalise_output.rb +0 -52
  455. data/features/lib/support/parameter_types.rb +0 -5
  456. data/gem_tasks/contributors.rake +0 -19
  457. data/gem_tasks/cov.rake +0 -6
  458. data/gem_tasks/downloads.rb +0 -8
  459. data/gem_tasks/environment.rake +0 -4
  460. data/gem_tasks/examples.rake +0 -12
  461. data/gem_tasks/fix_cr_lf.rake +0 -22
  462. data/gem_tasks/flog.rake +0 -5
  463. data/gem_tasks/rspec.rake +0 -7
  464. data/gem_tasks/sass.rake +0 -5
  465. data/gem_tasks/stats +0 -16
  466. data/gem_tasks/versions.txt +0 -74
  467. data/scripts/invite-collaborator +0 -40
  468. data/scripts/update-changelog +0 -86
  469. data/spec/cucumber/cli/configuration_spec.rb +0 -446
  470. data/spec/cucumber/cli/main_spec.rb +0 -84
  471. data/spec/cucumber/cli/options_spec.rb +0 -445
  472. data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
  473. data/spec/cucumber/cli/rerun_spec.rb +0 -86
  474. data/spec/cucumber/configuration_spec.rb +0 -148
  475. data/spec/cucumber/constantize_spec.rb +0 -20
  476. data/spec/cucumber/events_spec.rb +0 -9
  477. data/spec/cucumber/file_specs_spec.rb +0 -61
  478. data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
  479. data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
  480. data/spec/cucumber/filters/retry_spec.rb +0 -98
  481. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
  482. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
  483. data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
  484. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
  485. data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
  486. data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
  487. data/spec/cucumber/formatter/duration_spec.rb +0 -23
  488. data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
  489. data/spec/cucumber/formatter/html_spec.rb +0 -543
  490. data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
  491. data/spec/cucumber/formatter/json_spec.rb +0 -815
  492. data/spec/cucumber/formatter/junit_spec.rb +0 -251
  493. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
  494. data/spec/cucumber/formatter/pretty_spec.rb +0 -907
  495. data/spec/cucumber/formatter/progress_spec.rb +0 -170
  496. data/spec/cucumber/formatter/rerun_spec.rb +0 -97
  497. data/spec/cucumber/formatter/spec_helper.rb +0 -84
  498. data/spec/cucumber/glue/proto_world_spec.rb +0 -63
  499. data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
  500. data/spec/cucumber/glue/snippet_spec.rb +0 -174
  501. data/spec/cucumber/glue/step_definition_spec.rb +0 -207
  502. data/spec/cucumber/hooks_spec.rb +0 -31
  503. data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
  504. data/spec/cucumber/project_initializer_spec.rb +0 -88
  505. data/spec/cucumber/rake/forked_spec.rb +0 -58
  506. data/spec/cucumber/rake/task_spec.rb +0 -86
  507. data/spec/cucumber/running_test_case_spec.rb +0 -140
  508. data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
  509. data/spec/cucumber/runtime/support_code_spec.rb +0 -17
  510. data/spec/cucumber/runtime_spec.rb +0 -21
  511. data/spec/cucumber/sell_cucumbers.feature +0 -19
  512. data/spec/cucumber/step_argument_spec.rb +0 -19
  513. data/spec/cucumber/step_match_search_spec.rb +0 -113
  514. data/spec/cucumber/step_match_spec.rb +0 -86
  515. data/spec/cucumber/world/pending_spec.rb +0 -48
  516. data/spec/spec_helper.rb +0 -30
  517. data/spec/support/standard_step_actions.rb +0 -19
@@ -1,29 +0,0 @@
1
- Feature: Custom filter
2
-
3
- Scenario: Add a custom filter via AfterConfiguration hook
4
- Given a file named "features/test.feature" with:
5
- """
6
- Feature:
7
- Scenario:
8
- Given my special step
9
- """
10
- And a file named "features/support/my_filter.rb" with:
11
- """
12
- require 'cucumber/core/filter'
13
-
14
- MakeAnythingPass = Cucumber::Core::Filter.new do
15
- def test_case(test_case)
16
- activated_steps = test_case.test_steps.map do |test_step|
17
- test_step.with_action { }
18
- end
19
- test_case.with_steps(activated_steps).describe_to receiver
20
- end
21
- end
22
-
23
- AfterConfiguration do |config|
24
- config.filters << MakeAnythingPass.new
25
- end
26
- """
27
- When I run `cucumber --strict`
28
- Then it should pass
29
-
@@ -1,94 +0,0 @@
1
- Feature: Custom Formatter
2
-
3
- Background:
4
- Given a file named "features/f.feature" with:
5
- """
6
- Feature: I'll use my own
7
- Scenario: Just print me
8
- Given this step passes
9
- """
10
- And the standard step definitions
11
-
12
- Scenario: Subscribe to result events
13
-
14
- This is the recommended way to format output.
15
-
16
- Given a file named "features/support/custom_formatter.rb" with:
17
- """
18
- module MyCustom
19
- class Formatter
20
- def initialize(config)
21
- @io = config.out_stream
22
- config.on_event :test_case_started do |event|
23
- print_test_case_name(event.test_case)
24
- end
25
- end
26
-
27
- def print_test_case_name(test_case)
28
- feature = test_case.source.first
29
- scenario = test_case.source.last
30
- @io.puts feature.short_name.upcase
31
- @io.puts " #{scenario.name.upcase}"
32
- end
33
- end
34
- end
35
- """
36
- When I run `cucumber features/f.feature --format MyCustom::Formatter`
37
- Then it should pass with exactly:
38
- """
39
- I'LL USE MY OWN
40
- JUST PRINT ME
41
-
42
- """
43
-
44
- Scenario: Pass custom config to your formatter from the CLI
45
- Given a file named "features/support/custom_formatter.rb" with:
46
- """
47
- module MyCustom
48
- class Formatter
49
- def initialize(config, options)
50
- @io = config.out_stream
51
- config.on_event :test_run_finished do |event|
52
- @io.print options.inspect
53
- end
54
- end
55
- end
56
- end
57
- """
58
- When I run `cucumber features/f.feature --format MyCustom::Formatter,foo=bar,one=two`
59
- Then it should pass with exactly:
60
- """
61
- {"foo"=>"bar", "one"=>"two"}
62
- """
63
-
64
- Scenario: Use the legacy API
65
- This is deprecated and should no longer be used.
66
-
67
- Given a file named "features/support/custom_legacy_formatter.rb" with:
68
- """
69
- module MyCustom
70
- class LegacyFormatter
71
- def initialize(runtime, io, options)
72
- @io = io
73
- end
74
-
75
- def before_feature(feature)
76
- @io.puts feature.short_name.upcase
77
- end
78
-
79
- def scenario_name(keyword, name, file_colon_line, source_indent)
80
- @io.puts " #{name.upcase}"
81
- end
82
- end
83
- end
84
- """
85
- When I run `cucumber features/f.feature --format MyCustom::LegacyFormatter`
86
- Then it should pass with exactly:
87
- """
88
- WARNING: The formatter MyCustom::LegacyFormatter is using the deprecated formatter API which will be removed in v4.0 of Cucumber.
89
-
90
- I'LL USE MY OWN
91
- JUST PRINT ME
92
-
93
- """
94
-
@@ -1,37 +0,0 @@
1
- Feature: Formatter API methods
2
-
3
- Some utility methods are provided to make it easier to write your own formatters.
4
-
5
- Here are some examples.
6
-
7
- Scenario: A formatter that uses `Cucumber::Formatter::Io#ensure_file`
8
-
9
- The ensure_file method is a little helper function that some formatters use,
10
- normally when given a CLI argument with `--out` to check that the file passed
11
- by the user actually exists.
12
-
13
- The second argument is the name of the formatter, used to print a useful
14
- error message if the file can't be created for some reason.
15
-
16
- Given a file named "features/f.feature" with:
17
- """
18
- Feature: Test
19
- Scenario: Test
20
- """
21
- And a directory named "my/special"
22
- And a file named "features/support/custom_formatter.rb" with:
23
- """
24
- require 'cucumber/formatter/io'
25
- module Cucumber
26
- module Formatter
27
- class Test
28
- include Io
29
- def initialize(runtime, path_or_io, options)
30
- ensure_file("my/special/output.file", "custom formatter")
31
- end
32
- end
33
- end
34
- end
35
- """
36
- When I run `cucumber features/f.feature --format Cucumber::Formatter::Test`
37
- Then it should pass
@@ -1,91 +0,0 @@
1
- Feature: HTML output formatter
2
-
3
- Background:
4
- Given the standard step definitions
5
- And a file named "features/scenario_outline_with_undefined_steps.feature" with:
6
- """
7
- Feature:
8
-
9
- Scenario Outline:
10
- Given this step is undefined
11
-
12
- Examples:
13
- |foo|
14
- |bar|
15
- """
16
- And a file named "features/scenario_outline_with_pending_step.feature" with:
17
- """
18
- Feature: Outline
19
-
20
- Scenario Outline: Will it blend?
21
- Given this step is pending
22
- And other step
23
- When I do something with <example>
24
- Then I should see something
25
- Examples:
26
- | example |
27
- | one |
28
- | two |
29
- | three |
30
- """
31
- And a file named "features/failing_background_step.feature" with:
32
- """
33
- Feature: Feature with failing background step
34
-
35
- Background:
36
- Given this step fails
37
-
38
- Scenario:
39
- When I do something
40
- Then I should see something
41
- """
42
-
43
- Scenario: an scenario outline, one undefined step, one random example, expand flag on
44
- When I run `cucumber features/scenario_outline_with_undefined_steps.feature --format html --expand `
45
- Then it should pass
46
-
47
- Scenario Outline: an scenario outline, one pending step
48
- When I run `cucumber <file> --format html <flag>`
49
- Then it should pass
50
- And the output should contain:
51
- """
52
- makeYellow('scenario_1')
53
- """
54
- And the output should not contain:
55
- """
56
- makeRed('scenario_1')
57
- """
58
-
59
- Examples:
60
- | file | flag |
61
- | features/scenario_outline_with_pending_step.feature | --expand |
62
- | features/scenario_outline_with_pending_step.feature | |
63
-
64
- Examples:
65
- | file | flag |
66
- | features/scenario_outline_with_undefined_steps.feature | --expand |
67
- | features/scenario_outline_with_undefined_steps.feature | |
68
-
69
- Scenario: when using a profile the html shouldn't include 'Using the default profile...'
70
- And a file named "cucumber.yml" with:
71
- """
72
- default: -r features
73
- """
74
- When I run `cucumber features/scenario_outline_with_undefined_steps.feature --profile default --format html`
75
- Then it should pass
76
- And the output should not contain:
77
- """
78
- Using the default profile...
79
- """
80
-
81
- Scenario: a feature with a failing background step
82
- When I run `cucumber features/failing_background_step.feature --format html`
83
- Then the output should not contain:
84
- """
85
- makeRed('scenario_0')
86
- """
87
- And the output should contain:
88
- """
89
- makeRed('background_0')
90
- """
91
-
@@ -1,767 +0,0 @@
1
- Feature: JSON output formatter
2
- In order to simplify processing of Cucumber features and results
3
- Developers should be able to consume features as JSON
4
-
5
- Background:
6
- Given the standard step definitions
7
- And a file named "features/one_passing_one_failing.feature" with:
8
- """
9
- @a
10
- Feature: One passing scenario, one failing scenario
11
-
12
- @b
13
- Scenario: Passing
14
- Given this step passes
15
-
16
- @c
17
- Scenario: Failing
18
- Given this step fails
19
- """
20
- And a file named "features/step_definitions/json_steps.rb" with:
21
- """
22
- Given /^I embed a screenshot/ do
23
- File.open("screenshot.png", "w") { |file| file << "foo" }
24
- embed "screenshot.png", "image/png"
25
- end
26
-
27
- Given /^I print from step definition/ do
28
- puts "from step definition"
29
- end
30
-
31
- Given /^I embed data directly/ do
32
- data = "YWJj"
33
- embed data, "mime-type;base64"
34
- end
35
- """
36
- And a file named "features/embed.feature" with:
37
- """
38
- Feature: A screenshot feature
39
-
40
- Scenario:
41
- Given I embed a screenshot
42
-
43
- """
44
- And a file named "features/outline.feature" with:
45
- """
46
- Feature: An outline feature
47
-
48
- Scenario Outline: outline
49
- Given this step <status>
50
-
51
- Examples: examples1
52
- | status |
53
- | passes |
54
- | fails |
55
-
56
- Examples: examples2
57
- | status |
58
- | passes |
59
- """
60
- And a file named "features/print_from_step_definition.feature" with:
61
- """
62
- Feature: A print from step definition feature
63
-
64
- Scenario:
65
- Given I print from step definition
66
- And I print from step definition
67
-
68
- """
69
- And a file named "features/print_from_step_definition.feature" with:
70
- """
71
- Feature: A print from step definition feature
72
-
73
- Scenario:
74
- Given I print from step definition
75
- And I print from step definition
76
-
77
- """
78
- And a file named "features/embed_data_directly.feature" with:
79
- """
80
- Feature: An embed data directly feature
81
-
82
- Scenario:
83
- Given I embed data directly
84
-
85
- Scenario Outline:
86
- Given I embed data directly
87
-
88
- Examples:
89
- | dummy |
90
- | 1 |
91
- | 2 |
92
-
93
- """
94
- And a file named "features/out_scenario_out_scenario_outline.feature" with:
95
- """
96
- Feature:
97
- Scenario:
98
- Given this step passes
99
- Scenario Outline:
100
- Given this step <status>
101
- Examples:
102
- | status |
103
- | passes |
104
- """
105
-
106
- # Need to investigate why this won't pass in-process. error_message doesn't get det?
107
- @spawn @todo-windows
108
- Scenario: one feature, one passing scenario, one failing scenario
109
- When I run `cucumber --format json features/one_passing_one_failing.feature`
110
- Then it should fail with JSON:
111
- """
112
- [
113
- {
114
- "uri": "features/one_passing_one_failing.feature",
115
- "keyword": "Feature",
116
- "id": "one-passing-scenario,-one-failing-scenario",
117
- "name": "One passing scenario, one failing scenario",
118
- "line": 2,
119
- "description": "",
120
- "tags": [
121
- {
122
- "name": "@a",
123
- "line": 1
124
- }
125
- ],
126
- "elements": [
127
- {
128
- "keyword": "Scenario",
129
- "id": "one-passing-scenario,-one-failing-scenario;passing",
130
- "name": "Passing",
131
- "line": 5,
132
- "description": "",
133
- "tags": [
134
- {
135
- "name": "@a",
136
- "line": 1
137
- },
138
- {
139
- "name": "@b",
140
- "line": 4
141
- }
142
- ],
143
- "type": "scenario",
144
- "steps": [
145
- {
146
- "keyword": "Given ",
147
- "name": "this step passes",
148
- "line": 6,
149
- "match": {
150
- "location": "features/step_definitions/steps.rb:1"
151
- },
152
- "result": {
153
- "status": "passed",
154
- "duration": 1
155
- }
156
- }
157
- ]
158
- },
159
- {
160
- "keyword": "Scenario",
161
- "id": "one-passing-scenario,-one-failing-scenario;failing",
162
- "name": "Failing",
163
- "line": 9,
164
- "description": "",
165
- "tags": [
166
- {
167
- "name": "@a",
168
- "line": 1
169
- },
170
- {
171
- "name": "@c",
172
- "line": 8
173
- }
174
- ],
175
- "type": "scenario",
176
- "steps": [
177
- {
178
- "keyword": "Given ",
179
- "name": "this step fails",
180
- "line": 10,
181
- "match": {
182
- "location": "features/step_definitions/steps.rb:4"
183
- },
184
- "result": {
185
- "status": "failed",
186
- "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/one_passing_one_failing.feature:10:in `Given this step fails'",
187
- "duration": 1
188
- }
189
- }
190
- ]
191
- }
192
- ]
193
- }
194
- ]
195
-
196
- """
197
-
198
- @spawn @todo-windows
199
- Scenario: one feature, one passing scenario, one failing scenario with prettyfied json
200
- When I run `cucumber --format json_pretty features/one_passing_one_failing.feature`
201
- Then it should fail with JSON:
202
- """
203
- [
204
- {
205
- "uri": "features/one_passing_one_failing.feature",
206
- "keyword": "Feature",
207
- "id": "one-passing-scenario,-one-failing-scenario",
208
- "name": "One passing scenario, one failing scenario",
209
- "line": 2,
210
- "description": "",
211
- "tags": [
212
- {
213
- "name": "@a",
214
- "line": 1
215
- }
216
- ],
217
- "elements": [
218
- {
219
- "keyword": "Scenario",
220
- "id": "one-passing-scenario,-one-failing-scenario;passing",
221
- "name": "Passing",
222
- "line": 5,
223
- "description": "",
224
- "tags": [
225
- {
226
- "name": "@a",
227
- "line": 1
228
- },
229
- {
230
- "name": "@b",
231
- "line": 4
232
- }
233
- ],
234
- "type": "scenario",
235
- "steps": [
236
- {
237
- "keyword": "Given ",
238
- "name": "this step passes",
239
- "line": 6,
240
- "match": {
241
- "location": "features/step_definitions/steps.rb:1"
242
- },
243
- "result": {
244
- "status": "passed",
245
- "duration": 1
246
- }
247
- }
248
- ]
249
- },
250
- {
251
- "keyword": "Scenario",
252
- "id": "one-passing-scenario,-one-failing-scenario;failing",
253
- "name": "Failing",
254
- "line": 9,
255
- "description": "",
256
- "tags": [
257
- {
258
- "name": "@a",
259
- "line": 1
260
- },
261
- {
262
- "name": "@c",
263
- "line": 8
264
- }
265
- ],
266
- "type": "scenario",
267
- "steps": [
268
- {
269
- "keyword": "Given ",
270
- "name": "this step fails",
271
- "line": 10,
272
- "match": {
273
- "location": "features/step_definitions/steps.rb:4"
274
- },
275
- "result": {
276
- "status": "failed",
277
- "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/one_passing_one_failing.feature:10:in `Given this step fails'",
278
- "duration": 1
279
- }
280
- }
281
- ]
282
- }
283
- ]
284
- }
285
- ]
286
-
287
- """
288
-
289
- Scenario: DocString
290
- Given a file named "features/doc_string.feature" with:
291
- """
292
- Feature: A DocString feature
293
-
294
- Scenario:
295
- Then I should fail with
296
- \"\"\"
297
- a string
298
- \"\"\"
299
- """
300
- And a file named "features/step_definitions/steps.rb" with:
301
- """
302
- Then /I should fail with/ do |s|
303
- raise RuntimeError, s
304
- end
305
- """
306
- When I run `cucumber --format json features/doc_string.feature`
307
- Then it should fail with JSON:
308
- """
309
- [
310
- {
311
- "id": "a-docstring-feature",
312
- "uri": "features/doc_string.feature",
313
- "keyword": "Feature",
314
- "name": "A DocString feature",
315
- "line": 1,
316
- "description": "",
317
- "elements": [
318
- {
319
- "id": "a-docstring-feature;",
320
- "keyword": "Scenario",
321
- "name": "",
322
- "line": 3,
323
- "description": "",
324
- "type": "scenario",
325
- "steps": [
326
- {
327
- "keyword": "Then ",
328
- "name": "I should fail with",
329
- "line": 4,
330
- "doc_string": {
331
- "content_type": "",
332
- "value": "a string",
333
- "line": 5
334
- },
335
- "match": {
336
- "location": "features/step_definitions/steps.rb:1"
337
- },
338
- "result": {
339
- "status": "failed",
340
- "error_message": "a string (RuntimeError)\n./features/step_definitions/steps.rb:2:in `/I should fail with/'\nfeatures/doc_string.feature:4:in `Then I should fail with'",
341
- "duration": 1
342
- }
343
- }
344
- ]
345
- }
346
- ]
347
- }
348
- ]
349
- """
350
-
351
- Scenario: embedding screenshot
352
- When I run `cucumber --format json features/embed.feature`
353
- Then it should pass with JSON:
354
- """
355
- [
356
- {
357
- "uri": "features/embed.feature",
358
- "id": "a-screenshot-feature",
359
- "keyword": "Feature",
360
- "name": "A screenshot feature",
361
- "line": 1,
362
- "description": "",
363
- "elements": [
364
- {
365
- "id": "a-screenshot-feature;",
366
- "keyword": "Scenario",
367
- "name": "",
368
- "line": 3,
369
- "description": "",
370
- "type": "scenario",
371
- "steps": [
372
- {
373
- "keyword": "Given ",
374
- "name": "I embed a screenshot",
375
- "line": 4,
376
- "embeddings": [
377
- {
378
- "mime_type": "image/png",
379
- "data": "Zm9v"
380
- }
381
- ],
382
- "match": {
383
- "location": "features/step_definitions/json_steps.rb:1"
384
- },
385
- "result": {
386
- "status": "passed",
387
- "duration": 1
388
- }
389
- }
390
- ]
391
- }
392
- ]
393
- }
394
- ]
395
-
396
- """
397
-
398
- @spawn @todo-windows
399
- Scenario: scenario outline
400
- When I run `cucumber --format json features/outline.feature`
401
- Then it should fail with JSON:
402
- """
403
- [
404
- {
405
- "uri": "features/outline.feature",
406
- "id": "an-outline-feature",
407
- "keyword": "Feature",
408
- "name": "An outline feature",
409
- "line": 1,
410
- "description": "",
411
- "elements": [
412
- {
413
- "id": "an-outline-feature;outline;examples1;2",
414
- "keyword": "Scenario Outline",
415
- "name": "outline",
416
- "description": "",
417
- "line": 8,
418
- "type": "scenario",
419
- "steps": [
420
- {
421
- "keyword": "Given ",
422
- "name": "this step passes",
423
- "line": 8,
424
- "match": {
425
- "location": "features/step_definitions/steps.rb:1"
426
- },
427
- "result": {
428
- "status": "passed",
429
- "duration": 1
430
- }
431
- }
432
- ]
433
- },
434
- {
435
- "id": "an-outline-feature;outline;examples1;3",
436
- "keyword": "Scenario Outline",
437
- "name": "outline",
438
- "description": "",
439
- "line": 9,
440
- "type": "scenario",
441
- "steps": [
442
- {
443
- "keyword": "Given ",
444
- "name": "this step fails",
445
- "line": 9,
446
- "match": {
447
- "location": "features/step_definitions/steps.rb:4"
448
- },
449
- "result": {
450
- "status": "failed",
451
- "error_message": " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/outline.feature:9:in `Given this step fails'\nfeatures/outline.feature:4:in `Given this step <status>'",
452
- "duration": 1
453
- }
454
- }
455
- ]
456
- },
457
- {
458
- "id": "an-outline-feature;outline;examples2;2",
459
- "keyword": "Scenario Outline",
460
- "name": "outline",
461
- "description": "",
462
- "line": 13,
463
- "type": "scenario",
464
- "steps": [
465
- {
466
- "keyword": "Given ",
467
- "name": "this step passes",
468
- "line": 13,
469
- "match": {
470
- "location": "features/step_definitions/steps.rb:1"
471
- },
472
- "result": {
473
- "status": "passed",
474
- "duration": 1
475
- }
476
- }
477
- ]
478
- }
479
- ]
480
- }
481
- ]
482
-
483
- """
484
-
485
- Scenario: print from step definition
486
- When I run `cucumber --format json features/print_from_step_definition.feature`
487
- Then it should pass with JSON:
488
- """
489
- [
490
- {
491
- "uri": "features/print_from_step_definition.feature",
492
- "id": "a-print-from-step-definition-feature",
493
- "keyword": "Feature",
494
- "name": "A print from step definition feature",
495
- "line": 1,
496
- "description": "",
497
- "elements": [
498
- {
499
- "id": "a-print-from-step-definition-feature;",
500
- "keyword": "Scenario",
501
- "name": "",
502
- "line": 3,
503
- "description": "",
504
- "type": "scenario",
505
- "steps": [
506
- {
507
- "keyword": "Given ",
508
- "name": "I print from step definition",
509
- "line": 4,
510
- "output": [
511
- "from step definition"
512
- ],
513
- "match": {
514
- "location": "features/step_definitions/json_steps.rb:6"
515
- },
516
- "result": {
517
- "status": "passed",
518
- "duration": 1
519
- }
520
- },
521
- {
522
- "keyword": "And ",
523
- "name": "I print from step definition",
524
- "line": 5,
525
- "output": [
526
- "from step definition"
527
- ],
528
- "match": {
529
- "location": "features/step_definitions/json_steps.rb:6"
530
- },
531
- "result": {
532
- "status": "passed",
533
- "duration": 1
534
- }
535
- }
536
- ]
537
- }
538
- ]
539
- }
540
- ]
541
-
542
- """
543
-
544
- @spawn @todo-windows
545
- Scenario: scenario outline expanded
546
- When I run `cucumber --expand --format json features/outline.feature`
547
- Then it should fail with JSON:
548
- """
549
- [
550
- {
551
- "uri": "features/outline.feature",
552
- "id": "an-outline-feature",
553
- "keyword": "Feature",
554
- "name": "An outline feature",
555
- "line": 1,
556
- "description": "",
557
- "elements": [
558
- {
559
- "id": "an-outline-feature;outline;examples1;2",
560
- "keyword": "Scenario Outline",
561
- "name": "outline",
562
- "line": 8,
563
- "description": "",
564
- "type": "scenario",
565
- "steps": [
566
- {
567
- "keyword": "Given ",
568
- "name": "this step passes",
569
- "line": 8,
570
- "match": {
571
- "location": "features/step_definitions/steps.rb:1"
572
- },
573
- "result": {
574
- "status": "passed",
575
- "duration": 1
576
- }
577
- }
578
- ]
579
- },
580
- {
581
- "id": "an-outline-feature;outline;examples1;3",
582
- "keyword": "Scenario Outline",
583
- "name": "outline",
584
- "line": 9,
585
- "description": "",
586
- "type": "scenario",
587
- "steps": [
588
- {
589
- "keyword": "Given ",
590
- "name": "this step fails",
591
- "line": 9,
592
- "match": {
593
- "location": "features/step_definitions/steps.rb:4"
594
- },
595
- "result": {
596
- "status": "failed",
597
- "error_message" : " (RuntimeError)\n./features/step_definitions/steps.rb:4:in `/^this step fails$/'\nfeatures/outline.feature:9:in `Given this step fails'\nfeatures/outline.feature:4:in `Given this step <status>'",
598
- "duration": 1
599
- }
600
- }
601
- ]
602
- },
603
- {
604
- "id": "an-outline-feature;outline;examples2;2",
605
- "keyword": "Scenario Outline",
606
- "name": "outline",
607
- "line": 13,
608
- "description": "",
609
- "type": "scenario",
610
- "steps": [
611
- {
612
- "keyword": "Given ",
613
- "name": "this step passes",
614
- "line": 13,
615
- "match": {
616
- "location": "features/step_definitions/steps.rb:1"
617
- },
618
- "result": {
619
- "status": "passed",
620
- "duration": 1
621
- }
622
- }
623
- ]
624
- }
625
- ]
626
- }
627
- ]
628
-
629
- """
630
-
631
- Scenario: embedding data directly
632
- When I run `cucumber --format json -x features/embed_data_directly.feature`
633
- Then it should pass with JSON:
634
- """
635
- [
636
- {
637
- "uri": "features/embed_data_directly.feature",
638
- "id": "an-embed-data-directly-feature",
639
- "keyword": "Feature",
640
- "name": "An embed data directly feature",
641
- "line": 1,
642
- "description": "",
643
- "elements": [
644
- {
645
- "id": "an-embed-data-directly-feature;",
646
- "keyword": "Scenario",
647
- "name": "",
648
- "line": 3,
649
- "description": "",
650
- "type": "scenario",
651
- "steps": [
652
- {
653
- "keyword": "Given ",
654
- "name": "I embed data directly",
655
- "line": 4,
656
- "embeddings": [
657
- {
658
- "mime_type": "mime-type",
659
- "data": "YWJj"
660
- }
661
- ],
662
- "match": {
663
- "location": "features/step_definitions/json_steps.rb:10"
664
- },
665
- "result": {
666
- "status": "passed",
667
- "duration": 1
668
- }
669
- }
670
- ]
671
- },
672
- {
673
- "keyword": "Scenario Outline",
674
- "name": "",
675
- "line": 11,
676
- "description": "",
677
- "id": "an-embed-data-directly-feature;;;2",
678
- "type": "scenario",
679
- "steps": [
680
- {
681
- "keyword": "Given ",
682
- "name": "I embed data directly",
683
- "line": 11,
684
- "embeddings": [
685
- {
686
- "mime_type": "mime-type",
687
- "data": "YWJj"
688
- }
689
- ],
690
- "match": {
691
- "location": "features/step_definitions/json_steps.rb:10"
692
- },
693
- "result": {
694
- "status": "passed",
695
- "duration": 1
696
- }
697
- }
698
- ]
699
- },
700
- {
701
- "keyword": "Scenario Outline",
702
- "name": "",
703
- "line": 12,
704
- "description": "",
705
- "id": "an-embed-data-directly-feature;;;3",
706
- "type": "scenario",
707
- "steps": [
708
- {
709
- "keyword": "Given ",
710
- "name": "I embed data directly",
711
- "line": 12,
712
- "embeddings": [
713
- {
714
- "mime_type": "mime-type",
715
- "data": "YWJj"
716
- }
717
- ],
718
- "match": {
719
- "location": "features/step_definitions/json_steps.rb:10"
720
- },
721
- "result": {
722
- "status": "passed",
723
- "duration": 1
724
- }
725
- }
726
- ]
727
- }
728
- ]
729
- }
730
- ]
731
-
732
- """
733
- Scenario: handle output from hooks
734
- Given a file named "features/step_definitions/output_steps.rb" with:
735
- """
736
- Before do
737
- puts "Before hook 1"
738
- embed "src", "mime_type", "label"
739
- end
740
-
741
- Before do
742
- puts "Before hook 2"
743
- embed "src", "mime_type", "label"
744
- end
745
-
746
- AfterStep do
747
- puts "AfterStep hook 1"
748
- embed "src", "mime_type", "label"
749
- end
750
-
751
- AfterStep do
752
- puts "AfterStep hook 2"
753
- embed "src", "mime_type", "label"
754
- end
755
-
756
- After do
757
- puts "After hook 1"
758
- embed "src", "mime_type", "label"
759
- end
760
-
761
- After do
762
- puts "After hook 2"
763
- embed "src", "mime_type", "label"
764
- end
765
- """
766
- When I run `cucumber --format json features/out_scenario_out_scenario_outline.feature`
767
- Then it should pass