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,200 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/rb_support/rb_language'
4
-
5
- module Cucumber
6
- module RbSupport
7
- describe RbStepDefinition do
8
- let(:user_interface) { double('user interface') }
9
- let(:support_code) { Cucumber::Runtime::SupportCode.new(user_interface) }
10
- let(:rb) { support_code.ruby }
11
- let(:scenario) { double('scenario', iso_code: 'en').as_null_object }
12
- let(:dsl) do
13
- rb
14
- Object.new.extend(Cucumber::RbSupport::RbDsl)
15
- end
16
-
17
- before do
18
- rb.begin_scenario(scenario)
19
- $inside = nil
20
- end
21
-
22
- def run_step(text)
23
- step_match(text).invoke(MultilineArgument::None.new)
24
- end
25
-
26
- def step_match(text)
27
- StepMatchSearch.new(rb.method(:step_matches), Configuration.default).call(text).first
28
- end
29
-
30
- it "allows calling of other steps" do
31
- dsl.Given(/Outside/) do
32
- step "Inside"
33
- end
34
- dsl.Given(/Inside/) do
35
- $inside = true
36
- end
37
-
38
- run_step "Outside"
39
-
40
- expect($inside).to be true
41
- end
42
-
43
- it "allows calling of other steps with inline arg" do
44
- dsl.Given(/Outside/) do
45
- location = Core::Ast::Location.new(__FILE__, __LINE__)
46
- step "Inside", table([['inside']])
47
- end
48
- dsl.Given(/Inside/) do |t|
49
- $inside = t.raw[0][0]
50
- end
51
-
52
- run_step "Outside"
53
-
54
- expect($inside).to eq 'inside'
55
- end
56
-
57
- context "mapping to world methods" do
58
- it "calls a method on the world when specified with a symbol" do
59
- expect(rb.current_world).to receive(:with_symbol)
60
-
61
- dsl.Given(/With symbol/, :with_symbol)
62
-
63
- run_step "With symbol"
64
- end
65
-
66
- it "calls a method on a specified object" do
67
- target = double('target')
68
-
69
- allow(rb.current_world).to receive(:target) { target }
70
-
71
- dsl.Given(/With symbol on block/, :with_symbol, :on => lambda { target })
72
-
73
- expect(target).to receive(:with_symbol)
74
-
75
- run_step "With symbol on block"
76
- end
77
-
78
- it "calls a method on a specified world attribute" do
79
- target = double('target')
80
-
81
- allow(rb.current_world).to receive(:target) { target }
82
-
83
- dsl.Given(/With symbol on symbol/, :with_symbol, :on => :target)
84
-
85
- expect(target).to receive(:with_symbol)
86
-
87
- run_step "With symbol on symbol"
88
- end
89
-
90
- it "has the correct location" do
91
- dsl.Given /With symbol/, :with_symbol
92
- expect(step_match("With symbol").file_colon_line).to eq "spec/cucumber/rb_support/rb_step_definition_spec.rb:#{__LINE__-1}"
93
- end
94
- end
95
-
96
- it "raises UndefinedDynamicStep when inside step is not defined" do
97
- dsl.Given(/Outside/) do
98
- step 'Inside'
99
- end
100
-
101
- expect(-> {
102
- run_step "Outside"
103
- }).to raise_error(Cucumber::UndefinedDynamicStep)
104
- end
105
-
106
- it "raises UndefinedDynamicStep when an undefined step is parsed dynamically" do
107
- dsl.Given(/Outside/) do
108
- steps %{
109
- Given Inside
110
- }
111
- end
112
-
113
- expect(-> {
114
- run_step "Outside"
115
- }).to raise_error(Cucumber::UndefinedDynamicStep)
116
- end
117
-
118
- it "raises UndefinedDynamicStep when an undefined step with doc string is parsed dynamically" do
119
- dsl.Given(/Outside/) do
120
- steps %{
121
- Given Inside
122
- """
123
- abc
124
- """
125
- }
126
- end
127
-
128
- expect(-> {
129
- run_step "Outside"
130
- }).to raise_error(Cucumber::UndefinedDynamicStep)
131
- end
132
-
133
- it "raises UndefinedDynamicStep when an undefined step with data table is parsed dynamically" do
134
- dsl.Given(/Outside/) do
135
- steps %{
136
- Given Inside
137
- | a |
138
- | 1 |
139
- }
140
- end
141
-
142
- expect(-> {
143
- run_step "Outside"
144
- }).to raise_error(Cucumber::UndefinedDynamicStep)
145
- end
146
-
147
- it "allows forced pending" do
148
- dsl.Given(/Outside/) do
149
- pending("Do me!")
150
- end
151
-
152
- expect(-> {
153
- run_step "Outside"
154
- }).to raise_error(Cucumber::Pending, "Do me!")
155
- end
156
-
157
- it "raises ArityMismatchError when the number of capture groups differs from the number of step arguments" do
158
- dsl.Given(/No group: \w+/) do |arg|
159
- end
160
-
161
- expect(-> {
162
- run_step "No group: arg"
163
- }).to raise_error(Cucumber::ArityMismatchError)
164
- end
165
-
166
- it "does not modify the step_match arg when arg is modified in a step" do
167
- dsl.Given(/My car is (.*)/) do |colour|
168
- colour << "xxx"
169
- end
170
-
171
- step_name = "My car is white"
172
- step_args = step_match(step_name).args
173
-
174
- expect(-> {
175
- run_step step_name
176
- }).not_to change{ step_args.first }
177
- end
178
-
179
- it "allows puts" do
180
- expect(user_interface).to receive(:puts).with('wasup')
181
- dsl.Given(/Loud/) do
182
- puts 'wasup'
183
- end
184
- run_step "Loud"
185
- end
186
-
187
- it "recognizes $arg style captures" do
188
- arg_value = "wow!"
189
- dsl.Given "capture this: $arg" do |arg|
190
- expect(arg).to eq arg_value
191
- end
192
- run_step "capture this: wow!"
193
- end
194
-
195
- it "has a JSON representation of the signature" do
196
- expect(RbStepDefinition.new(rb, /I CAN HAZ (\d+) CUKES/i, lambda{}, {}).to_hash).to eq({ 'source' => "I CAN HAZ (\\d+) CUKES", 'flags' => 'i' })
197
- end
198
- end
199
- end
200
- end
@@ -1,47 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/rb_support/rb_transform'
4
-
5
- module Cucumber
6
- module RbSupport
7
- describe RbTransform do
8
- def transform(regexp)
9
- RbTransform.new(nil, regexp, lambda { |a| })
10
- end
11
-
12
- describe "#to_s" do
13
- it "does not touch positive lookahead captures" do
14
- expect(transform(/^xy(?=z)/).to_s).to eq "xy(?=z)"
15
- end
16
-
17
- it "does not touch negative lookahead captures" do
18
- expect(transform(/^xy(?!z)/).to_s).to eq "xy(?!z)"
19
- end
20
-
21
- it "does not touch positive lookbehind captures" do
22
- expect(transform(/^xy(?<=z)/).to_s).to eq "xy(?<=z)"
23
- end
24
-
25
- it "does not touch negative lookbehind captures" do
26
- expect(transform(/^xy(?<!z)/).to_s).to eq "xy(?<!z)"
27
- end
28
-
29
- it "converts named captures" do
30
- expect(transform(/^(?<str>xyz)/).to_s).to eq "(?:<str>xyz)"
31
- end
32
-
33
- it "converts captures groups to non-capture groups" do
34
- expect(transform(/(a|b)bc/).to_s).to eq "(?:a|b)bc"
35
- end
36
-
37
- it "leaves non capture groups alone" do
38
- expect(transform(/(?:a|b)bc/).to_s).to eq "(?:a|b)bc"
39
- end
40
-
41
- it "strips away anchors" do
42
- expect(transform(/^xyz$/).to_s).to eq "xyz"
43
- end
44
- end
45
- end
46
- end
47
- end
@@ -1,48 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/formatter/spec_helper'
4
- require 'cucumber/formatter/pretty'
5
-
6
- module Cucumber
7
- module RbSupport
8
- describe RbWorld do
9
- extend Cucumber::Formatter::SpecHelperDsl
10
- include Cucumber::Formatter::SpecHelper
11
-
12
- describe 'Handling puts in step definitions' do
13
- before(:each) do
14
- Cucumber::Term::ANSIColor.coloring = false
15
- @out = StringIO.new
16
- @formatter = Cucumber::Formatter::Pretty.new(runtime, @out, {})
17
- run_defined_feature
18
- end
19
-
20
- describe 'when modifying the printed variable after the call to puts' do
21
- define_feature <<-FEATURE
22
- Feature: Banana party
23
-
24
- Scenario: Monkey eats banana
25
- When puts is called twice for the same variable
26
- FEATURE
27
-
28
- define_steps do
29
- When(/^puts is called twice for the same variable$/) do
30
- foo = String.new('a')
31
- puts foo
32
- foo.upcase!
33
- puts foo
34
- end
35
- end
36
-
37
- it 'prints the variable value at the time puts was called' do
38
- expect( @out.string ).to include <<OUTPUT
39
- When puts is called twice for the same variable
40
- a
41
- A
42
- OUTPUT
43
- end
44
- end
45
- end
46
- end
47
- end
48
- end
@@ -1,138 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/rb_support/snippet'
4
-
5
- module Cucumber
6
- module RbSupport
7
- describe Snippet do
8
- let(:code_keyword) { "Given" }
9
-
10
- before do
11
- @pattern = 'we have a missing step'
12
- @multiline_argument = Core::Ast::EmptyMultilineArgument.new
13
- end
14
-
15
- let(:snippet) do
16
- snippet_class.new(code_keyword, @pattern, @multiline_argument)
17
- end
18
-
19
- def unindented(s)
20
- s.split("\n")[1..-2].join("\n").indent(-10)
21
- end
22
-
23
- describe Snippet::Regexp do
24
- let(:snippet_class) { Snippet::Regexp }
25
- let(:snippet_text) { snippet.to_s }
26
-
27
- it "wraps snippet patterns in parentheses" do
28
- @pattern = 'A "string" with 4 spaces'
29
-
30
- expect(snippet_text).to eq unindented(%{
31
- Given(/^A "([^"]*)" with (\\d+) spaces$/) do |arg1, arg2|
32
- pending # Write code here that turns the phrase above into concrete actions
33
- end
34
- })
35
- end
36
-
37
- it "recognises numbers in name and make according regexp" do
38
- @pattern = 'Cloud 9 yeah'
39
-
40
- expect(snippet_text).to eq unindented(%{
41
- Given(/^Cloud (\\d+) yeah$/) do |arg1|
42
- pending # Write code here that turns the phrase above into concrete actions
43
- end
44
- })
45
- end
46
-
47
- it "recognises a mix of ints, strings and why not a table too" do
48
- @pattern = 'I have 9 "awesome" cukes in 37 "boxes"'
49
- @multiline_argument = Core::Ast::DataTable.new([[]], Core::Ast::Location.new(''))
50
-
51
- expect(snippet_text).to eq unindented(%{
52
- Given(/^I have (\\d+) "([^"]*)" cukes in (\\d+) "([^"]*)"$/) do |arg1, arg2, arg3, arg4, table|
53
- # table is a Cucumber::MultilineArgument::DataTable
54
- pending # Write code here that turns the phrase above into concrete actions
55
- end
56
- })
57
- end
58
-
59
- it "recognises quotes in name and make according regexp" do
60
- @pattern = 'A "first" arg'
61
-
62
- expect(snippet_text).to eq unindented(%{
63
- Given(/^A "([^"]*)" arg$/) do |arg1|
64
- pending # Write code here that turns the phrase above into concrete actions
65
- end
66
- })
67
- end
68
-
69
- it "recognises several quoted words in name and make according regexp and args" do
70
- @pattern = 'A "first" and "second" arg'
71
-
72
- expect(snippet_text).to eq unindented(%{
73
- Given(/^A "([^"]*)" and "([^"]*)" arg$/) do |arg1, arg2|
74
- pending # Write code here that turns the phrase above into concrete actions
75
- end
76
- })
77
- end
78
-
79
- it "does not use quote group when there are no quotes" do
80
- @pattern = 'A first arg'
81
-
82
- expect(snippet_text).to eq unindented(%{
83
- Given(/^A first arg$/) do
84
- pending # Write code here that turns the phrase above into concrete actions
85
- end
86
- })
87
- end
88
-
89
- it "is helpful with tables" do
90
- @pattern = 'A "first" arg'
91
- @multiline_argument = Core::Ast::DataTable.new([[]], Core::Ast::Location.new(""))
92
-
93
- expect(snippet_text).to eq unindented(%{
94
- Given(/^A "([^"]*)" arg$/) do |arg1, table|
95
- # table is a Cucumber::MultilineArgument::DataTable
96
- pending # Write code here that turns the phrase above into concrete actions
97
- end
98
- })
99
- end
100
-
101
- it "is helpful with doc string" do
102
- @pattern = 'A "first" arg'
103
- @multiline_argument = MultilineArgument.from("", Core::Ast::Location.new(""))
104
-
105
- expect(snippet_text).to eq unindented(%{
106
- Given(/^A "([^"]*)" arg$/) do |arg1, string|
107
- pending # Write code here that turns the phrase above into concrete actions
108
- end
109
- })
110
- end
111
- end
112
-
113
- describe Snippet::Classic do
114
- let(:snippet_class) { Snippet::Classic }
115
-
116
- it "renders snippet as unwrapped regular expression" do
117
- expect(snippet.to_s).to eq unindented(%{
118
- Given /^we have a missing step$/ do
119
- pending # Write code here that turns the phrase above into concrete actions
120
- end
121
- })
122
- end
123
- end
124
-
125
- describe Snippet::Percent do
126
- let(:snippet_class) { Snippet::Percent }
127
-
128
- it "renders snippet as percent-style regular expression" do
129
- expect(snippet.to_s).to eq unindented(%{
130
- Given %r{^we have a missing step$} do
131
- pending # Write code here that turns the phrase above into concrete actions
132
- end
133
- })
134
- end
135
- end
136
- end
137
- end
138
- end
@@ -1,140 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'cucumber/running_test_case'
3
- require 'cucumber/core'
4
- require 'cucumber/core/gherkin/writer'
5
-
6
- module Cucumber
7
- describe RunningTestCase do
8
- include Core
9
- include Core::Gherkin::Writer
10
-
11
- attr_accessor :wrapped_test_case, :core_test_case
12
-
13
- let(:result) { double(:result, to_sym: :status_symbol) }
14
-
15
- before do
16
- receiver = double.as_null_object
17
- allow(receiver).to receive(:test_case) { |core_test_case|
18
- self.core_test_case = core_test_case
19
- self.wrapped_test_case = RunningTestCase.new(core_test_case).with_result(result)
20
- }
21
- compile [gherkin_doc], receiver
22
- end
23
-
24
- context "for a regular scenario" do
25
- let(:gherkin_doc) do
26
- gherkin do
27
- feature "feature name" do
28
- scenario "scenario name" do
29
- step "passing"
30
- end
31
- end
32
- end
33
- end
34
-
35
- it "sets the scenario name correctly" do
36
- expect(wrapped_test_case.name).to eq "scenario name"
37
- end
38
-
39
- it "sets the feature name correctly" do
40
- expect(wrapped_test_case.feature.name).to eq "feature name"
41
- end
42
-
43
- it "exposes properties of the test_case" do
44
- expect(wrapped_test_case.location).to eq core_test_case.location
45
- expect(wrapped_test_case.source).to eq core_test_case.source
46
- expect(wrapped_test_case.keyword).to eq core_test_case.keyword
47
- end
48
-
49
- it "exposes properties of the result" do
50
- expect(wrapped_test_case.status).to eq result.to_sym
51
- end
52
- end
53
-
54
- context "for a failed scenario" do
55
- let(:gherkin_doc) do
56
- gherkin do
57
- feature "feature name" do
58
- scenario "scenario name" do
59
- step "failed"
60
- end
61
- end
62
- end
63
- end
64
-
65
- let(:exception) { StandardError.new }
66
-
67
- before do
68
- self.wrapped_test_case = self.wrapped_test_case.with_result(Core::Test::Result::Failed.new(0, exception))
69
- end
70
-
71
- it "is failed?" do
72
- expect(wrapped_test_case.failed?).to be_truthy
73
- end
74
-
75
- it "exposes the exception" do
76
- expect(wrapped_test_case.exception).to eq exception
77
- end
78
- end
79
-
80
- context "for a passing scenario" do
81
- let(:gherkin_doc) do
82
- gherkin do
83
- feature "feature name" do
84
- scenario "scenario name" do
85
- step "passing"
86
- end
87
- end
88
- end
89
- end
90
-
91
- before do
92
- self.wrapped_test_case = self.wrapped_test_case.with_result(Core::Test::Result::Passed.new(0))
93
- end
94
-
95
- it "is not failed?" do
96
- expect(wrapped_test_case.failed?).to be_falsey
97
- end
98
-
99
- it "#exception is nil" do
100
- expect(wrapped_test_case.exception).to be_nil
101
- end
102
- end
103
-
104
- context "for a scenario outline" do
105
- let(:gherkin_doc) do
106
- gherkin do
107
- feature "feature name" do
108
- scenario_outline "scenario outline name" do
109
- step "passing with <arg1> <arg2>"
110
-
111
- examples "examples name" do
112
- row "arg1", "arg2"
113
- row "a", "b"
114
- end
115
- end
116
- end
117
- end
118
- end
119
-
120
- it "sets the test case's name correctly" do
121
- expect(wrapped_test_case.name).to eq "scenario outline name, examples name (#1)"
122
- end
123
-
124
- it "sets the feature name correctly" do
125
- expect(wrapped_test_case.feature.name).to eq "feature name"
126
- end
127
-
128
- it "exposes properties of the test_case" do
129
- expect(wrapped_test_case.location).to eq core_test_case.location
130
- expect(wrapped_test_case.source).to eq core_test_case.source
131
- expect(wrapped_test_case.keyword).to eq core_test_case.keyword
132
- end
133
-
134
- it "exposes the examples table row cell values" do
135
- expect(wrapped_test_case.cell_values).to eq ["a", "b"]
136
- end
137
-
138
- end
139
- end
140
- end