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,907 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/spec_helper'
4
- require 'cucumber/formatter/pretty'
5
- require 'cucumber/cli/options'
6
-
7
- module Cucumber
8
- module Formatter
9
- describe Pretty do
10
- extend SpecHelperDsl
11
- include SpecHelper
12
-
13
- context 'With no options' do
14
- before(:each) do
15
- Cucumber::Term::ANSIColor.coloring = false
16
- @out = StringIO.new
17
- @formatter = Pretty.new(runtime, @out, {})
18
- end
19
-
20
- describe 'given a single feature' do
21
- before(:each) do
22
- run_defined_feature
23
- end
24
-
25
- describe 'with a scenario' do
26
- define_feature <<-FEATURE
27
- Feature: Banana party
28
-
29
- Scenario: Monkey eats banana
30
- Given there are bananas
31
- FEATURE
32
-
33
- it 'outputs the scenario name' do
34
- expect(@out.string).to include 'Scenario: Monkey eats banana'
35
- end
36
-
37
- it 'outputs the step' do
38
- expect(@out.string).to include 'Given there are bananas'
39
- end
40
- end
41
-
42
- describe 'with a background' do
43
- define_feature <<-FEATURE
44
- Feature: Banana party
45
-
46
- Background:
47
- Given a tree
48
-
49
- Scenario: Monkey eats banana
50
- Given there are bananas
51
- FEATURE
52
-
53
- it 'outputs the gherkin' do
54
- expect(@out.string).to include(self.class.feature_content)
55
- end
56
-
57
- it 'outputs the scenario name' do
58
- expect(@out.string).to include 'Scenario: Monkey eats banana'
59
- end
60
-
61
- it 'outputs the step' do
62
- expect(@out.string).to include 'Given there are bananas'
63
- end
64
- end
65
-
66
- describe 'with a scenario outline' do
67
- define_feature <<-FEATURE
68
- Feature: Fud Pyramid
69
-
70
- Scenario Outline: Monkey eats a balanced diet
71
- Given there are <Things>
72
-
73
- Examples: Fruit
74
- | Things |
75
- | apples |
76
- | bananas |
77
- Examples: Vegetables
78
- | Things |
79
- | broccoli |
80
- | carrots |
81
- FEATURE
82
-
83
- it 'outputs the scenario outline' do
84
- lines = <<-OUTPUT
85
- Examples: Fruit
86
- | Things |
87
- | apples |
88
- | bananas |
89
- Examples: Vegetables
90
- | Things |
91
- | broccoli |
92
- | carrots |
93
- OUTPUT
94
- lines.split("\n").each do |line|
95
- expect(@out.string).to include line.strip
96
- end
97
- end
98
-
99
- it 'has 4 undefined scenarios' do
100
- expect(@out.string).to include '4 scenarios (4 undefined)'
101
- end
102
-
103
- it 'has 4 undefined steps' do
104
- expect(@out.string).to include '4 steps (4 undefined)'
105
- end
106
-
107
- context 'when the examples table header is wider than the rows' do
108
- define_feature <<-FEATURE
109
- Feature: Monkey Business
110
-
111
- Scenario Outline: Types of monkey
112
- Given there are <Types of monkey>
113
-
114
- Examples:
115
- | Types of monkey |
116
- | Hominidae |
117
- FEATURE
118
-
119
- it 'outputs the scenario outline' do
120
- lines = <<-OUTPUT
121
- Examples:
122
- | Types of monkey |
123
- | Hominidae |
124
- OUTPUT
125
- lines.split("\n").each do |line|
126
- expect(@out.string).to include line.strip
127
- end
128
- end
129
- end
130
- end
131
-
132
- # To ensure https://rspec.lighthouseapp.com/projects/16211/tickets/475 remains fixed.
133
- describe 'with a scenario outline with a pystring' do
134
- define_feature <<-FEATURE
135
- Feature:
136
- Scenario Outline: Monkey eats a balanced diet
137
- Given a multiline string:
138
- """
139
- Monkeys eat <things>
140
- """
141
-
142
- Examples:
143
- | things |
144
- | apples |
145
- FEATURE
146
-
147
- it 'outputs the scenario outline' do
148
- lines = <<-OUTPUT
149
- Given a multiline string:
150
- """
151
- Monkeys eat <things>
152
- """
153
-
154
- Examples:
155
- | things |
156
- | apples |
157
- OUTPUT
158
- lines.split("\n").each do |line|
159
- expect(@out.string).to include line.strip
160
- end
161
- end
162
- end
163
-
164
- describe 'with a step with a py string' do
165
- define_feature <<-FEATURE
166
- Feature: Traveling circus
167
-
168
- Scenario: Monkey goes to town
169
- Given there is a monkey called:
170
- """
171
- foo
172
- """
173
- FEATURE
174
-
175
- it 'displays the pystring nested' do
176
- expect(@out.string).to include <<OUTPUT
177
- """
178
- foo
179
- """
180
- OUTPUT
181
- end
182
- end
183
-
184
- describe 'with a multiline step arg' do
185
- define_feature <<-FEATURE
186
- Feature: Traveling circus
187
-
188
- Scenario: Monkey goes to town
189
- Given there are monkeys:
190
- | name |
191
- | foo |
192
- | bar |
193
- FEATURE
194
-
195
- it 'displays the multiline string' do
196
- expect(@out.string).to include <<OUTPUT
197
- Given there are monkeys:
198
- | name |
199
- | foo |
200
- | bar |
201
- OUTPUT
202
- end
203
- end
204
-
205
- describe 'with a table in the background and the scenario' do
206
- define_feature <<-FEATURE
207
- Feature: accountant monkey
208
-
209
- Background:
210
- Given table:
211
- | a | b |
212
- | c | d |
213
- Scenario:
214
- Given another table:
215
- | e | f |
216
- | g | h |
217
- FEATURE
218
-
219
- it 'displays the table for the background' do
220
- expect(@out.string).to include <<OUTPUT
221
- Given table:
222
- | a | b |
223
- | c | d |
224
- OUTPUT
225
- end
226
-
227
- it 'displays the table for the scenario' do
228
- expect(@out.string).to include <<OUTPUT
229
- Given another table:
230
- | e | f |
231
- | g | h |
232
- OUTPUT
233
- end
234
- end
235
-
236
- describe 'with a py string in the background and the scenario' do
237
- define_feature <<-FEATURE
238
- Feature: py strings
239
-
240
- Background:
241
- Given stuff:
242
- """
243
- foo
244
- """
245
- Scenario:
246
- Given more stuff:
247
- """
248
- bar
249
- """
250
- FEATURE
251
-
252
- it 'displays the background py string' do
253
- expect(@out.string).to include <<OUTPUT
254
- Given stuff:
255
- """
256
- foo
257
- """
258
- OUTPUT
259
- end
260
-
261
- it 'displays the scenario py string' do
262
- expect(@out.string).to include <<OUTPUT
263
- Given more stuff:
264
- """
265
- bar
266
- """
267
- OUTPUT
268
- end
269
- end
270
-
271
- describe 'with output from hooks' do
272
- define_feature <<-FEATURE
273
- Feature:
274
- Scenario:
275
- Given this step passes
276
- Scenario Outline:
277
- Given this step <status>
278
- Examples:
279
- | status |
280
- | passes |
281
- FEATURE
282
-
283
- define_steps do
284
- Before do
285
- puts 'Before hook'
286
- end
287
- AfterStep do
288
- puts 'AfterStep hook'
289
- end
290
- After do
291
- puts 'After hook'
292
- end
293
- Given('this step passes') {}
294
- end
295
-
296
- it 'displays hook output appropriately ' do
297
- expect( @out.string ).to include <<OUTPUT
298
- Feature:
299
-
300
- Scenario:
301
- Before hook
302
- Given this step passes
303
- AfterStep hook
304
- After hook
305
-
306
- Scenario Outline:
307
- Given this step <status>
308
-
309
- Examples:
310
- | status |
311
- | passes | Before hook, AfterStep hook, After hook
312
-
313
- 2 scenarios (2 passed)
314
- 2 steps (2 passed)
315
- OUTPUT
316
- end
317
- end
318
-
319
- describe 'with background and output from hooks' do
320
- define_feature <<-FEATURE
321
- Feature:
322
- Background:
323
- Given this step passes
324
- Scenario:
325
- Given this step passes
326
- FEATURE
327
-
328
- define_steps do
329
- Before do
330
- puts 'Before hook'
331
- end
332
- AfterStep do
333
- puts 'AfterStep hook'
334
- end
335
- After do
336
- puts 'After hook'
337
- end
338
- Given('this step passes') {}
339
- end
340
-
341
- it 'displays hook output appropriately ' do
342
- expect( @out.string ).to include <<OUTPUT
343
- Feature:
344
-
345
- Background:
346
- Before hook
347
- Given this step passes
348
- AfterStep hook
349
-
350
- Scenario:
351
- Given this step passes
352
- AfterStep hook
353
- After hook
354
-
355
- 1 scenario (1 passed)
356
- 2 steps (2 passed)
357
- OUTPUT
358
- end
359
- end
360
-
361
- describe 'with tags on all levels' do
362
- define_feature <<-FEATURE
363
- @tag1
364
- Feature:
365
- @tag2
366
- Scenario:
367
- Given this step passes
368
- @tag3
369
- Scenario Outline:
370
- Given this step passes
371
- @tag4
372
- Examples:
373
- | dummy |
374
- | dummy |
375
- FEATURE
376
-
377
-
378
- it 'includes the tags in the output ' do
379
- expect( @out.string ).to include <<OUTPUT
380
- @tag1
381
- Feature:
382
-
383
- @tag2
384
- Scenario:
385
- Given this step passes
386
-
387
- @tag3
388
- Scenario Outline:
389
- Given this step passes
390
-
391
- @tag4
392
- Examples:
393
- | dummy |
394
- | dummy |
395
- OUTPUT
396
- end
397
- end
398
-
399
- describe 'with comments on all levels' do
400
- define_feature <<-FEATURE
401
- #comment1
402
- Feature:
403
- #comment2
404
- Background:
405
- #comment3
406
- Given this step passes
407
- #comment4
408
- Scenario:
409
- #comment5
410
- Given this step passes
411
- #comment6
412
- | dummy |
413
- #comment7
414
- Scenario Outline:
415
- #comment8
416
- Given this step passes
417
- #comment9
418
- Examples:
419
- #comment10
420
- | dummy |
421
- #comment11
422
- | dummy |
423
- FEATURE
424
-
425
-
426
- it 'includes the all comments except for data table rows in the output ' do
427
- expect( @out.string ).to include <<OUTPUT
428
- #comment1
429
- Feature:
430
-
431
- #comment2
432
- Background:
433
- #comment3
434
- Given this step passes
435
-
436
- #comment4
437
- Scenario:
438
- #comment5
439
- Given this step passes
440
- | dummy |
441
-
442
- #comment7
443
- Scenario Outline:
444
- #comment8
445
- Given this step passes
446
-
447
- #comment9
448
- Examples:
449
- #comment10
450
- | dummy |
451
- #comment11
452
- | dummy |
453
- OUTPUT
454
- end
455
- end
456
- end
457
- end
458
-
459
- context 'With --no-multiline passed as an option' do
460
- before(:each) do
461
- Cucumber::Term::ANSIColor.coloring = false
462
- @out = StringIO.new
463
- @formatter = Pretty.new(runtime, @out, {:no_multiline => true})
464
- end
465
-
466
- describe 'given a single feature' do
467
- before(:each) do
468
- run_defined_feature
469
- end
470
-
471
- describe 'with a scenario' do
472
- define_feature <<-FEATURE
473
- Feature: Banana party
474
-
475
- Scenario: Monkey eats banana
476
- Given there are bananas
477
- FEATURE
478
-
479
- it 'outputs the scenario name' do
480
- expect(@out.string).to include 'Scenario: Monkey eats banana'
481
- end
482
-
483
- it 'outputs the step' do
484
- expect(@out.string).to include 'Given there are bananas'
485
- end
486
- end
487
-
488
- describe 'with a scenario outline' do
489
- define_feature <<-FEATURE
490
- Feature: Fud Pyramid
491
-
492
- Scenario Outline: Monkey eats a balanced diet
493
- Given there are <Things>
494
-
495
- Examples: Fruit
496
- | Things |
497
- | apples |
498
- | bananas |
499
- Examples: Vegetables
500
- | Things |
501
- | broccoli |
502
- | carrots |
503
- FEATURE
504
-
505
- it 'outputs the scenario outline' do
506
- lines = <<-OUTPUT
507
- Examples: Fruit
508
- | Things |
509
- | apples |
510
- | bananas |
511
- Examples: Vegetables
512
- | Things |
513
- | broccoli |
514
- | carrots |
515
- OUTPUT
516
- lines.split("\n").each do |line|
517
- expect(@out.string).to include line.strip
518
- end
519
- end
520
-
521
- it 'has 4 undefined scenarios' do
522
- expect(@out.string).to include '4 scenarios (4 undefined)'
523
- end
524
-
525
- it 'has 4 undefined steps' do
526
- expect(@out.string).to include '4 steps (4 undefined)'
527
- end
528
- end
529
-
530
- describe 'with a step with a py string' do
531
- define_feature <<-FEATURE
532
- Feature: Traveling circus
533
-
534
- Scenario: Monkey goes to town
535
- Given there is a monkey called:
536
- """
537
- foo
538
- """
539
- FEATURE
540
-
541
- it 'does not display the pystring' do
542
- expect(@out.string).not_to include <<OUTPUT
543
- """
544
- foo
545
- """
546
- OUTPUT
547
- end
548
- end
549
-
550
- describe 'with a multiline step arg' do
551
- define_feature <<-FEATURE
552
- Feature: Traveling circus
553
-
554
- Scenario: Monkey goes to town
555
- Given there are monkeys:
556
- | name |
557
- | foo |
558
- | bar |
559
- FEATURE
560
-
561
- it 'does not display the multiline string' do
562
- expect(@out.string).not_to include <<OUTPUT
563
- | name |
564
- | foo |
565
- | bar |
566
- OUTPUT
567
- end
568
- end
569
-
570
- describe 'with a table in the background and the scenario' do
571
- define_feature <<-FEATURE
572
- Feature: accountant monkey
573
-
574
- Background:
575
- Given table:
576
- | a | b |
577
- | c | d |
578
- Scenario:
579
- Given another table:
580
- | e | f |
581
- | g | h |
582
- FEATURE
583
-
584
- it 'does not display the table for the background' do
585
- expect(@out.string).not_to include <<OUTPUT
586
- | a | b |
587
- | c | d |
588
- OUTPUT
589
- end
590
- it 'does not display the table for the scenario' do
591
- expect(@out.string).not_to include <<OUTPUT
592
- | e | f |
593
- | g | h |
594
- OUTPUT
595
- end
596
- end
597
-
598
- describe 'with a py string in the background and the scenario' do
599
- define_feature <<-FEATURE
600
- Feature: py strings
601
-
602
- Background:
603
- Given stuff:
604
- """
605
- foo
606
- """
607
- Scenario:
608
- Given more stuff:
609
- """
610
- bar
611
- """
612
- FEATURE
613
-
614
- it 'does not display the background py string' do
615
- expect(@out.string).not_to include <<OUTPUT
616
- """
617
- foo
618
- """
619
- OUTPUT
620
- end
621
- it 'does not display the scenario py string' do
622
- expect(@out.string).not_to include <<OUTPUT
623
- """
624
- bar
625
- """
626
- OUTPUT
627
- end
628
- end
629
- end
630
- end
631
-
632
- context 'In --expand mode' do
633
- let(:options) { { expand: true } }
634
- before(:each) do
635
- Cucumber::Term::ANSIColor.coloring = false
636
- @out = StringIO.new
637
- @formatter = Pretty.new(runtime, @out, {})
638
- end
639
-
640
- describe 'given a single feature' do
641
- before(:each) do
642
- run_defined_feature
643
- end
644
-
645
- describe 'with a scenario outline' do
646
- define_feature <<-FEATURE
647
- Feature: Fud Pyramid
648
-
649
- Scenario Outline: Monkey eats a balanced diet
650
- Given there are <Things>
651
-
652
- Examples: Fruit
653
- | Things |
654
- | apples |
655
- | bananas |
656
- Examples: Vegetables
657
- | Things |
658
- | broccoli |
659
- | carrots |
660
- FEATURE
661
-
662
- it 'outputs the instantiated scenarios' do
663
- lines = <<-OUTPUT
664
- Examples: Fruit
665
- Scenario: | apples |
666
- Given there are apples
667
- Scenario: | bananas |
668
- Given there are bananas
669
- Examples: Vegetables
670
- Scenario: | broccoli |
671
- Given there are broccoli
672
- Scenario: | carrots |
673
- Given there are carrots
674
- OUTPUT
675
- lines.split("\n").each do |line|
676
- expect(@out.string).to include line.strip
677
- end
678
- end
679
- end
680
-
681
- describe 'with a scenario outline in en-lol' do
682
- define_feature <<-FEATURE
683
- # language: en-lol
684
- OH HAI: STUFFING
685
-
686
- MISHUN SRSLY: CUCUMBR
687
- I CAN HAZ IN TEH BEGINNIN <BEGINNIN> CUCUMBRZ
688
- WEN I EAT <EAT> CUCUMBRZ
689
- DEN I HAS <EAT> CUCUMBERZ IN MAH BELLY
690
- AN IN TEH END <KTHXBAI> CUCUMBRZ KTHXBAI
691
-
692
- EXAMPLZ:
693
- | BEGINNIN | EAT | KTHXBAI |
694
- | 3 | 2 | 1 |
695
- FEATURE
696
-
697
- it 'outputs localized text' do
698
- lines = <<-OUTPUT
699
- OH HAI: STUFFING
700
-
701
- MISHUN SRSLY: CUCUMBR
702
- I CAN HAZ IN TEH BEGINNIN <BEGINNIN> CUCUMBRZ
703
- WEN I EAT <EAT> CUCUMBRZ
704
- DEN I HAS <EAT> CUCUMBERZ IN MAH BELLY
705
- AN IN TEH END <KTHXBAI> CUCUMBRZ KTHXBAI
706
- EXAMPLZ:
707
- MISHUN: | 3 | 2 | 1 |
708
- I CAN HAZ IN TEH BEGINNIN 3 CUCUMBRZ
709
- WEN I EAT 2 CUCUMBRZ
710
- DEN I HAS 2 CUCUMBERZ IN MAH BELLY
711
- AN IN TEH END 1 CUCUMBRZ KTHXBAI
712
- OUTPUT
713
- lines.split("\n").each do |line|
714
- expect(@out.string).to include line.strip
715
- end
716
- end
717
- end
718
- end
719
- end
720
-
721
- context 'In --expand mode with --source as an option' do
722
- let(:options) { { expand: true } }
723
- before(:each) do
724
- Cucumber::Term::ANSIColor.coloring = false
725
- @out = StringIO.new
726
- @formatter = Pretty.new(runtime, @out, {:source => true})
727
- end
728
-
729
- describe 'given a single feature' do
730
- before(:each) do
731
- run_defined_feature
732
- end
733
-
734
- describe 'with a scenario outline' do
735
- define_feature <<-FEATURE
736
- Feature: Fud Pyramid
737
-
738
- Scenario Outline: Monkey eats a balanced diet
739
- Given there are <Things>
740
-
741
- Examples: Fruit
742
- | Things |
743
- | apples |
744
- | bananas |
745
- Examples: Vegetables
746
- | Things |
747
- | broccoli |
748
- | carrots |
749
- FEATURE
750
-
751
- it 'includes the source in the output' do
752
- lines = <<-OUTPUT
753
- Scenario Outline: Monkey eats a balanced diet # spec.feature:3
754
- Given there are <Things> # spec.feature:4
755
- Examples: Fruit
756
- Scenario: | apples | # spec.feature:8
757
- Given there are apples # spec.feature:8
758
- Scenario: | bananas | # spec.feature:9
759
- Given there are bananas # spec.feature:9
760
- Examples: Vegetables
761
- Scenario: | broccoli | # spec.feature:12
762
- Given there are broccoli # spec.feature:12
763
- Scenario: | carrots | # spec.feature:13
764
- Given there are carrots # spec.feature:13
765
- OUTPUT
766
- lines.split("\n").each do |line|
767
- expect(@out.string).to include line.strip
768
- end
769
- end
770
-
771
- context 'With very wide cells' do
772
- define_feature <<-FEATURE
773
- Feature: Monkey Business
774
-
775
- Scenario Outline: Types of monkey
776
- Given there are <Types of monkey>
777
-
778
- Examples:
779
- | Types of monkey | Extra |
780
- | Hominidae | Very long cell content |
781
- FEATURE
782
-
783
- it 'the scenario line controls the source indentation' do
784
- lines = <<-OUTPUT
785
- Examples:
786
- Scenario: | Hominidae | Very long cell content | # spec.feature:8
787
- Given there are Hominidae # spec.feature:8
788
-
789
- OUTPUT
790
- lines.split("\n").each do |line|
791
- expect(@out.string).to include line.strip
792
- end
793
- end
794
- end
795
- end
796
- end
797
- end
798
-
799
- context 'snippets contain relevant keyword replacements' do
800
-
801
- before(:each) do
802
- Cucumber::Term::ANSIColor.coloring = false
803
- @out = StringIO.new
804
- @formatter = Pretty.new(runtime, @out, {snippets: true})
805
- run_defined_feature
806
- end
807
-
808
- describe 'With a scenario that has undefined steps' do
809
- define_feature <<-FEATURE
810
- Feature: Banana party
811
-
812
- Scenario: many monkeys eat many things
813
- Given there are bananas and apples
814
- And other monkeys are around
815
- When one monkey eats a banana
816
- And the other monkeys eat all the apples
817
- Then bananas remain
818
- But there are no apples left
819
- FEATURE
820
-
821
- it "containes snippets with 'And' or 'But' replaced by previous step name" do
822
- expect(@out.string).to include('Given("there are bananas and apples")')
823
- expect(@out.string).to include('Given("other monkeys are around")')
824
- expect(@out.string).to include('When("one monkey eats a banana")')
825
- expect(@out.string).to include('When("the other monkeys eat all the apples")')
826
- expect(@out.string).to include('Then("bananas remain")')
827
- expect(@out.string).to include('Then("there are no apples left")')
828
- end
829
- end
830
-
831
- describe "With a scenario that uses * and 'But'" do
832
- define_feature <<-FEATURE
833
- Feature: Banana party
834
-
835
- Scenario: many monkeys eat many things
836
- * there are bananas and apples
837
- * other monkeys are around
838
- When one monkey eats a banana
839
- * the other monkeys eat all the apples
840
- Then bananas remain
841
- * there are no apples left
842
- FEATURE
843
- it "replaces the first step with 'Given'" do
844
- expect(@out.string).to include('Given("there are bananas and apples")')
845
- end
846
- it "uses actual keywords as the 'previous' keyword for future replacements" do
847
- expect(@out.string).to include('Given("other monkeys are around")')
848
- expect(@out.string).to include('When("the other monkeys eat all the apples")')
849
- expect(@out.string).to include('Then("there are no apples left")')
850
- end
851
- end
852
-
853
- describe "With a scenario where the only undefined step uses 'And'" do
854
- define_feature <<-FEATURE
855
- Feature:
856
-
857
- Scenario:
858
- Given this step passes
859
- Then this step passes
860
- And this step is undefined
861
- FEATURE
862
- define_steps do
863
- Given('this step passes') {}
864
- end
865
- it 'uses actual keyword of the previous passing step for the undefined step' do
866
- expect(@out.string).to include('Then("this step is undefined")')
867
- end
868
- end
869
-
870
- describe "With scenarios where the first step is undefined and uses '*'" do
871
- define_feature <<-FEATURE
872
- Feature:
873
-
874
- Scenario:
875
- * this step is undefined
876
- Then this step passes
877
-
878
- Scenario:
879
- * this step is also undefined
880
- Then this step passes
881
- FEATURE
882
- define_steps do
883
- Given('this step passes') {}
884
- end
885
- it "uses 'Given' as actual keyword the step in each scenario" do
886
- expect(@out.string).to include('Given("this step is undefined")')
887
- expect(@out.string).to include('Given("this step is also undefined")')
888
- end
889
- end
890
-
891
- describe 'with a scenario in en-lol' do
892
- define_feature <<-FEATURE
893
- # language: en-lol
894
- OH HAI: STUFFING
895
-
896
- MISHUN: CUCUMBR
897
- I CAN HAZ IN TEH BEGINNIN CUCUMBRZ
898
- AN I EAT CUCUMBRZ
899
- FEATURE
900
- it 'uses actual keyword of the previous passing step for the undefined step' do
901
- expect(@out.string).to include('ICANHAZ("I EAT CUCUMBRZ")')
902
- end
903
- end
904
- end
905
- end
906
- end
907
- end