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,66 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'yaml'
4
-
5
- module Cucumber
6
- module Cli
7
- describe ProfileLoader do
8
- def given_cucumber_yml_defined_as(hash_or_string)
9
- allow(Dir).to receive(:glob).with('{,.config/,config/}cucumber{.yml,.yaml}') { ['cucumber.yml'] }
10
- allow(File).to receive(:exist?) { true }
11
-
12
- cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
13
-
14
- allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
15
- end
16
-
17
- def loader
18
- ProfileLoader.new
19
- end
20
-
21
- it 'treats backslashes as literals in rerun.txt when on Windows (JRuby or MRI)' do
22
- given_cucumber_yml_defined_as('default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22')
23
- if(Cucumber::WINDOWS)
24
- expect(loader.args_from('default')).to eq ['--format','pretty','features\sync_imap_mailbox.feature:16:22']
25
- else
26
- expect(loader.args_from('default')).to eq ['--format','pretty','featuressync_imap_mailbox.feature:16:22']
27
- end
28
- end
29
-
30
- it 'treats forward slashes as literals' do
31
- given_cucumber_yml_defined_as('default' => '--format "ugly" features/sync_imap_mailbox.feature:16:22')
32
-
33
- expect(loader.args_from('default')).to eq ['--format','ugly','features/sync_imap_mailbox.feature:16:22']
34
- end
35
-
36
- it 'treats percent sign as ERB code block after YAML directive' do
37
- yml = <<-HERE
38
- ---
39
- % x = '--format "pretty" features/sync_imap_mailbox.feature:16:22'
40
- default: <%= x %>
41
- HERE
42
- given_cucumber_yml_defined_as yml
43
- expect(loader.args_from('default')).to eq ['--format','pretty','features/sync_imap_mailbox.feature:16:22']
44
- end
45
-
46
- it 'correctly parses a profile that uses tag expressions (with double quotes)' do
47
- given_cucumber_yml_defined_as('default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22 --tags "not @jruby"')
48
- if(Cucumber::WINDOWS)
49
- expect(loader.args_from('default')).to eq ['--format','pretty','features\sync_imap_mailbox.feature:16:22','--tags','not @jruby']
50
- else
51
- expect(loader.args_from('default')).to eq ['--format','pretty','featuressync_imap_mailbox.feature:16:22','--tags','not @jruby']
52
- end
53
- end
54
-
55
- it 'correctly parses a profile that uses tag expressions (with single quotes)' do
56
- given_cucumber_yml_defined_as('default' => "--format 'pretty' features\\sync_imap_mailbox.feature:16:22 --tags 'not @jruby'")
57
- if(Cucumber::WINDOWS)
58
- expect(loader.args_from('default')).to eq ['--format','pretty','features\sync_imap_mailbox.feature:16:22','--tags','not @jruby']
59
- else
60
- expect(loader.args_from('default')).to eq ['--format','pretty','featuressync_imap_mailbox.feature:16:22','--tags','not @jruby']
61
- end
62
- end
63
-
64
- end
65
- end
66
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Cucumber
5
- module Cli
6
- describe RerunFile do
7
-
8
- let(:rerun_file) { RerunFile.new('@rerun.txt') }
9
-
10
- it 'expects rerun files to have a leading @' do
11
- allow(File).to receive(:file?) { true }
12
- expect(RerunFile.can_read?('rerun.txt')).to eq false
13
- expect(RerunFile.can_read?('@rerun.txt')).to eq true
14
- end
15
-
16
- it 'does not treat directories as rerun files' do
17
- allow(File).to receive(:file?) { false }
18
- expect(RerunFile.can_read?('@rerun.txt')).to eq false
19
- end
20
-
21
- it 'removes leading @ character from filename' do
22
- expect(rerun_file.path).to eq 'rerun.txt'
23
- end
24
-
25
- context 'rerun file containing single feature' do
26
- before(:each) do
27
- allow(IO).to receive(:read).and_return('cucumber.feature')
28
- end
29
-
30
- it 'produces an array containing a single feature file path' do
31
- expect(rerun_file.features).to eq %w(cucumber.feature)
32
- end
33
- end
34
-
35
- context 'contains multiple features on multiple lines' do
36
- before(:each) do
37
- allow(IO).to receive(:read).and_return("cucumber.feature\nfoo.feature")
38
- end
39
-
40
- it 'produces an array containing multiple feature file paths' do
41
- expect(rerun_file.features).to eq %w(cucumber.feature foo.feature)
42
- end
43
- end
44
-
45
- context 'contains multiple features on same line' do
46
- before(:each) do
47
- allow(IO).to receive(:read).and_return('cucumber.feature foo.feature')
48
- end
49
-
50
- it 'produces an array containing multiple feature file paths' do
51
- expect(rerun_file.features).to eq %w(cucumber.feature foo.feature)
52
- end
53
- end
54
-
55
- context 'contains multiple scenarios on same line' do
56
- before(:each) do
57
- allow(IO).to receive(:read).and_return('cucumber.feature:8 foo.feature:8:16')
58
- end
59
-
60
- it 'produces an array containing multiple feature file paths with scenario lines' do
61
- expect(rerun_file.features).to eq %w(cucumber.feature:8 foo.feature:8:16)
62
- end
63
- end
64
-
65
- context 'contains features with spaces in file names' do
66
- before(:each) do
67
- allow(IO).to receive(:read).and_return('cucumber test.feature:8 foo.feature:8:16')
68
- end
69
-
70
- it 'produces an array containing multiple feature file paths with scenario lines' do
71
- expect(rerun_file.features).to eq ['cucumber test.feature:8', 'foo.feature:8:16']
72
- end
73
- end
74
-
75
- context 'contains multiple scenarios without spaces between them' do
76
- before(:each) do
77
- allow(IO).to receive(:read).and_return('cucumber test.feature:8foo.feature:8:16')
78
- end
79
-
80
- it 'produces an array containing multiple feature file paths with scenario lines' do
81
- expect(rerun_file.features).to eq ['cucumber test.feature:8', 'foo.feature:8:16']
82
- end
83
- end
84
- end
85
- end
86
- end
@@ -1,148 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Cucumber
5
- describe Configuration do
6
- describe '.default' do
7
- subject { Configuration.default }
8
-
9
- it 'has an autoload_code_paths containing the standard support and step_definitions folders' do
10
- expect(subject.autoload_code_paths).to include('features/support')
11
- expect(subject.autoload_code_paths).to include('features/step_definitions')
12
- end
13
- end
14
-
15
- describe 'with custom user options' do
16
- let(:user_options) { { :autoload_code_paths => ['foo/bar/baz'] } }
17
- subject { Configuration.new(user_options) }
18
-
19
- it 'allows you to override the defaults' do
20
- expect(subject.autoload_code_paths).to eq ['foo/bar/baz']
21
- end
22
- end
23
-
24
- context 'selecting files to load' do
25
-
26
- def given_the_following_files(*files)
27
- allow(File).to receive(:directory?) { true }
28
- allow(File).to receive(:file?) { true }
29
- allow(Dir).to receive(:[]) { files }
30
- end
31
-
32
- it 'requires env.rb files first' do
33
- configuration = Configuration.new
34
- given_the_following_files('/features/support/a_file.rb','/features/support/env.rb')
35
-
36
- expect(configuration.support_to_load).to eq [
37
- '/features/support/env.rb',
38
- '/features/support/a_file.rb'
39
- ]
40
- end
41
-
42
- it 'does not require env.rb files when dry run' do
43
- configuration = Configuration.new(dry_run: true)
44
- given_the_following_files('/features/support/a_file.rb','/features/support/env.rb')
45
-
46
- expect(configuration.support_to_load).to eq [
47
- '/features/support/a_file.rb'
48
- ]
49
- end
50
-
51
- it 'requires step defs in vendor/{plugins,gems}/*/cucumber/*.rb' do
52
- given_the_following_files('/vendor/gems/gem_a/cucumber/bar.rb',
53
- '/vendor/plugins/plugin_a/cucumber/foo.rb')
54
-
55
- configuration = Configuration.new
56
-
57
- expect(configuration.step_defs_to_load).to eq [
58
- '/vendor/gems/gem_a/cucumber/bar.rb',
59
- '/vendor/plugins/plugin_a/cucumber/foo.rb'
60
- ]
61
- end
62
-
63
- describe '--exclude' do
64
-
65
- it 'excludes a ruby file from requiring when the name matches exactly' do
66
- given_the_following_files('/features/support/a_file.rb','/features/support/env.rb')
67
-
68
- configuration = Configuration.new(excludes: [/a_file.rb/])
69
-
70
- expect(configuration.all_files_to_load).to eq [
71
- '/features/support/env.rb'
72
- ]
73
- end
74
-
75
- it 'excludes all ruby files that match the provided patterns from requiring' do
76
- given_the_following_files('/features/support/foof.rb','/features/support/bar.rb',
77
- '/features/support/food.rb','/features/blah.rb',
78
- '/features/support/fooz.rb')
79
-
80
- configuration = Configuration.new(excludes: [/foo[df]/, /blah/])
81
-
82
- expect(configuration.all_files_to_load).to eq [
83
- '/features/support/bar.rb',
84
- '/features/support/fooz.rb'
85
- ]
86
- end
87
- end
88
-
89
- end
90
-
91
- context 'selecting feature files' do
92
-
93
- it 'preserves the order of the feature files' do
94
- configuration = Configuration.new(paths: %w{b.feature c.feature a.feature})
95
-
96
- expect(configuration.feature_files).to eq ['b.feature', 'c.feature', 'a.feature']
97
- end
98
-
99
- it 'searchs for all features in the specified directory' do
100
- allow(File).to receive(:directory?) { true }
101
- allow(Dir).to receive(:[]).with('feature_directory/**/*.feature') { ['cucumber.feature'] }
102
-
103
- configuration = Configuration.new(paths: %w{feature_directory/})
104
-
105
- expect(configuration.feature_files).to eq ['cucumber.feature']
106
- end
107
-
108
- it 'defaults to the features directory when no feature file are provided' do
109
- allow(File).to receive(:directory?) { true }
110
- allow(Dir).to receive(:[]).with('features/**/*.feature') { ['cucumber.feature'] }
111
-
112
- configuration = Configuration.new(paths: [])
113
-
114
- expect(configuration.feature_files).to eq ['cucumber.feature']
115
- end
116
-
117
- it 'gets the feature files from the rerun file' do
118
- allow(File).to receive(:directory?).and_return(false)
119
- allow(File).to receive(:file?).and_return(true)
120
- allow(IO).to receive(:read).and_return(
121
- "cucumber.feature:1:3\ncucumber.feature:5 cucumber.feature:10\n"\
122
- "domain folder/different cuke.feature:134 domain folder/cuke.feature:1\n"\
123
- 'domain folder/different cuke.feature:4:5 bar.feature')
124
-
125
- configuration = Configuration.new(paths: %w{@rerun.txt})
126
-
127
- expect(configuration.feature_files).to eq [
128
- 'cucumber.feature:1:3',
129
- 'cucumber.feature:5',
130
- 'cucumber.feature:10',
131
- 'domain folder/different cuke.feature:134',
132
- 'domain folder/cuke.feature:1',
133
- 'domain folder/different cuke.feature:4:5',
134
- 'bar.feature']
135
- end
136
- end
137
-
138
- describe '#with_options' do
139
- it 'returns a copy of the configuration with new options' do
140
- old_out_stream = double('Old out_stream')
141
- new_out_stream = double('New out_stream')
142
- config = Configuration.new(out_stream: old_out_stream).with_options(out_stream: new_out_stream)
143
- expect(config.out_stream).to eq new_out_stream
144
- end
145
- end
146
-
147
- end
148
- end
@@ -1,20 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Html end
5
-
6
- module Cucumber
7
- describe Constantize do
8
- include Constantize
9
-
10
- it 'loads html formatter' do
11
- clazz = constantize('Cucumber::Formatter::Html')
12
-
13
- expect(clazz.name).to eq 'Cucumber::Formatter::Html'
14
- end
15
-
16
- it 'fails to load a made up class' do
17
- expect { constantize('My::MadeUp::ClassName') }.to raise_error(LoadError)
18
- end
19
- end
20
- end
@@ -1,9 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Cucumber
4
- describe Events do
5
- it 'builds a registry without failing' do
6
- expect { described_class.registry }.not_to raise_error
7
- end
8
- end
9
- end
@@ -1,61 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'cucumber/file_specs'
3
-
4
- module Cucumber
5
- describe FileSpecs do
6
- let(:file_specs) { FileSpecs.new(['features/foo.feature:1:2:3', 'features/bar.feature:4:5:6']) }
7
- let(:locations) { file_specs.locations }
8
- let(:files) { file_specs.files }
9
-
10
- it 'parses locations from multiple files' do
11
- expect(locations.length).to eq 6
12
- expect(locations).to eq [
13
- Cucumber::Core::Ast::Location.new('features/foo.feature', 1),
14
- Cucumber::Core::Ast::Location.new('features/foo.feature', 2),
15
- Cucumber::Core::Ast::Location.new('features/foo.feature', 3),
16
- Cucumber::Core::Ast::Location.new('features/bar.feature', 4),
17
- Cucumber::Core::Ast::Location.new('features/bar.feature', 5),
18
- Cucumber::Core::Ast::Location.new('features/bar.feature', 6)
19
- ]
20
- end
21
-
22
- it 'parses file names from multiple file specs' do
23
- expect(files.length).to eq 2
24
- expect(files).to eq [
25
- 'features/foo.feature',
26
- 'features/bar.feature'
27
- ]
28
- end
29
-
30
- context 'when files are not unique' do
31
- let(:file_specs) { FileSpecs.new(['features/foo.feature:4', 'features/foo.feature:34']) }
32
-
33
- it 'parses unique file names' do
34
- expect(files.length).to eq 1
35
- expect(files).to eq ['features/foo.feature']
36
- end
37
- end
38
-
39
- context 'when no line number is specified' do
40
- let(:file_specs) { FileSpecs.new(['features/foo.feature', 'features/bar.feature:34']) }
41
-
42
- it 'returns a wildcard location for that file' do
43
- expect(locations).to eq [
44
- Cucumber::Core::Ast::Location.new('features/foo.feature'),
45
- Cucumber::Core::Ast::Location.new('features/bar.feature', 34)
46
- ]
47
- end
48
- end
49
-
50
- context 'when the same file is referenced more than once' do
51
- let(:file_specs) { FileSpecs.new(['features/foo.feature:10', 'features/foo.feature:1']) }
52
-
53
- it 'returns locations in the order specified' do
54
- expect(locations).to eq [
55
- Cucumber::Core::Ast::Location.new('features/foo.feature', 10),
56
- Cucumber::Core::Ast::Location.new('features/foo.feature', 1)
57
- ]
58
- end
59
- end
60
- end
61
- end
@@ -1,152 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'cucumber/filters/activate_steps'
3
- require 'cucumber/core/gherkin/writer'
4
- require 'cucumber/core'
5
-
6
- describe Cucumber::Filters::ActivateSteps do
7
- include Cucumber::Core::Gherkin::Writer
8
- include Cucumber::Core
9
-
10
- let(:step_match) { double(activate: activated_test_step) }
11
- let(:activated_test_step) { double }
12
- let(:receiver) { double.as_null_object }
13
- let(:filter) { Cucumber::Filters::ActivateSteps.new(step_match_search, configuration) }
14
- let(:step_match_search) { Proc.new { [step_match] } }
15
- let(:configuration) { double(dry_run?: false, notify: nil) }
16
-
17
- context 'a scenario with a single step' do
18
- let(:doc) do
19
- gherkin do
20
- feature do
21
- scenario do
22
- step 'a passing step'
23
- end
24
- end
25
- end
26
- end
27
-
28
- it 'activates each step' do
29
- expect(step_match).to receive(:activate) do |test_step|
30
- expect(test_step.text).to eq 'a passing step'
31
- end
32
- compile [doc], receiver, [filter]
33
- end
34
-
35
- it 'notifies with a StepActivated event' do
36
- expect(configuration).to receive(:notify) do |message, test_step, step_match|
37
- expect(message).to eq :step_activated
38
- expect(test_step.text).to eq 'a passing step'
39
- expect(step_match).to eq step_match
40
- end
41
- compile [doc], receiver, [filter]
42
- end
43
- end
44
-
45
- context 'a scenario outline' do
46
- let(:doc) do
47
- gherkin do
48
- feature do
49
- scenario_outline do
50
- step 'a <status> step'
51
-
52
- examples do
53
- row 'status'
54
- row 'passing'
55
- end
56
- end
57
- end
58
- end
59
- end
60
-
61
- it 'activates each step' do
62
- expect(step_match).to receive(:activate) do |test_step|
63
- expect(test_step.text).to eq 'a passing step'
64
- end
65
- compile [doc], receiver, [filter]
66
- end
67
- end
68
-
69
- context 'undefined step' do
70
- let(:step_match_search) { Proc.new { [] } }
71
-
72
- let(:doc) do
73
- gherkin do
74
- feature do
75
- scenario do
76
- step 'an undefined step'
77
- end
78
- end
79
- end
80
- end
81
-
82
- it 'does not activate the step' do
83
- expect(receiver).to receive(:test_case) do |test_case|
84
- expect(test_case.test_steps[0].execute).to be_undefined
85
- end
86
- compile [doc], receiver, [filter]
87
- end
88
-
89
- it 'does not notify' do
90
- expect(configuration).not_to receive(:notify)
91
- compile [doc], receiver, [filter]
92
- end
93
- end
94
-
95
- context 'dry run' do
96
- let(:configuration) { double(dry_run?: true, notify: nil) }
97
-
98
- let(:doc) do
99
- gherkin do
100
- feature do
101
- scenario do
102
- step 'a passing step'
103
- end
104
- end
105
- end
106
- end
107
-
108
- it 'activates each step with a skipping action' do
109
- expect(receiver).to receive(:test_case) do |test_case|
110
- expect(test_case.test_steps[0].execute).to be_skipped
111
- end
112
- compile [doc], receiver, [filter]
113
- end
114
-
115
- it 'notifies with a StepActivated event' do
116
- expect(configuration).to receive(:notify) do |message, test_step, step_match|
117
- expect(message).to eq :step_activated
118
- expect(test_step.text).to eq 'a passing step'
119
- expect(step_match).to eq step_match
120
- end
121
- compile [doc], receiver, [filter]
122
- end
123
- end
124
-
125
- context 'undefined step in a dry run' do
126
- let(:step_match_search) { Proc.new { [] } }
127
- let(:configuration) { double(dry_run?: true, notify: nil) }
128
-
129
- let(:doc) do
130
- gherkin do
131
- feature do
132
- scenario do
133
- step 'an undefined step'
134
- end
135
- end
136
- end
137
- end
138
-
139
- it 'does not activate the step' do
140
- expect(receiver).to receive(:test_case) do |test_case|
141
- expect(test_case.test_steps[0].execute).to be_undefined
142
- end
143
- compile [doc], receiver, [filter]
144
- end
145
-
146
- it 'does not notify' do
147
- expect(configuration).not_to receive(:notify)
148
- compile [doc], receiver, [filter]
149
- end
150
- end
151
-
152
- end