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,170 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/spec_helper'
4
- require 'cucumber/formatter/progress'
5
- require 'cucumber/cli/options'
6
-
7
- module Cucumber
8
- module Formatter
9
- describe Progress do
10
- extend SpecHelperDsl
11
- include SpecHelper
12
-
13
- before(:each) do
14
- Cucumber::Term::ANSIColor.coloring = false
15
- @out = StringIO.new
16
- @formatter = Progress.new(actual_runtime.configuration.with_options(out_stream: @out))
17
- end
18
-
19
- describe 'given a single feature' do
20
- before(:each) do
21
- run_defined_feature
22
- end
23
-
24
- describe 'with a scenario' do
25
- define_feature <<-FEATURE
26
- Feature: Banana party
27
-
28
- Scenario: Monkey eats banana
29
- Given there are bananas
30
- FEATURE
31
-
32
- it 'outputs the undefined step' do
33
- expect(@out.string).to include "U\n"
34
- end
35
- end
36
-
37
- describe 'with a background' do
38
- define_feature <<-FEATURE
39
- Feature: Banana party
40
-
41
- Background:
42
- Given a tree
43
-
44
- Scenario: Monkey eats banana
45
- Given there are bananas
46
- FEATURE
47
-
48
- it 'outputs the two undefined steps' do
49
- expect(@out.string).to include "UU\n"
50
- end
51
- end
52
-
53
- describe 'with a scenario outline' do
54
- define_feature <<-FEATURE
55
- Feature: Fud Pyramid
56
-
57
- Scenario Outline: Monkey eats a balanced diet
58
- Given there are <Things>
59
-
60
- Examples: Fruit
61
- | Things |
62
- | apples |
63
- | bananas |
64
- Examples: Vegetables
65
- | Things |
66
- | broccoli |
67
- | carrots |
68
- FEATURE
69
-
70
- it 'outputs each undefined step' do
71
- expect(@out.string).to include "UUUU\n"
72
- end
73
-
74
- it 'has 4 undefined scenarios' do
75
- expect(@out.string).to include '4 scenarios (4 undefined)'
76
- end
77
-
78
- it 'has 4 undefined steps' do
79
- expect(@out.string).to include '4 steps (4 undefined)'
80
- end
81
-
82
- end
83
-
84
- describe 'with hooks' do
85
-
86
- describe 'all hook passes' do
87
- define_feature <<-FEATURE
88
- Feature:
89
- Scenario:
90
- Given this step passes
91
- FEATURE
92
-
93
- define_steps do
94
- Before do
95
- end
96
- AfterStep do
97
- end
98
- After do
99
- end
100
- Given(/^this step passes$/) {}
101
- end
102
-
103
- it 'only steps generate output' do
104
- lines = <<-OUTPUT
105
- .
106
- 1 scenario (1 passed)
107
- 1 step (1 passed)
108
- OUTPUT
109
- lines.split("\n").each do |line|
110
- expect(@out.string).to include line.strip
111
- end
112
- end
113
- end
114
-
115
- describe 'with a failing before hook' do
116
- define_feature <<-FEATURE
117
- Feature:
118
- Scenario:
119
- Given this step passes
120
- FEATURE
121
-
122
- define_steps do
123
- Before do
124
- fail 'hook failed'
125
- end
126
- Given(/^this step passes$/) {}
127
- end
128
-
129
- it 'the failing hook generate output' do
130
- lines = <<-OUTPUT
131
- F-
132
- 1 scenario (1 failed)
133
- 1 step (1 skipped)
134
- OUTPUT
135
- lines.split("\n").each do |line|
136
- expect(@out.string).to include line.strip
137
- end
138
- end
139
- end
140
-
141
- describe 'with a failing after hook' do
142
- define_feature <<-FEATURE
143
- Feature:
144
- Scenario:
145
- Given this step passes
146
- FEATURE
147
-
148
- define_steps do
149
- After do
150
- fail 'hook failed'
151
- end
152
- Given(/^this step passes$/) {}
153
- end
154
-
155
- it 'the failing hook generate output' do
156
- lines = <<-OUTPUT
157
- .F
158
- 1 scenario (1 failed)
159
- 1 step (1 passed)
160
- OUTPUT
161
- lines.split("\n").each do |line|
162
- expect(@out.string).to include line.strip
163
- end
164
- end
165
- end
166
- end
167
- end
168
- end
169
- end
170
- end
@@ -1,97 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'cucumber/formatter/rerun'
3
- require 'cucumber/core'
4
- require 'cucumber/core/gherkin/writer'
5
- require 'cucumber/core/filter'
6
- require 'support/standard_step_actions'
7
- require 'cucumber/configuration'
8
-
9
- module Cucumber
10
- module Formatter
11
- describe Rerun do
12
- include Cucumber::Core::Gherkin::Writer
13
- include Cucumber::Core
14
-
15
- let(:config) { Cucumber::Configuration.new(out_stream: io) }
16
- let(:io) { StringIO.new }
17
-
18
- # after_test_case
19
- context 'when 2 scenarios fail in the same file' do
20
- it 'Prints the locations of the failed scenarios' do
21
- gherkin = gherkin('foo.feature') do
22
- feature do
23
- scenario do
24
- step 'failing'
25
- end
26
-
27
- scenario do
28
- step 'failing'
29
- end
30
-
31
- scenario do
32
- step 'passing'
33
- end
34
- end
35
- end
36
- Rerun.new(config)
37
- execute [gherkin], [StandardStepActions.new], config.event_bus
38
- config.event_bus.test_run_finished
39
-
40
- expect( io.string ).to eq 'foo.feature:3:6'
41
- end
42
- end
43
-
44
- context 'with failures in multiple files' do
45
- it 'prints the location of the failed scenarios in each file' do
46
- foo = gherkin('foo.feature') do
47
- feature do
48
- scenario do
49
- step 'failing'
50
- end
51
-
52
- scenario do
53
- step 'failing'
54
- end
55
-
56
- scenario do
57
- step 'passing'
58
- end
59
- end
60
- end
61
-
62
- bar = gherkin('bar.feature') do
63
- feature do
64
- scenario do
65
- step 'failing'
66
- end
67
- end
68
- end
69
-
70
- Rerun.new(config)
71
- execute [foo, bar], [StandardStepActions.new], config.event_bus
72
- config.event_bus.test_run_finished
73
-
74
- expect(io.string).to eq 'foo.feature:3:6\nbar.feature:3'
75
- end
76
- end
77
-
78
- context 'when there are no failing scenarios' do
79
- it 'prints nothing' do
80
- gherkin = gherkin('foo.feature') do
81
- feature do
82
- scenario do
83
- step 'passing'
84
- end
85
- end
86
- end
87
-
88
- Rerun.new(config)
89
- execute [gherkin], [StandardStepActions.new], config.event_bus
90
- config.event_bus.test_run_finished
91
-
92
- expect(io.string).to eq ''
93
- end
94
- end
95
- end
96
- end
97
- end
@@ -1,84 +0,0 @@
1
- # frozen_string_literal: true
2
- module Cucumber
3
- module Formatter
4
- module SpecHelperDsl
5
- attr_reader :feature_content, :step_defs, :feature_filename
6
-
7
- def define_feature(string, feature_file = 'spec.feature')
8
- @feature_content = string
9
- @feature_filename = feature_file
10
- end
11
-
12
- def define_steps(&block)
13
- @step_defs = block
14
- end
15
- end
16
-
17
- require 'cucumber/core'
18
- module SpecHelper
19
- include Core
20
-
21
- def run_defined_feature
22
- define_steps
23
- actual_runtime.visitor = report
24
-
25
- receiver = Test::Runner.new(event_bus)
26
- filters = [
27
- Filters::ActivateSteps.new(
28
- StepMatchSearch.new(actual_runtime.support_code.registry.method(:step_matches), actual_runtime.configuration),
29
- actual_runtime.configuration
30
- ),
31
- Filters::ApplyAfterStepHooks.new(actual_runtime.support_code),
32
- Filters::ApplyBeforeHooks.new(actual_runtime.support_code),
33
- Filters::ApplyAfterHooks.new(actual_runtime.support_code),
34
- Filters::ApplyAroundHooks.new(actual_runtime.support_code),
35
- Filters::PrepareWorld.new(actual_runtime)
36
- ]
37
- compile [gherkin_doc], receiver, filters
38
- event_bus.test_run_finished
39
- end
40
-
41
- require 'cucumber/formatter/legacy_api/adapter'
42
- def report
43
- @report ||= LegacyApi::Adapter.new(
44
- Fanout.new([@formatter]),
45
- actual_runtime.results,
46
- actual_runtime.configuration)
47
- end
48
-
49
- require 'cucumber/core/gherkin/document'
50
- def gherkin_doc
51
- Core::Gherkin::Document.new(self.class.feature_filename, gherkin)
52
- end
53
-
54
- def gherkin
55
- self.class.feature_content || raise('No feature content defined!')
56
- end
57
-
58
- def runtime
59
- @runtime_facade ||= LegacyApi::RuntimeFacade.new(actual_runtime.results, actual_runtime.support_code, actual_runtime.configuration)
60
- end
61
-
62
- def actual_runtime
63
- @runtime ||= Runtime.new(options)
64
- end
65
-
66
- def event_bus
67
- actual_runtime.configuration.event_bus
68
- end
69
-
70
- def define_steps
71
- step_defs = self.class.step_defs
72
-
73
- return unless step_defs
74
- dsl = Object.new
75
- dsl.extend Glue::Dsl
76
- dsl.instance_exec &step_defs
77
- end
78
-
79
- def options
80
- {}
81
- end
82
- end
83
- end
84
- end
@@ -1,63 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/spec_helper'
4
- require 'cucumber/formatter/pretty'
5
-
6
- module Cucumber
7
- module Glue
8
- describe ProtoWorld do
9
-
10
- let(:runtime) { double('runtime') }
11
- let(:language) { double('language') }
12
- let(:world) { Object.new.extend(ProtoWorld.for(runtime, language)) }
13
-
14
- describe '#table' do
15
- it 'produces Ast::Table by #table' do
16
- expect(world.table(%{
17
- | account | description | amount |
18
- | INT-100 | Taxi | 114 |
19
- | CUC-101 | Peeler | 22 |
20
- })).to be_kind_of(MultilineArgument::DataTable)
21
- end
22
- end
23
-
24
- describe 'Handling puts in step definitions' do
25
- extend Cucumber::Formatter::SpecHelperDsl
26
- include Cucumber::Formatter::SpecHelper
27
-
28
- before(:each) do
29
- Cucumber::Term::ANSIColor.coloring = false
30
- @out = StringIO.new
31
- @formatter = Cucumber::Formatter::Pretty.new(runtime, @out, {})
32
- run_defined_feature
33
- end
34
-
35
- describe 'when modifying the printed variable after the call to puts' do
36
- define_feature <<-FEATURE
37
- Feature: Banana party
38
-
39
- Scenario: Monkey eats banana
40
- When puts is called twice for the same variable
41
- FEATURE
42
-
43
- define_steps do
44
- When(/^puts is called twice for the same variable$/) do
45
- foo = String.new('a')
46
- puts foo
47
- foo.upcase!
48
- puts foo
49
- end
50
- end
51
-
52
- it 'prints the variable value at the time puts was called' do
53
- expect(@out.string).to include <<OUTPUT
54
- When puts is called twice for the same variable
55
- a
56
- A
57
- OUTPUT
58
- end
59
- end
60
- end
61
- end
62
- end
63
- end
@@ -1,213 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/glue/registry_and_more'
4
-
5
- module Cucumber
6
- module Glue
7
- describe StepDefinition do
8
- let(:user_interface) { double('user interface') }
9
- let(:registry) { support_code.registry }
10
- let(:support_code) do
11
- Cucumber::Runtime::SupportCode.new(user_interface)
12
- end
13
- let(:dsl) do
14
- registry
15
- Object.new.extend(Glue::Dsl)
16
- end
17
-
18
- describe '#load_code_file' do
19
- after do
20
- FileUtils.rm_rf('tmp.rb')
21
- FileUtils.rm_rf('docs.md')
22
- end
23
-
24
- def a_file_called(name)
25
- File.open(name, 'w') do |f|
26
- f.puts yield
27
- end
28
- end
29
-
30
- it 're-loads the file when called multiple times' do
31
- a_file_called('tmp.rb') do
32
- '$foo = 1'
33
- end
34
-
35
- registry.load_code_file('tmp.rb')
36
- expect($foo).to eq 1
37
-
38
- a_file_called('tmp.rb') do
39
- '$foo = 2'
40
- end
41
-
42
- registry.load_code_file('tmp.rb')
43
-
44
- expect($foo).to eq 2
45
- end
46
-
47
- it 'only loads ruby files' do
48
- a_file_called('docs.md') do
49
- 'yo'
50
- end
51
- registry.load_code_file('docs.md')
52
- end
53
- end
54
-
55
- describe 'Handling the World' do
56
- it 'raises an error if the world is nil' do
57
- dsl.World {}
58
-
59
- begin
60
- registry.begin_scenario(nil)
61
- raise 'Should fail'
62
- rescue Glue::NilWorld => e
63
- expect(e.message).to eq 'World procs should never return nil'
64
- expect(e.backtrace.length).to eq 1
65
- expect(e.backtrace[0]).to match(/spec\/cucumber\/glue\/registry_and_more_spec\.rb\:\d+\:in `World'/)
66
- end
67
- end
68
-
69
- module ModuleOne
70
- end
71
-
72
- module ModuleTwo
73
- end
74
-
75
- class ClassOne
76
- end
77
-
78
- it 'implicitlys extend world with modules' do
79
- dsl.World(ModuleOne, ModuleTwo)
80
- registry.begin_scenario(double('scenario').as_null_object)
81
- class << registry.current_world
82
- extend RSpec::Matchers
83
-
84
- expect(included_modules.inspect).to match(/ModuleOne/) # Workaround for RSpec/Ruby 1.9 issue with namespaces
85
- expect(included_modules.inspect).to match(/ModuleTwo/)
86
- end
87
- expect(registry.current_world.class).to eq Object
88
- end
89
-
90
- it 'raises error when we try to register more than one World proc' do
91
- expected_error = %{You can only pass a proc to #World once, but it's happening
92
- in 2 places:
93
-
94
- spec/cucumber/glue/registry_and_more_spec.rb:\\d+:in `World'
95
- spec/cucumber/glue/registry_and_more_spec.rb:\\d+:in `World'
96
-
97
- Use Ruby modules instead to extend your worlds. See the Cucumber::Glue::Dsl#World RDoc
98
- or http://wiki.github.com/cucumber/cucumber/a-whole-new-world.
99
-
100
- }
101
- dsl.World { Hash.new }
102
-
103
- expect(-> {
104
- dsl.World { Array.new }
105
- }).to raise_error(Glue::MultipleWorld, /#{expected_error}/)
106
- end
107
- end
108
-
109
- describe 'Handling namespaced World' do
110
- module ModuleOne
111
- def method_one
112
- 1
113
- end
114
- end
115
-
116
- module ModuleMinusOne
117
- def method_one
118
- -1
119
- end
120
- end
121
-
122
- module ModuleTwo
123
- def method_two
124
- 2
125
- end
126
- end
127
-
128
- module ModuleThree
129
- def method_three
130
- 3
131
- end
132
- end
133
-
134
- it 'extends the world with namespaces' do
135
- dsl.World(ModuleOne, module_two: ModuleTwo, module_three: ModuleThree)
136
- registry.begin_scenario(double('scenario').as_null_object)
137
- class << registry.current_world
138
- extend RSpec::Matchers
139
- expect(included_modules.inspect).to match(/ModuleOne/)
140
- end
141
- expect(registry.current_world.class).to eq Object
142
- expect(registry.current_world).to respond_to(:method_one)
143
-
144
- expect(registry.current_world.module_two.class).to eq Object
145
- expect(registry.current_world.module_two).to respond_to(:method_two)
146
-
147
- expect(registry.current_world.module_three.class).to eq Object
148
- expect(registry.current_world.module_three).to respond_to(:method_three)
149
- end
150
-
151
- it 'allows to inspect the included modules' do
152
- dsl.World(ModuleOne, module_two: ModuleTwo, module_three: ModuleThree)
153
- registry.begin_scenario(double('scenario').as_null_object)
154
- class << registry.current_world
155
- extend RSpec::Matchers
156
- end
157
- expect(registry.current_world.inspect).to match(/ModuleOne/)
158
- expect(registry.current_world.inspect).to include('ModuleTwo (as module_two)')
159
- expect(registry.current_world.inspect).to include('ModuleThree (as module_three)')
160
- end
161
-
162
- it 'merges methods when assigning different modules to the same namespace' do
163
- dsl.World(namespace: ModuleOne)
164
- dsl.World(namespace: ModuleTwo)
165
- registry.begin_scenario(double('scenario').as_null_object)
166
- class << registry.current_world
167
- extend RSpec::Matchers
168
- end
169
- expect(registry.current_world.namespace).to respond_to(:method_one)
170
- expect(registry.current_world.namespace).to respond_to(:method_two)
171
- end
172
-
173
- it 'resolves conflicts when assigning different modules to the same namespace' do
174
- dsl.World(namespace: ModuleOne)
175
- dsl.World(namespace: ModuleMinusOne)
176
- registry.begin_scenario(double('scenario').as_null_object)
177
- class << registry.current_world
178
- extend RSpec::Matchers
179
- end
180
- expect(registry.current_world.namespace).to respond_to(:method_one)
181
- expect(registry.current_world.namespace.method_one).to eql(-1)
182
- end
183
- end
184
-
185
- describe 'hooks' do
186
- it 'finds before hooks' do
187
- fish = dsl.Before('@fish'){}
188
- meat = dsl.Before('@meat'){}
189
-
190
- scenario = double('Scenario')
191
-
192
- expect(scenario).to receive(:accept_hook?).with(fish) { true }
193
- expect(scenario).to receive(:accept_hook?).with(meat) { false }
194
- expect(registry.hooks_for(:before, scenario)).to eq [fish]
195
- end
196
-
197
- it 'finds around hooks' do
198
- a = dsl.Around do |scenario, block|
199
- end
200
-
201
- b = dsl.Around('@tag') do |scenario, block|
202
- end
203
-
204
- scenario = double('Scenario')
205
-
206
- expect(scenario).to receive(:accept_hook?).with(a) { true }
207
- expect(scenario).to receive(:accept_hook?).with(b) { false }
208
- expect(registry.hooks_for(:around, scenario)).to eq [a]
209
- end
210
- end
211
- end
212
- end
213
- end