cucumber 3.0.0.pre.2 → 4.0.0.rc.5

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 (541) hide show
  1. checksums.yaml +5 -5
  2. data/{History.md → CHANGELOG.md} +267 -14
  3. data/CONTRIBUTING.md +4 -21
  4. data/README.md +14 -15
  5. data/bin/cucumber +2 -1
  6. data/lib/autotest/cucumber.rb +1 -0
  7. data/lib/autotest/cucumber_mixin.rb +36 -40
  8. data/lib/autotest/cucumber_rails.rb +1 -0
  9. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  10. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  11. data/lib/autotest/cucumber_rspec.rb +1 -0
  12. data/lib/autotest/cucumber_rspec2.rb +1 -0
  13. data/lib/autotest/discover.rb +1 -0
  14. data/lib/cucumber.rb +2 -1
  15. data/lib/cucumber/cli/configuration.rb +8 -7
  16. data/lib/cucumber/cli/main.rb +14 -14
  17. data/lib/cucumber/cli/options.rb +141 -120
  18. data/lib/cucumber/cli/profile_loader.rb +50 -29
  19. data/lib/cucumber/cli/rerun_file.rb +1 -0
  20. data/lib/cucumber/configuration.rb +40 -30
  21. data/lib/cucumber/constantize.rb +8 -10
  22. data/lib/cucumber/core_ext/string.rb +1 -0
  23. data/lib/cucumber/deprecate.rb +33 -9
  24. data/lib/cucumber/encoding.rb +2 -1
  25. data/lib/cucumber/errors.rb +10 -8
  26. data/lib/cucumber/events.rb +14 -9
  27. data/lib/cucumber/events/envelope.rb +9 -0
  28. data/lib/cucumber/events/gherkin_source_parsed.rb +11 -0
  29. data/lib/cucumber/events/gherkin_source_read.rb +1 -4
  30. data/lib/cucumber/events/hook_test_step_created.rb +13 -0
  31. data/lib/cucumber/events/step_activated.rb +6 -6
  32. data/lib/cucumber/events/step_definition_registered.rb +4 -8
  33. data/lib/cucumber/events/test_case_created.rb +13 -0
  34. data/lib/cucumber/events/test_case_finished.rb +1 -5
  35. data/lib/cucumber/events/test_case_ready.rb +12 -0
  36. data/lib/cucumber/events/{test_case_starting.rb → test_case_started.rb} +1 -5
  37. data/lib/cucumber/events/test_run_finished.rb +2 -3
  38. data/lib/cucumber/events/{test_run_starting.rb → test_run_started.rb} +3 -5
  39. data/lib/cucumber/events/test_step_created.rb +13 -0
  40. data/lib/cucumber/events/test_step_finished.rb +0 -6
  41. data/lib/cucumber/events/{test_step_starting.rb → test_step_started.rb} +2 -8
  42. data/lib/cucumber/file_specs.rb +7 -6
  43. data/lib/cucumber/filters.rb +3 -1
  44. data/lib/cucumber/filters/activate_steps.rb +11 -5
  45. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  46. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  47. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  48. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  49. data/lib/cucumber/filters/broadcast_test_case_ready_event.rb +12 -0
  50. data/lib/cucumber/filters/{broadcast_test_run_starting_event.rb → broadcast_test_run_started_event.rb} +4 -3
  51. data/lib/cucumber/filters/gated_receiver.rb +1 -2
  52. data/lib/cucumber/filters/prepare_world.rb +6 -13
  53. data/lib/cucumber/filters/quit.rb +3 -7
  54. data/lib/cucumber/filters/randomizer.rb +6 -7
  55. data/lib/cucumber/filters/retry.rb +2 -2
  56. data/lib/cucumber/filters/tag_limits.rb +2 -2
  57. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
  58. data/lib/cucumber/filters/tag_limits/verifier.rb +3 -6
  59. data/lib/cucumber/formatter/ansicolor.rb +33 -37
  60. data/lib/cucumber/formatter/ast_lookup.rb +165 -0
  61. data/lib/cucumber/formatter/backtrace_filter.rb +10 -10
  62. data/lib/cucumber/formatter/console.rb +37 -74
  63. data/lib/cucumber/formatter/console_counts.rb +4 -9
  64. data/lib/cucumber/formatter/console_issues.rb +10 -7
  65. data/lib/cucumber/formatter/duration.rb +2 -1
  66. data/lib/cucumber/formatter/duration_extractor.rb +4 -2
  67. data/lib/cucumber/formatter/errors.rb +6 -0
  68. data/lib/cucumber/formatter/fail_fast.rb +9 -6
  69. data/lib/cucumber/formatter/fanout.rb +3 -3
  70. data/lib/cucumber/formatter/html.rb +11 -603
  71. data/lib/cucumber/formatter/http_io.rb +93 -0
  72. data/lib/cucumber/formatter/ignore_missing_messages.rb +2 -4
  73. data/lib/cucumber/formatter/interceptor.rb +10 -12
  74. data/lib/cucumber/formatter/io.rb +19 -12
  75. data/lib/cucumber/formatter/json.rb +106 -112
  76. data/lib/cucumber/formatter/junit.rb +81 -76
  77. data/lib/cucumber/formatter/message.rb +22 -0
  78. data/lib/cucumber/formatter/message_builder.rb +241 -0
  79. data/lib/cucumber/formatter/pretty.rb +353 -153
  80. data/lib/cucumber/formatter/progress.rb +30 -33
  81. data/lib/cucumber/formatter/query/hook_by_test_step.rb +31 -0
  82. data/lib/cucumber/formatter/query/pickle_by_test.rb +26 -0
  83. data/lib/cucumber/formatter/query/pickle_step_by_test_step.rb +26 -0
  84. data/lib/cucumber/formatter/query/step_definitions_by_test_step.rb +40 -0
  85. data/lib/cucumber/formatter/query/test_case_started_by_test_case.rb +40 -0
  86. data/lib/cucumber/formatter/rerun.rb +24 -5
  87. data/lib/cucumber/formatter/stepdefs.rb +2 -2
  88. data/lib/cucumber/formatter/steps.rb +4 -5
  89. data/lib/cucumber/formatter/summary.rb +18 -11
  90. data/lib/cucumber/formatter/unicode.rb +16 -18
  91. data/lib/cucumber/formatter/usage.rb +30 -26
  92. data/lib/cucumber/gherkin/data_table_parser.rb +18 -6
  93. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +83 -86
  94. data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
  95. data/lib/cucumber/gherkin/i18n.rb +1 -0
  96. data/lib/cucumber/gherkin/steps_parser.rb +18 -8
  97. data/lib/cucumber/glue/dsl.rb +13 -26
  98. data/lib/cucumber/glue/hook.rb +35 -11
  99. data/lib/cucumber/glue/invoke_in_world.rb +15 -20
  100. data/lib/cucumber/glue/proto_world.rb +48 -42
  101. data/lib/cucumber/glue/registry_and_more.rb +58 -23
  102. data/lib/cucumber/glue/snippet.rb +23 -26
  103. data/lib/cucumber/glue/step_definition.rb +51 -28
  104. data/lib/cucumber/glue/world_factory.rb +2 -4
  105. data/lib/cucumber/hooks.rb +27 -17
  106. data/lib/cucumber/load_path.rb +1 -0
  107. data/lib/cucumber/multiline_argument.rb +7 -17
  108. data/lib/cucumber/multiline_argument/data_table.rb +113 -82
  109. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +8 -12
  110. data/lib/cucumber/multiline_argument/doc_string.rb +2 -1
  111. data/lib/cucumber/platform.rb +4 -3
  112. data/lib/cucumber/project_initializer.rb +2 -2
  113. data/lib/cucumber/rake/task.rb +28 -21
  114. data/lib/cucumber/rspec/disable_option_parser.rb +10 -8
  115. data/lib/cucumber/rspec/doubles.rb +1 -0
  116. data/lib/cucumber/running_test_case.rb +4 -54
  117. data/lib/cucumber/runtime.rb +32 -63
  118. data/lib/cucumber/runtime/after_hooks.rb +9 -4
  119. data/lib/cucumber/runtime/before_hooks.rb +9 -4
  120. data/lib/cucumber/runtime/for_programming_languages.rb +12 -9
  121. data/lib/cucumber/runtime/step_hooks.rb +5 -2
  122. data/lib/cucumber/runtime/support_code.rb +16 -22
  123. data/lib/cucumber/runtime/user_interface.rb +12 -23
  124. data/lib/cucumber/step_definition_light.rb +6 -4
  125. data/lib/cucumber/step_definitions.rb +3 -2
  126. data/lib/cucumber/step_match.rb +29 -14
  127. data/lib/cucumber/step_match_search.rb +10 -10
  128. data/lib/cucumber/term/ansicolor.rb +39 -39
  129. data/lib/cucumber/unit.rb +1 -0
  130. data/lib/cucumber/version +1 -1
  131. data/lib/simplecov_setup.rb +1 -0
  132. metadata +206 -678
  133. data/.coveralls.yml +0 -1
  134. data/.cucumberproignore +0 -6
  135. data/.github/ISSUE_TEMPLATE.md +0 -48
  136. data/.github/PULL_REQUEST_TEMPLATE.md +0 -39
  137. data/.rspec +0 -1
  138. data/.rubocop.yml +0 -13
  139. data/.rubocop_todo.yml +0 -1075
  140. data/.ruby-gemset +0 -1
  141. data/.travis.yml +0 -69
  142. data/.yardopts +0 -1
  143. data/Gemfile +0 -28
  144. data/Rakefile +0 -32
  145. data/appveyor.yml +0 -26
  146. data/cucumber.gemspec +0 -52
  147. data/cucumber.yml +0 -19
  148. data/examples/i18n/README.textile +0 -3
  149. data/examples/i18n/Rakefile +0 -33
  150. data/examples/i18n/ar/Rakefile +0 -6
  151. data/examples/i18n/ar/features/addition.feature +0 -17
  152. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -24
  153. data/examples/i18n/ar/lib/calculator.rb +0 -11
  154. data/examples/i18n/bg/Rakefile +0 -6
  155. data/examples/i18n/bg/features/addition.feature +0 -12
  156. data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
  157. data/examples/i18n/bg/features/division.feature +0 -17
  158. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
  159. data/examples/i18n/bg/features/support/env.rb +0 -5
  160. data/examples/i18n/bg/features/support/world.rb +0 -8
  161. data/examples/i18n/bg/lib/calculator.rb +0 -24
  162. data/examples/i18n/ca/Rakefile +0 -6
  163. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -21
  164. data/examples/i18n/ca/features/suma.feature +0 -17
  165. data/examples/i18n/ca/lib/calculadora.rb +0 -16
  166. data/examples/i18n/cs/Rakefile +0 -6
  167. data/examples/i18n/cs/features/addition.feature +0 -17
  168. data/examples/i18n/cs/features/division.feature +0 -11
  169. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -24
  170. data/examples/i18n/cs/lib/calculator.rb +0 -14
  171. data/examples/i18n/da/Rakefile +0 -6
  172. data/examples/i18n/da/features/sammenlaegning.feature +0 -18
  173. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -24
  174. data/examples/i18n/da/lib/lommeregner.rb +0 -11
  175. data/examples/i18n/de/Rakefile +0 -6
  176. data/examples/i18n/de/features/addition.feature +0 -17
  177. data/examples/i18n/de/features/division.feature +0 -10
  178. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -24
  179. data/examples/i18n/de/lib/calculator.rb +0 -14
  180. data/examples/i18n/el/Rakefile +0 -6
  181. data/examples/i18n/el/features/addition.feature +0 -17
  182. data/examples/i18n/el/features/division.feature +0 -10
  183. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -24
  184. data/examples/i18n/el/lib/calculator.rb +0 -14
  185. data/examples/i18n/en-lol/Rakefile +0 -4
  186. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
  187. data/examples/i18n/en-lol/features/stuffing.feature +0 -8
  188. data/examples/i18n/en-lol/features/support/env.rb +0 -7
  189. data/examples/i18n/en-lol/lib/basket.rb +0 -12
  190. data/examples/i18n/en-lol/lib/belly.rb +0 -11
  191. data/examples/i18n/en/Rakefile +0 -6
  192. data/examples/i18n/en/features/addition.feature +0 -17
  193. data/examples/i18n/en/features/division.feature +0 -10
  194. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -24
  195. data/examples/i18n/en/lib/calculator.rb +0 -14
  196. data/examples/i18n/eo/Rakefile +0 -6
  197. data/examples/i18n/eo/features/adicio.feature +0 -17
  198. data/examples/i18n/eo/features/divido.feature +0 -10
  199. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -24
  200. data/examples/i18n/eo/lib/calculator.rb +0 -14
  201. data/examples/i18n/es/Rakefile +0 -6
  202. data/examples/i18n/es/features/adicion.feature +0 -17
  203. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -21
  204. data/examples/i18n/es/lib/calculador.rb +0 -14
  205. data/examples/i18n/et/Rakefile +0 -6
  206. data/examples/i18n/et/features/jagamine.feature +0 -10
  207. data/examples/i18n/et/features/liitmine.feature +0 -17
  208. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -24
  209. data/examples/i18n/et/lib/kalkulaator.rb +0 -14
  210. data/examples/i18n/fi/Rakefile +0 -6
  211. data/examples/i18n/fi/features/jakolasku.feature +0 -10
  212. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -24
  213. data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
  214. data/examples/i18n/fi/lib/laskin.rb +0 -14
  215. data/examples/i18n/fr/Rakefile +0 -8
  216. data/examples/i18n/fr/features/addition.feature +0 -18
  217. data/examples/i18n/fr/features/addition2.feature +0 -17
  218. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
  219. data/examples/i18n/fr/features/support/env.rb +0 -5
  220. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  221. data/examples/i18n/he/Rakefile +0 -6
  222. data/examples/i18n/he/features/addition.feature +0 -17
  223. data/examples/i18n/he/features/division.feature +0 -10
  224. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -24
  225. data/examples/i18n/he/lib/calculator.rb +0 -15
  226. data/examples/i18n/hi/Rakefile +0 -6
  227. data/examples/i18n/hi/features/addition.feature +0 -16
  228. data/examples/i18n/hi/features/division.feature +0 -10
  229. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -24
  230. data/examples/i18n/hi/lib/calculator.rb +0 -15
  231. data/examples/i18n/ht/Rakefile +0 -6
  232. data/examples/i18n/ht/features/adisyon.feature +0 -17
  233. data/examples/i18n/ht/features/divizyon.feature +0 -10
  234. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -25
  235. data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
  236. data/examples/i18n/hu/Rakefile +0 -6
  237. data/examples/i18n/hu/features/osszeadas.feature +0 -17
  238. data/examples/i18n/hu/features/osztas.feature +0 -10
  239. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -25
  240. data/examples/i18n/hu/lib/calculator.rb +0 -14
  241. data/examples/i18n/id/Rakefile +0 -6
  242. data/examples/i18n/id/features/addition.feature +0 -17
  243. data/examples/i18n/id/features/division.feature +0 -10
  244. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -24
  245. data/examples/i18n/id/lib/calculator.rb +0 -14
  246. data/examples/i18n/it/Rakefile +0 -6
  247. data/examples/i18n/it/features/somma.feature +0 -11
  248. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -24
  249. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  250. data/examples/i18n/ja/Rakefile +0 -6
  251. data/examples/i18n/ja/features/addition.feature +0 -17
  252. data/examples/i18n/ja/features/division.feature +0 -10
  253. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
  254. data/examples/i18n/ja/features/support/env.rb +0 -5
  255. data/examples/i18n/ja/lib/calculator.rb +0 -14
  256. data/examples/i18n/ko/Rakefile +0 -6
  257. data/examples/i18n/ko/features/addition.feature +0 -17
  258. data/examples/i18n/ko/features/division.feature +0 -11
  259. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -24
  260. data/examples/i18n/ko/lib/calculator.rb +0 -14
  261. data/examples/i18n/lt/Rakefile +0 -6
  262. data/examples/i18n/lt/features/addition.feature +0 -17
  263. data/examples/i18n/lt/features/division.feature +0 -10
  264. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -24
  265. data/examples/i18n/lt/lib/calculator.rb +0 -14
  266. data/examples/i18n/lv/Rakefile +0 -6
  267. data/examples/i18n/lv/features/addition.feature +0 -17
  268. data/examples/i18n/lv/features/division.feature +0 -10
  269. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -24
  270. data/examples/i18n/lv/lib/calculator.rb +0 -14
  271. data/examples/i18n/no/Rakefile +0 -6
  272. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
  273. data/examples/i18n/no/features/summering.feature +0 -19
  274. data/examples/i18n/no/features/support/env.rb +0 -6
  275. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  276. data/examples/i18n/pl/Rakefile +0 -6
  277. data/examples/i18n/pl/features/addition.feature +0 -17
  278. data/examples/i18n/pl/features/division.feature +0 -10
  279. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -24
  280. data/examples/i18n/pl/features/support/env.rb +0 -5
  281. data/examples/i18n/pl/lib/calculator.rb +0 -14
  282. data/examples/i18n/pt/Rakefile +0 -6
  283. data/examples/i18n/pt/features/adicao.feature +0 -11
  284. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
  285. data/examples/i18n/pt/features/support/env.rb +0 -5
  286. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  287. data/examples/i18n/ro/Rakefile +0 -6
  288. data/examples/i18n/ro/features/adunare.feature +0 -12
  289. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -21
  290. data/examples/i18n/ro/lib/calculator.rb +0 -11
  291. data/examples/i18n/ru/Rakefile +0 -6
  292. data/examples/i18n/ru/features/addition.feature +0 -11
  293. data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
  294. data/examples/i18n/ru/features/division.feature +0 -16
  295. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
  296. data/examples/i18n/ru/features/support/env.rb +0 -5
  297. data/examples/i18n/ru/features/support/world.rb +0 -8
  298. data/examples/i18n/ru/lib/calculator.rb +0 -24
  299. data/examples/i18n/sk/Rakefile +0 -6
  300. data/examples/i18n/sk/features/addition.feature +0 -17
  301. data/examples/i18n/sk/features/division.feature +0 -10
  302. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -24
  303. data/examples/i18n/sk/lib/calculator.rb +0 -14
  304. data/examples/i18n/sr-Cyrl/Rakefile +0 -6
  305. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
  306. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
  307. data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -5
  308. data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
  309. data/examples/i18n/sr-Latn/Rakefile +0 -6
  310. data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
  311. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -24
  312. data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
  313. data/examples/i18n/sv/Rakefile +0 -6
  314. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -24
  315. data/examples/i18n/sv/features/summering.feature +0 -18
  316. data/examples/i18n/sv/lib/kalkulator.rb +0 -11
  317. data/examples/i18n/tr/Rakefile +0 -6
  318. data/examples/i18n/tr/features/bolme.feature +0 -10
  319. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -24
  320. data/examples/i18n/tr/features/toplama.feature +0 -18
  321. data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
  322. data/examples/i18n/uk/Rakefile +0 -6
  323. data/examples/i18n/uk/features/addition.feature +0 -11
  324. data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
  325. data/examples/i18n/uk/features/division.feature +0 -16
  326. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
  327. data/examples/i18n/uk/features/support/env.rb +0 -5
  328. data/examples/i18n/uk/features/support/world.rb +0 -8
  329. data/examples/i18n/uk/lib/calculator.rb +0 -24
  330. data/examples/i18n/uz/Rakefile +0 -6
  331. data/examples/i18n/uz/features/addition.feature +0 -10
  332. data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
  333. data/examples/i18n/uz/features/division.feature +0 -17
  334. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
  335. data/examples/i18n/uz/features/support/env.rb +0 -5
  336. data/examples/i18n/uz/features/support/world.rb +0 -8
  337. data/examples/i18n/uz/lib/calculator.rb +0 -24
  338. data/examples/i18n/zh-CN/Rakefile +0 -4
  339. data/examples/i18n/zh-CN/features/addition.feature +0 -18
  340. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -26
  341. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  342. data/examples/i18n/zh-TW/Rakefile +0 -4
  343. data/examples/i18n/zh-TW/features/addition.feature +0 -17
  344. data/examples/i18n/zh-TW/features/division.feature +0 -11
  345. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -24
  346. data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
  347. data/examples/rspec_doubles/Rakefile +0 -4
  348. data/examples/rspec_doubles/features/mocking.feature +0 -9
  349. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
  350. data/examples/rspec_doubles/features/support/env.rb +0 -12
  351. data/examples/sinatra/README.textile +0 -13
  352. data/examples/sinatra/Rakefile +0 -6
  353. data/examples/sinatra/app.rb +0 -14
  354. data/examples/sinatra/features/add.feature +0 -11
  355. data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
  356. data/examples/sinatra/features/support/env.rb +0 -10
  357. data/examples/sinatra/views/add.erb +0 -7
  358. data/examples/sinatra/views/layout.erb +0 -8
  359. data/examples/tcl/README.textile +0 -11
  360. data/examples/tcl/Rakefile +0 -6
  361. data/examples/tcl/features/fibonnacci.feature +0 -17
  362. data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
  363. data/examples/tcl/features/support/env.rb +0 -6
  364. data/examples/tcl/src/fib.tcl +0 -3
  365. data/examples/test_unit/Gemfile +0 -4
  366. data/examples/test_unit/Rakefile +0 -6
  367. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
  368. data/examples/test_unit/features/test_unit.feature +0 -9
  369. data/examples/watir/README.textile +0 -16
  370. data/examples/watir/Rakefile +0 -12
  371. data/examples/watir/cucumber.yml +0 -1
  372. data/examples/watir/features/search.feature +0 -12
  373. data/examples/watir/features/step_definitions/search_steps.rb +0 -26
  374. data/examples/watir/features/support/env.rb +0 -35
  375. data/examples/watir/features/support/screenshots.rb +0 -47
  376. data/features/docs/api/list_step_defs_as_json.feature +0 -64
  377. data/features/docs/api/listen_for_events.feature +0 -59
  378. data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
  379. data/features/docs/cli/backtraces.feature +0 -36
  380. data/features/docs/cli/dry_run.feature +0 -73
  381. data/features/docs/cli/exclude_files.feature +0 -18
  382. data/features/docs/cli/execute_with_tag_filter.feature +0 -117
  383. data/features/docs/cli/fail_fast.feature +0 -48
  384. data/features/docs/cli/finding_steps.feature +0 -28
  385. data/features/docs/cli/help.feature +0 -8
  386. data/features/docs/cli/i18n.feature +0 -42
  387. data/features/docs/cli/randomize.feature +0 -140
  388. data/features/docs/cli/require.feature +0 -27
  389. data/features/docs/cli/retry_failing_tests.feature +0 -92
  390. data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
  391. data/features/docs/cli/run_specific_scenarios.feature +0 -77
  392. data/features/docs/cli/showing_differences.feature +0 -43
  393. data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
  394. data/features/docs/cli/strict_mode.feature +0 -70
  395. data/features/docs/defining_steps/nested_steps.feature +0 -181
  396. data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
  397. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
  398. data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
  399. data/features/docs/defining_steps/printing_messages.feature +0 -147
  400. data/features/docs/defining_steps/skip_scenario.feature +0 -31
  401. data/features/docs/defining_steps/snippets.feature +0 -56
  402. data/features/docs/defining_steps/table_diffing.feature +0 -50
  403. data/features/docs/events/gherkin_source_read_event.feature +0 -43
  404. data/features/docs/events/step_activated_event.feature +0 -36
  405. data/features/docs/events/step_definition_registered_event.feature +0 -29
  406. data/features/docs/events/test_case_finished_event.feature +0 -35
  407. data/features/docs/events/test_case_starting_event.feature +0 -54
  408. data/features/docs/events/test_run_finished_event.feature +0 -40
  409. data/features/docs/events/test_run_starting_event.feature +0 -41
  410. data/features/docs/events/test_step_finished_event.feature +0 -47
  411. data/features/docs/events/test_step_starting_event.feature +0 -43
  412. data/features/docs/exception_in_after_hook.feature +0 -127
  413. data/features/docs/exception_in_after_step_hook.feature +0 -104
  414. data/features/docs/exception_in_around_hook.feature +0 -80
  415. data/features/docs/exception_in_before_hook.feature +0 -98
  416. data/features/docs/extending_cucumber/custom_filter.feature +0 -29
  417. data/features/docs/extending_cucumber/custom_formatter.feature +0 -122
  418. data/features/docs/formatters/api_methods.feature +0 -37
  419. data/features/docs/formatters/formatter_step_file_colon_line.feature +0 -44
  420. data/features/docs/formatters/html_formatter.feature +0 -91
  421. data/features/docs/formatters/json_formatter.feature +0 -767
  422. data/features/docs/formatters/junit_formatter.feature +0 -455
  423. data/features/docs/formatters/pretty_formatter.feature +0 -74
  424. data/features/docs/formatters/progress_formatter.feature +0 -32
  425. data/features/docs/formatters/rerun_formatter.feature +0 -190
  426. data/features/docs/formatters/summary_formatter.feature +0 -35
  427. data/features/docs/formatters/usage_formatter.feature +0 -101
  428. data/features/docs/getting_started.feature +0 -28
  429. data/features/docs/gherkin/background.feature +0 -548
  430. data/features/docs/gherkin/doc_strings.feature +0 -76
  431. data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
  432. data/features/docs/gherkin/language_from_header.feature +0 -32
  433. data/features/docs/gherkin/outlines.feature +0 -160
  434. data/features/docs/gherkin/unicode_table.feature +0 -33
  435. data/features/docs/gherkin/using_descriptions.feature +0 -83
  436. data/features/docs/gherkin/using_star_notation.feature +0 -37
  437. data/features/docs/iso-8859-1.feature +0 -6
  438. data/features/docs/post_configuration_hook.feature +0 -33
  439. data/features/docs/profiles.feature +0 -120
  440. data/features/docs/rake_task.feature +0 -146
  441. data/features/docs/raketask.feature +0 -46
  442. data/features/docs/work_in_progress.feature +0 -157
  443. data/features/docs/writing_support_code/after_hooks.feature +0 -102
  444. data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
  445. data/features/docs/writing_support_code/around_hooks.feature +0 -266
  446. data/features/docs/writing_support_code/before_hook.feature +0 -66
  447. data/features/docs/writing_support_code/hook_order.feature +0 -63
  448. data/features/docs/writing_support_code/load_path.feature +0 -17
  449. data/features/docs/writing_support_code/parameter_types.feature +0 -75
  450. data/features/docs/writing_support_code/state.feature +0 -32
  451. data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
  452. data/features/docs/writing_support_code/world.feature +0 -129
  453. data/features/lib/step_definitions/aruba_steps.rb +0 -21
  454. data/features/lib/step_definitions/cli_steps.rb +0 -4
  455. data/features/lib/step_definitions/cucumber_steps.rb +0 -75
  456. data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -13
  457. data/features/lib/step_definitions/json_steps.rb +0 -8
  458. data/features/lib/step_definitions/junit_steps.rb +0 -14
  459. data/features/lib/step_definitions/language_steps.rb +0 -9
  460. data/features/lib/step_definitions/profile_steps.rb +0 -16
  461. data/features/lib/step_definitions/retry_steps.rb +0 -55
  462. data/features/lib/step_definitions/ruby_steps.rb +0 -4
  463. data/features/lib/support/env.rb +0 -22
  464. data/features/lib/support/fake_wire_server.rb +0 -86
  465. data/features/lib/support/feature_factory.rb +0 -68
  466. data/features/lib/support/normalise_output.rb +0 -52
  467. data/features/lib/support/parameter_types.rb +0 -8
  468. data/gem_tasks/contributors.rake +0 -19
  469. data/gem_tasks/cov.rake +0 -6
  470. data/gem_tasks/downloads.rb +0 -8
  471. data/gem_tasks/environment.rake +0 -4
  472. data/gem_tasks/examples.rake +0 -12
  473. data/gem_tasks/fix_cr_lf.rake +0 -11
  474. data/gem_tasks/flog.rake +0 -5
  475. data/gem_tasks/rspec.rake +0 -7
  476. data/gem_tasks/sass.rake +0 -5
  477. data/gem_tasks/stats +0 -16
  478. data/gem_tasks/versions.txt +0 -74
  479. data/lib/cucumber/formatter/cucumber.css +0 -286
  480. data/lib/cucumber/formatter/cucumber.sass +0 -247
  481. data/lib/cucumber/formatter/hook_query_visitor.rb +0 -41
  482. data/lib/cucumber/formatter/html_builder.rb +0 -110
  483. data/lib/cucumber/formatter/inline-js.js +0 -30
  484. data/lib/cucumber/formatter/jquery-min.js +0 -154
  485. data/lib/cucumber/formatter/json_pretty.rb +0 -11
  486. data/lib/cucumber/formatter/legacy_api/adapter.rb +0 -1012
  487. data/lib/cucumber/formatter/legacy_api/ast.rb +0 -386
  488. data/lib/cucumber/formatter/legacy_api/results.rb +0 -50
  489. data/lib/cucumber/formatter/legacy_api/runtime_facade.rb +0 -32
  490. data/lib/cucumber/step_argument.rb +0 -24
  491. data/scripts/invite-collaborator +0 -40
  492. data/scripts/update-history +0 -83
  493. data/spec/cucumber/cli/configuration_spec.rb +0 -434
  494. data/spec/cucumber/cli/main_spec.rb +0 -84
  495. data/spec/cucumber/cli/options_spec.rb +0 -445
  496. data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
  497. data/spec/cucumber/cli/rerun_spec.rb +0 -86
  498. data/spec/cucumber/configuration_spec.rb +0 -148
  499. data/spec/cucumber/constantize_spec.rb +0 -20
  500. data/spec/cucumber/events_spec.rb +0 -9
  501. data/spec/cucumber/file_specs_spec.rb +0 -61
  502. data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
  503. data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
  504. data/spec/cucumber/filters/retry_spec.rb +0 -98
  505. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
  506. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
  507. data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
  508. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
  509. data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
  510. data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
  511. data/spec/cucumber/formatter/duration_spec.rb +0 -23
  512. data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
  513. data/spec/cucumber/formatter/html_spec.rb +0 -543
  514. data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
  515. data/spec/cucumber/formatter/json_spec.rb +0 -840
  516. data/spec/cucumber/formatter/junit_spec.rb +0 -251
  517. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2187
  518. data/spec/cucumber/formatter/pretty_spec.rb +0 -920
  519. data/spec/cucumber/formatter/progress_spec.rb +0 -170
  520. data/spec/cucumber/formatter/rerun_spec.rb +0 -97
  521. data/spec/cucumber/formatter/spec_helper.rb +0 -84
  522. data/spec/cucumber/glue/proto_world_spec.rb +0 -63
  523. data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
  524. data/spec/cucumber/glue/snippet_spec.rb +0 -174
  525. data/spec/cucumber/glue/step_definition_spec.rb +0 -207
  526. data/spec/cucumber/hooks_spec.rb +0 -31
  527. data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -648
  528. data/spec/cucumber/project_initializer_spec.rb +0 -88
  529. data/spec/cucumber/rake/forked_spec.rb +0 -54
  530. data/spec/cucumber/rake/task_spec.rb +0 -86
  531. data/spec/cucumber/running_test_case_spec.rb +0 -140
  532. data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
  533. data/spec/cucumber/runtime/support_code_spec.rb +0 -17
  534. data/spec/cucumber/runtime_spec.rb +0 -21
  535. data/spec/cucumber/sell_cucumbers.feature +0 -19
  536. data/spec/cucumber/step_argument_spec.rb +0 -19
  537. data/spec/cucumber/step_match_search_spec.rb +0 -113
  538. data/spec/cucumber/step_match_spec.rb +0 -86
  539. data/spec/cucumber/world/pending_spec.rb +0 -48
  540. data/spec/spec_helper.rb +0 -30
  541. data/spec/support/standard_step_actions.rb +0 -19
@@ -1,44 +0,0 @@
1
- Feature: Formatter API: Step file path and line number (Issue #179)
2
- To all reporter to understand location of current executing step let's fetch this information
3
- from step/step_invocation and pass to reporters
4
-
5
- Scenario: my own formatter
6
- Given a file named "features/f.feature" with:
7
- """
8
- Feature: I'll use my own
9
- because I'm worth it
10
- Scenario: just print step current line and feature file name
11
- Given step at line 4
12
- Given step at line 5
13
- """
14
- And a file named "features/step_definitions/steps.rb" with:
15
- """
16
- Given(/^step at line (.*)$/) {|line| }
17
- """
18
- And a file named "features/support/jb/formatter.rb" with:
19
- """
20
- module Jb
21
- class Formatter
22
- def initialize(runtime, io, options)
23
- @io = io
24
- end
25
-
26
- def before_step_result(keyword, step_match, multiline_arg, status, exception, source_indent, background, file_colon_line)
27
- @io.puts "step result event: #{file_colon_line}"
28
- end
29
-
30
- def step_name(keyword, step_match, status, source_indent, background, file_colon_line)
31
- @io.puts "step name event: #{file_colon_line}"
32
- end
33
- end
34
- end
35
- """
36
- When I run `cucumber features/f.feature --format Jb::Formatter`
37
- Then it should pass with exactly:
38
- """
39
- step result event: features/f.feature:4
40
- step name event: features/f.feature:4
41
- step result event: features/f.feature:5
42
- step name event: features/f.feature:5
43
-
44
- """
@@ -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