cucumber 3.0.0.pre.1 → 4.0.0.rc.4

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