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