cucumber 3.0.0 → 3.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (429) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +53 -3
  3. data/CONTRIBUTING.md +2 -4
  4. data/README.md +6 -5
  5. data/lib/cucumber/cli/options.rb +3 -1
  6. data/lib/cucumber/errors.rb +1 -1
  7. data/lib/cucumber/events/test_step_finished.rb +0 -2
  8. data/lib/cucumber/events/test_step_started.rb +0 -2
  9. data/lib/cucumber/events.rb +0 -1
  10. data/lib/cucumber/filters/quit.rb +0 -1
  11. data/lib/cucumber/formatter/html.rb +1 -1
  12. data/lib/cucumber/formatter/html_builder.rb +1 -1
  13. data/lib/cucumber/formatter/ignore_missing_messages.rb +0 -1
  14. data/lib/cucumber/formatter/json.rb +1 -1
  15. data/lib/cucumber/formatter/json_pretty.rb +0 -1
  16. data/lib/cucumber/formatter/junit.rb +6 -2
  17. data/lib/cucumber/formatter/rerun.rb +1 -1
  18. data/lib/cucumber/formatter/summary.rb +0 -1
  19. data/lib/cucumber/glue/dsl.rb +6 -2
  20. data/lib/cucumber/glue/proto_world.rb +2 -0
  21. data/lib/cucumber/glue/step_definition.rb +1 -1
  22. data/lib/cucumber/glue/world_factory.rb +1 -1
  23. data/lib/cucumber/hooks.rb +12 -0
  24. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +0 -1
  25. data/lib/cucumber/multiline_argument/data_table.rb +6 -10
  26. data/lib/cucumber/multiline_argument.rb +1 -1
  27. data/lib/cucumber/step_definitions.rb +1 -1
  28. data/lib/cucumber/step_match.rb +4 -1
  29. data/lib/cucumber/step_match_search.rb +1 -1
  30. data/lib/cucumber/version +1 -1
  31. metadata +32 -571
  32. data/.coveralls.yml +0 -1
  33. data/.cucumberproignore +0 -6
  34. data/.gitattributes +0 -32
  35. data/.github/ISSUE_TEMPLATE.md +0 -48
  36. data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
  37. data/.rspec +0 -1
  38. data/.rubocop.yml +0 -13
  39. data/.rubocop_todo.yml +0 -991
  40. data/.ruby-gemset +0 -1
  41. data/.travis.yml +0 -69
  42. data/.yardopts +0 -1
  43. data/Gemfile +0 -28
  44. data/Rakefile +0 -32
  45. data/appveyor.yml +0 -27
  46. data/cucumber.gemspec +0 -52
  47. data/cucumber.yml +0 -19
  48. data/examples/i18n/README.textile +0 -3
  49. data/examples/i18n/Rakefile +0 -33
  50. data/examples/i18n/ar/Rakefile +0 -6
  51. data/examples/i18n/ar/features/addition.feature +0 -17
  52. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
  53. data/examples/i18n/ar/lib/calculator.rb +0 -11
  54. data/examples/i18n/bg/Rakefile +0 -6
  55. data/examples/i18n/bg/features/addition.feature +0 -12
  56. data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
  57. data/examples/i18n/bg/features/division.feature +0 -17
  58. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
  59. data/examples/i18n/bg/features/support/env.rb +0 -10
  60. data/examples/i18n/bg/features/support/world.rb +0 -8
  61. data/examples/i18n/bg/lib/calculator.rb +0 -25
  62. data/examples/i18n/ca/Rakefile +0 -6
  63. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
  64. data/examples/i18n/ca/features/suma.feature +0 -17
  65. data/examples/i18n/ca/lib/calculadora.rb +0 -16
  66. data/examples/i18n/cs/Rakefile +0 -6
  67. data/examples/i18n/cs/features/addition.feature +0 -17
  68. data/examples/i18n/cs/features/division.feature +0 -11
  69. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
  70. data/examples/i18n/cs/lib/calculator.rb +0 -14
  71. data/examples/i18n/da/Rakefile +0 -6
  72. data/examples/i18n/da/features/sammenlaegning.feature +0 -18
  73. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
  74. data/examples/i18n/da/lib/lommeregner.rb +0 -11
  75. data/examples/i18n/de/Rakefile +0 -6
  76. data/examples/i18n/de/features/addition.feature +0 -17
  77. data/examples/i18n/de/features/division.feature +0 -10
  78. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
  79. data/examples/i18n/de/lib/calculator.rb +0 -14
  80. data/examples/i18n/el/Rakefile +0 -6
  81. data/examples/i18n/el/features/addition.feature +0 -17
  82. data/examples/i18n/el/features/division.feature +0 -10
  83. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
  84. data/examples/i18n/el/lib/calculator.rb +0 -14
  85. data/examples/i18n/en/Rakefile +0 -6
  86. data/examples/i18n/en/features/addition.feature +0 -17
  87. data/examples/i18n/en/features/division.feature +0 -10
  88. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
  89. data/examples/i18n/en/lib/calculator.rb +0 -14
  90. data/examples/i18n/en-lol/Rakefile +0 -4
  91. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
  92. data/examples/i18n/en-lol/features/stuffing.feature +0 -8
  93. data/examples/i18n/en-lol/features/support/env.rb +0 -11
  94. data/examples/i18n/en-lol/lib/basket.rb +0 -12
  95. data/examples/i18n/en-lol/lib/belly.rb +0 -11
  96. data/examples/i18n/eo/Rakefile +0 -6
  97. data/examples/i18n/eo/features/adicio.feature +0 -17
  98. data/examples/i18n/eo/features/divido.feature +0 -10
  99. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
  100. data/examples/i18n/eo/lib/calculator.rb +0 -14
  101. data/examples/i18n/es/Rakefile +0 -6
  102. data/examples/i18n/es/features/adicion.feature +0 -17
  103. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
  104. data/examples/i18n/es/lib/calculador.rb +0 -14
  105. data/examples/i18n/et/Rakefile +0 -6
  106. data/examples/i18n/et/features/jagamine.feature +0 -10
  107. data/examples/i18n/et/features/liitmine.feature +0 -17
  108. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
  109. data/examples/i18n/et/lib/kalkulaator.rb +0 -14
  110. data/examples/i18n/fi/Rakefile +0 -6
  111. data/examples/i18n/fi/features/jakolasku.feature +0 -10
  112. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
  113. data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
  114. data/examples/i18n/fi/lib/laskin.rb +0 -14
  115. data/examples/i18n/fr/Rakefile +0 -8
  116. data/examples/i18n/fr/features/addition.feature +0 -18
  117. data/examples/i18n/fr/features/addition2.feature +0 -17
  118. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
  119. data/examples/i18n/fr/features/support/env.rb +0 -10
  120. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  121. data/examples/i18n/he/Rakefile +0 -6
  122. data/examples/i18n/he/features/addition.feature +0 -17
  123. data/examples/i18n/he/features/division.feature +0 -10
  124. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
  125. data/examples/i18n/he/lib/calculator.rb +0 -15
  126. data/examples/i18n/hi/Rakefile +0 -6
  127. data/examples/i18n/hi/features/addition.feature +0 -16
  128. data/examples/i18n/hi/features/division.feature +0 -10
  129. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
  130. data/examples/i18n/hi/lib/calculator.rb +0 -15
  131. data/examples/i18n/ht/Rakefile +0 -6
  132. data/examples/i18n/ht/features/adisyon.feature +0 -17
  133. data/examples/i18n/ht/features/divizyon.feature +0 -10
  134. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
  135. data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
  136. data/examples/i18n/hu/Rakefile +0 -6
  137. data/examples/i18n/hu/features/osszeadas.feature +0 -17
  138. data/examples/i18n/hu/features/osztas.feature +0 -10
  139. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
  140. data/examples/i18n/hu/lib/calculator.rb +0 -14
  141. data/examples/i18n/id/Rakefile +0 -6
  142. data/examples/i18n/id/features/addition.feature +0 -17
  143. data/examples/i18n/id/features/division.feature +0 -10
  144. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
  145. data/examples/i18n/id/lib/calculator.rb +0 -14
  146. data/examples/i18n/it/Rakefile +0 -6
  147. data/examples/i18n/it/features/somma.feature +0 -11
  148. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
  149. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  150. data/examples/i18n/ja/Rakefile +0 -6
  151. data/examples/i18n/ja/features/addition.feature +0 -17
  152. data/examples/i18n/ja/features/division.feature +0 -10
  153. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
  154. data/examples/i18n/ja/features/support/env.rb +0 -10
  155. data/examples/i18n/ja/lib/calculator.rb +0 -14
  156. data/examples/i18n/ko/Rakefile +0 -6
  157. data/examples/i18n/ko/features/addition.feature +0 -17
  158. data/examples/i18n/ko/features/division.feature +0 -11
  159. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
  160. data/examples/i18n/ko/lib/calculator.rb +0 -14
  161. data/examples/i18n/lt/Rakefile +0 -6
  162. data/examples/i18n/lt/features/addition.feature +0 -17
  163. data/examples/i18n/lt/features/division.feature +0 -10
  164. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
  165. data/examples/i18n/lt/lib/calculator.rb +0 -14
  166. data/examples/i18n/lv/Rakefile +0 -6
  167. data/examples/i18n/lv/features/addition.feature +0 -17
  168. data/examples/i18n/lv/features/division.feature +0 -10
  169. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
  170. data/examples/i18n/lv/lib/calculator.rb +0 -14
  171. data/examples/i18n/no/Rakefile +0 -6
  172. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
  173. data/examples/i18n/no/features/summering.feature +0 -19
  174. data/examples/i18n/no/features/support/env.rb +0 -11
  175. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  176. data/examples/i18n/pl/Rakefile +0 -6
  177. data/examples/i18n/pl/features/addition.feature +0 -17
  178. data/examples/i18n/pl/features/division.feature +0 -10
  179. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
  180. data/examples/i18n/pl/features/support/env.rb +0 -10
  181. data/examples/i18n/pl/lib/calculator.rb +0 -14
  182. data/examples/i18n/pt/Rakefile +0 -6
  183. data/examples/i18n/pt/features/adicao.feature +0 -11
  184. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
  185. data/examples/i18n/pt/features/support/env.rb +0 -10
  186. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  187. data/examples/i18n/ro/Rakefile +0 -6
  188. data/examples/i18n/ro/features/adunare.feature +0 -12
  189. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
  190. data/examples/i18n/ro/lib/calculator.rb +0 -11
  191. data/examples/i18n/ru/Rakefile +0 -6
  192. data/examples/i18n/ru/features/addition.feature +0 -11
  193. data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
  194. data/examples/i18n/ru/features/division.feature +0 -16
  195. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
  196. data/examples/i18n/ru/features/support/env.rb +0 -10
  197. data/examples/i18n/ru/features/support/world.rb +0 -8
  198. data/examples/i18n/ru/lib/calculator.rb +0 -25
  199. data/examples/i18n/sk/Rakefile +0 -6
  200. data/examples/i18n/sk/features/addition.feature +0 -17
  201. data/examples/i18n/sk/features/division.feature +0 -10
  202. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
  203. data/examples/i18n/sk/lib/calculator.rb +0 -14
  204. data/examples/i18n/sr-Cyrl/Rakefile +0 -6
  205. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
  206. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
  207. data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
  208. data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
  209. data/examples/i18n/sr-Latn/Rakefile +0 -6
  210. data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
  211. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
  212. data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
  213. data/examples/i18n/sv/Rakefile +0 -6
  214. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
  215. data/examples/i18n/sv/features/summering.feature +0 -18
  216. data/examples/i18n/sv/lib/kalkulator.rb +0 -11
  217. data/examples/i18n/tr/Rakefile +0 -6
  218. data/examples/i18n/tr/features/bolme.feature +0 -10
  219. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
  220. data/examples/i18n/tr/features/toplama.feature +0 -18
  221. data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
  222. data/examples/i18n/uk/Rakefile +0 -6
  223. data/examples/i18n/uk/features/addition.feature +0 -11
  224. data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
  225. data/examples/i18n/uk/features/division.feature +0 -16
  226. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
  227. data/examples/i18n/uk/features/support/env.rb +0 -10
  228. data/examples/i18n/uk/features/support/world.rb +0 -8
  229. data/examples/i18n/uk/lib/calculator.rb +0 -25
  230. data/examples/i18n/uz/Rakefile +0 -6
  231. data/examples/i18n/uz/features/addition.feature +0 -10
  232. data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
  233. data/examples/i18n/uz/features/division.feature +0 -17
  234. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
  235. data/examples/i18n/uz/features/support/env.rb +0 -10
  236. data/examples/i18n/uz/features/support/world.rb +0 -8
  237. data/examples/i18n/uz/lib/calculator.rb +0 -25
  238. data/examples/i18n/zh-CN/Rakefile +0 -4
  239. data/examples/i18n/zh-CN/features/addition.feature +0 -18
  240. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
  241. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  242. data/examples/i18n/zh-TW/Rakefile +0 -4
  243. data/examples/i18n/zh-TW/features/addition.feature +0 -17
  244. data/examples/i18n/zh-TW/features/division.feature +0 -11
  245. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
  246. data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
  247. data/examples/rspec_doubles/Rakefile +0 -4
  248. data/examples/rspec_doubles/features/mocking.feature +0 -9
  249. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
  250. data/examples/rspec_doubles/features/support/env.rb +0 -12
  251. data/examples/sinatra/README.textile +0 -13
  252. data/examples/sinatra/Rakefile +0 -6
  253. data/examples/sinatra/app.rb +0 -14
  254. data/examples/sinatra/features/add.feature +0 -11
  255. data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
  256. data/examples/sinatra/features/support/env.rb +0 -15
  257. data/examples/sinatra/views/add.erb +0 -7
  258. data/examples/sinatra/views/layout.erb +0 -8
  259. data/examples/tcl/README.textile +0 -11
  260. data/examples/tcl/Rakefile +0 -6
  261. data/examples/tcl/features/fibonnacci.feature +0 -17
  262. data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
  263. data/examples/tcl/features/support/env.rb +0 -7
  264. data/examples/tcl/src/fib.tcl +0 -3
  265. data/examples/test_unit/Gemfile +0 -4
  266. data/examples/test_unit/Rakefile +0 -6
  267. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
  268. data/examples/test_unit/features/test_unit.feature +0 -9
  269. data/examples/watir/README.textile +0 -16
  270. data/examples/watir/Rakefile +0 -12
  271. data/examples/watir/cucumber.yml +0 -1
  272. data/examples/watir/features/search.feature +0 -12
  273. data/examples/watir/features/step_definitions/search_steps.rb +0 -27
  274. data/examples/watir/features/support/env.rb +0 -39
  275. data/examples/watir/features/support/screenshots.rb +0 -47
  276. data/features/docs/api/list_step_defs_as_json.feature +0 -64
  277. data/features/docs/api/listen_for_events.feature +0 -59
  278. data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
  279. data/features/docs/cli/backtraces.feature +0 -36
  280. data/features/docs/cli/dry_run.feature +0 -73
  281. data/features/docs/cli/exclude_files.feature +0 -18
  282. data/features/docs/cli/execute_with_tag_filter.feature +0 -119
  283. data/features/docs/cli/fail_fast.feature +0 -48
  284. data/features/docs/cli/finding_steps.feature +0 -28
  285. data/features/docs/cli/help.feature +0 -8
  286. data/features/docs/cli/i18n.feature +0 -42
  287. data/features/docs/cli/randomize.feature +0 -140
  288. data/features/docs/cli/require.feature +0 -27
  289. data/features/docs/cli/retry_failing_tests.feature +0 -92
  290. data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
  291. data/features/docs/cli/run_specific_scenarios.feature +0 -77
  292. data/features/docs/cli/showing_differences.feature +0 -43
  293. data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
  294. data/features/docs/cli/strict_mode.feature +0 -70
  295. data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
  296. data/features/docs/defining_steps/nested_steps.feature +0 -181
  297. data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
  298. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
  299. data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
  300. data/features/docs/defining_steps/printing_messages.feature +0 -147
  301. data/features/docs/defining_steps/skip_scenario.feature +0 -31
  302. data/features/docs/defining_steps/snippets.feature +0 -56
  303. data/features/docs/defining_steps/table_diffing.feature +0 -50
  304. data/features/docs/events/gherkin_source_read_event.feature +0 -43
  305. data/features/docs/events/step_activated_event.feature +0 -36
  306. data/features/docs/events/step_definition_registered_event.feature +0 -29
  307. data/features/docs/events/test_case_finished_event.feature +0 -35
  308. data/features/docs/events/test_case_started_event.feature +0 -54
  309. data/features/docs/events/test_run_finished_event.feature +0 -40
  310. data/features/docs/events/test_run_started_event.feature +0 -41
  311. data/features/docs/events/test_step_finished_event.feature +0 -47
  312. data/features/docs/events/test_step_started_event.feature +0 -43
  313. data/features/docs/exception_in_after_hook.feature +0 -127
  314. data/features/docs/exception_in_after_step_hook.feature +0 -104
  315. data/features/docs/exception_in_around_hook.feature +0 -80
  316. data/features/docs/exception_in_before_hook.feature +0 -98
  317. data/features/docs/extending_cucumber/custom_filter.feature +0 -29
  318. data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
  319. data/features/docs/formatters/api_methods.feature +0 -37
  320. data/features/docs/formatters/html_formatter.feature +0 -91
  321. data/features/docs/formatters/json_formatter.feature +0 -767
  322. data/features/docs/formatters/junit_formatter.feature +0 -455
  323. data/features/docs/formatters/pretty_formatter.feature +0 -74
  324. data/features/docs/formatters/progress_formatter.feature +0 -32
  325. data/features/docs/formatters/rerun_formatter.feature +0 -190
  326. data/features/docs/formatters/summary_formatter.feature +0 -35
  327. data/features/docs/formatters/usage_formatter.feature +0 -101
  328. data/features/docs/getting_started.feature +0 -28
  329. data/features/docs/gherkin/background.feature +0 -548
  330. data/features/docs/gherkin/doc_strings.feature +0 -76
  331. data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
  332. data/features/docs/gherkin/language_from_header.feature +0 -32
  333. data/features/docs/gherkin/outlines.feature +0 -158
  334. data/features/docs/gherkin/unicode_table.feature +0 -33
  335. data/features/docs/gherkin/using_descriptions.feature +0 -83
  336. data/features/docs/gherkin/using_star_notation.feature +0 -37
  337. data/features/docs/iso-8859-1.feature +0 -6
  338. data/features/docs/post_configuration_hook.feature +0 -33
  339. data/features/docs/profiles.feature +0 -120
  340. data/features/docs/rake_task.feature +0 -146
  341. data/features/docs/raketask.feature +0 -46
  342. data/features/docs/work_in_progress.feature +0 -157
  343. data/features/docs/writing_support_code/after_hooks.feature +0 -102
  344. data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
  345. data/features/docs/writing_support_code/around_hooks.feature +0 -266
  346. data/features/docs/writing_support_code/before_hook.feature +0 -66
  347. data/features/docs/writing_support_code/hook_order.feature +0 -63
  348. data/features/docs/writing_support_code/load_path.feature +0 -17
  349. data/features/docs/writing_support_code/parameter_types.feature +0 -53
  350. data/features/docs/writing_support_code/state.feature +0 -32
  351. data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
  352. data/features/docs/writing_support_code/world.feature +0 -129
  353. data/features/lib/step_definitions/aruba_steps.rb +0 -21
  354. data/features/lib/step_definitions/cli_steps.rb +0 -4
  355. data/features/lib/step_definitions/cucumber_steps.rb +0 -75
  356. data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
  357. data/features/lib/step_definitions/json_steps.rb +0 -8
  358. data/features/lib/step_definitions/junit_steps.rb +0 -14
  359. data/features/lib/step_definitions/language_steps.rb +0 -9
  360. data/features/lib/step_definitions/profile_steps.rb +0 -16
  361. data/features/lib/step_definitions/retry_steps.rb +0 -55
  362. data/features/lib/step_definitions/ruby_steps.rb +0 -4
  363. data/features/lib/support/env.rb +0 -22
  364. data/features/lib/support/fake_wire_server.rb +0 -94
  365. data/features/lib/support/feature_factory.rb +0 -68
  366. data/features/lib/support/normalise_output.rb +0 -52
  367. data/features/lib/support/parameter_types.rb +0 -5
  368. data/gem_tasks/contributors.rake +0 -19
  369. data/gem_tasks/cov.rake +0 -6
  370. data/gem_tasks/downloads.rb +0 -8
  371. data/gem_tasks/environment.rake +0 -4
  372. data/gem_tasks/examples.rake +0 -12
  373. data/gem_tasks/fix_cr_lf.rake +0 -22
  374. data/gem_tasks/flog.rake +0 -5
  375. data/gem_tasks/rspec.rake +0 -7
  376. data/gem_tasks/sass.rake +0 -5
  377. data/gem_tasks/stats +0 -16
  378. data/gem_tasks/versions.txt +0 -74
  379. data/scripts/invite-collaborator +0 -40
  380. data/scripts/update-changelog +0 -86
  381. data/spec/cucumber/cli/configuration_spec.rb +0 -446
  382. data/spec/cucumber/cli/main_spec.rb +0 -84
  383. data/spec/cucumber/cli/options_spec.rb +0 -445
  384. data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
  385. data/spec/cucumber/cli/rerun_spec.rb +0 -86
  386. data/spec/cucumber/configuration_spec.rb +0 -148
  387. data/spec/cucumber/constantize_spec.rb +0 -20
  388. data/spec/cucumber/events_spec.rb +0 -9
  389. data/spec/cucumber/file_specs_spec.rb +0 -61
  390. data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
  391. data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
  392. data/spec/cucumber/filters/retry_spec.rb +0 -98
  393. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
  394. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
  395. data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
  396. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
  397. data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
  398. data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
  399. data/spec/cucumber/formatter/duration_spec.rb +0 -23
  400. data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
  401. data/spec/cucumber/formatter/html_spec.rb +0 -543
  402. data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
  403. data/spec/cucumber/formatter/json_spec.rb +0 -815
  404. data/spec/cucumber/formatter/junit_spec.rb +0 -251
  405. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
  406. data/spec/cucumber/formatter/pretty_spec.rb +0 -907
  407. data/spec/cucumber/formatter/progress_spec.rb +0 -170
  408. data/spec/cucumber/formatter/rerun_spec.rb +0 -97
  409. data/spec/cucumber/formatter/spec_helper.rb +0 -84
  410. data/spec/cucumber/glue/proto_world_spec.rb +0 -63
  411. data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
  412. data/spec/cucumber/glue/snippet_spec.rb +0 -174
  413. data/spec/cucumber/glue/step_definition_spec.rb +0 -207
  414. data/spec/cucumber/hooks_spec.rb +0 -31
  415. data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
  416. data/spec/cucumber/project_initializer_spec.rb +0 -88
  417. data/spec/cucumber/rake/forked_spec.rb +0 -58
  418. data/spec/cucumber/rake/task_spec.rb +0 -86
  419. data/spec/cucumber/running_test_case_spec.rb +0 -140
  420. data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
  421. data/spec/cucumber/runtime/support_code_spec.rb +0 -17
  422. data/spec/cucumber/runtime_spec.rb +0 -21
  423. data/spec/cucumber/sell_cucumbers.feature +0 -19
  424. data/spec/cucumber/step_argument_spec.rb +0 -19
  425. data/spec/cucumber/step_match_search_spec.rb +0 -113
  426. data/spec/cucumber/step_match_spec.rb +0 -86
  427. data/spec/cucumber/world/pending_spec.rb +0 -48
  428. data/spec/spec_helper.rb +0 -30
  429. data/spec/support/standard_step_actions.rb +0 -19
@@ -1,88 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'tmpdir'
4
-
5
- module Cucumber
6
- describe ProjectInitializer, :isolated_home => true do
7
- let(:command_line_config) { ProjectInitializer.new }
8
-
9
- before do
10
- allow(command_line_config).to receive(:puts)
11
- end
12
-
13
- context 'no files created' do
14
- around(:example) do |example|
15
-
16
- dir = Dir.mktmpdir
17
- original_dir = Dir.pwd
18
- begin
19
- FileUtils.cd dir
20
- example.call
21
- ensure
22
- FileUtils.cd original_dir
23
- FileUtils.rm_rf dir
24
- end
25
- end
26
-
27
- it 'should create features directory' do
28
- expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features$)
29
- command_line_config.run
30
- end
31
-
32
- it 'should create step_definitions directory' do
33
- expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/step_definitions$)
34
- command_line_config.run
35
- end
36
-
37
- it 'should create support directory' do
38
- expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support$)
39
- command_line_config.run
40
- end
41
-
42
- it 'should create env.rb directory' do
43
- expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support/env.rb$)
44
- command_line_config.run
45
- end
46
-
47
- end
48
-
49
- context 'files created' do
50
- around(:example) do |example|
51
- dir = Dir.mktmpdir
52
- FileUtils.mkdir_p "#{dir}/features"
53
- FileUtils.mkdir_p "#{dir}/features/step_definitions"
54
- FileUtils.mkdir_p "#{dir}/features/support"
55
- FileUtils.touch "#{dir}/features/support/env.rb"
56
- original_dir = Dir.pwd
57
- begin
58
- FileUtils.cd dir
59
- example.call
60
- ensure
61
- FileUtils.cd original_dir
62
- FileUtils.rm_rf dir
63
- end
64
- end
65
-
66
- it 'should not create features directory' do
67
- expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features$)
68
- command_line_config.run
69
- end
70
-
71
- it 'should not create step_definitions directory' do
72
- expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/step_definitions$)
73
- command_line_config.run
74
- end
75
-
76
- it 'should not create support directory' do
77
- expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support$)
78
- command_line_config.run
79
- end
80
-
81
- it 'should not create env.rb directory' do
82
- expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support/env.rb$)
83
- command_line_config.run
84
- end
85
-
86
- end
87
- end
88
- end
@@ -1,58 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/rake/task'
4
- require 'rake'
5
-
6
- module Cucumber
7
- module Rake
8
- describe Task::ForkedCucumberRunner do
9
- let(:libs) { ['lib'] }
10
- let(:binary) { Cucumber::BINARY }
11
- let(:cucumber_opts) { ['--cuke-option'] }
12
- let(:feature_files) { ['./some.feature'] }
13
-
14
- context 'when running with bundler' do
15
- let(:bundler) { true }
16
-
17
- subject { Task::ForkedCucumberRunner.new(
18
- libs, binary, cucumber_opts, bundler, feature_files) }
19
-
20
- it 'does use bundler if bundler is set to true' do
21
- expect(subject.use_bundler).to be true
22
- end
23
-
24
- it 'uses bundle exec to find cucumber and libraries' do
25
- expect(subject.cmd).to eq [
26
- Cucumber::RUBY_BINARY,
27
- '-S',
28
- 'bundle',
29
- 'exec',
30
- 'cucumber',
31
- '--cuke-option'
32
- ] + feature_files
33
- end
34
- end
35
-
36
- context 'when running without bundler' do
37
- let(:bundler) { false }
38
-
39
- subject { Task::ForkedCucumberRunner.new(
40
- libs, binary, cucumber_opts, bundler, feature_files) }
41
-
42
- it 'does not use bundler if bundler is set to false' do
43
- expect(subject.use_bundler).to be false
44
- end
45
-
46
- it 'uses well known cucumber location and specified libraries' do
47
- expect(subject.cmd).to eq [
48
- Cucumber::RUBY_BINARY,
49
- '-I',
50
- '"lib"',
51
- "\"#{Cucumber::BINARY}\"",
52
- '--cuke-option'
53
- ] + feature_files
54
- end
55
- end
56
- end
57
- end
58
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/rake/task'
4
- require 'rake'
5
-
6
- module Cucumber
7
- module Rake
8
- describe Task do
9
-
10
- describe '#cucumber_opts' do
11
- before { subject.cucumber_opts = opts }
12
-
13
- context 'when set via array' do
14
- let(:opts) { %w[ foo bar ] }
15
- it { expect(subject.cucumber_opts).to be opts }
16
- end
17
-
18
- context 'when set via space-delimited string' do
19
- let(:opts) { 'foo bar' }
20
- it { expect(subject.cucumber_opts).to eq %w[ foo bar ] }
21
- end
22
- end
23
-
24
- describe '#cucumber_opts_with_profile' do
25
- before do
26
- subject.cucumber_opts = opts
27
- subject.profile = profile
28
- end
29
-
30
- context 'with cucumber_opts' do
31
- let(:opts) { %w[ foo bar ] }
32
-
33
- context 'without profile' do
34
- let(:profile) { nil }
35
-
36
- it 'should return just cucumber_opts' do
37
- expect(subject.cucumber_opts_with_profile).to be opts
38
- end
39
- end
40
-
41
- context 'with profile' do
42
- let(:profile) { 'fancy' }
43
-
44
- it 'should combine opts and profile into an array, prepending --profile option' do
45
- expect(subject.cucumber_opts_with_profile).to eq %w[ foo bar --profile fancy ]
46
- end
47
- end
48
-
49
- context 'with multiple profiles' do
50
- let(:profile) { %w[ fancy pants ] }
51
-
52
- it 'should combine opts and each profile into an array, prepending --profile option' do
53
- expect(subject.cucumber_opts_with_profile).to eq %w[ foo bar --profile fancy --profile pants ]
54
- end
55
- end
56
- end
57
-
58
- context 'without cucumber_opts' do
59
- let(:opts) { nil }
60
-
61
- context 'without profile' do
62
- let(:profile) { nil }
63
-
64
- it { expect(subject.cucumber_opts_with_profile).to eq [] }
65
- end
66
-
67
- context 'with profile' do
68
- let(:profile) { 'fancy' }
69
-
70
- it 'should combine opts and profile into an array, prepending --profile option' do
71
- expect(subject.cucumber_opts_with_profile).to eq %w[ --profile fancy ]
72
- end
73
- end
74
-
75
- context 'with multiple profiles' do
76
- let(:profile) { %w[ fancy pants ] }
77
-
78
- it 'should combine opts and each profile into an array, prepending --profile option' do
79
- expect(subject.cucumber_opts_with_profile).to eq %w[ --profile fancy --profile pants ]
80
- end
81
- end
82
- end
83
- end
84
- end
85
- end
86
- 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 %w(a b)
136
- end
137
-
138
- end
139
- end
140
- end
@@ -1,8 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Cucumber
5
- describe Runtime::ForProgrammingLanguages do
6
- it 'should probably be inlined'
7
- end
8
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Cucumber
5
- describe Runtime::SupportCode do
6
- let(:user_interface) { double('user interface') }
7
- subject { Runtime::SupportCode.new(user_interface, configuration) }
8
- let(:configuration) { Configuration.new(options) }
9
- let(:options) { {}}
10
- let(:dsl) do
11
- @rb = subject.ruby
12
- Object.new.extend(RbSupport::RbDsl)
13
- end
14
-
15
-
16
- end
17
- end
@@ -1,21 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Cucumber
5
- describe Runtime do
6
- subject { Runtime.new(options) }
7
- let(:options) { {} }
8
-
9
- describe '#features_paths' do
10
- let(:options) { {:paths => ['foo/bar/baz.feature', 'foo/bar/features/baz.feature', 'other_features'] } }
11
-
12
- it 'returns the value from configuration.paths' do
13
- expect(subject.features_paths).to eq options[:paths]
14
- end
15
- end
16
-
17
- it '#doc_string' do
18
- expect(subject.doc_string('Text')).to eq 'Text'
19
- end
20
- end
21
- end
@@ -1,19 +0,0 @@
1
- Feature: Sell cucumbers
2
- As a cucumber farmer
3
- I want to sell cucumbers
4
- So that I buy meat
5
-
6
- Scenario: Sell a dozen
7
- Given there are 5 cucumbers
8
- When I sell 12 cucumbers
9
- Then I should owe 7 cucumbers
10
-
11
- Scenario: Sell twenty
12
- Given there are 5 cucumbers
13
- When I sell 20 cucumbers
14
- Then I should owe 15 cucumbers
15
-
16
- Scenario: Sell fifty
17
- Given there are 5 cucumbers
18
- When I sell 50 cucumbers
19
- Then I should owe 45 cucumbers
@@ -1,19 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'cucumber/step_argument'
4
-
5
- module Cucumber
6
- describe StepArgument do
7
- it 'creates 2 arguments' do
8
- arguments = StepArgument.arguments_from(/I (\w+) (\w+)/, 'I like fish')
9
-
10
- expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [['like', 2], ['fish', 7]]
11
- end
12
-
13
- it 'creates 2 arguments when first group is optional' do
14
- arguments = StepArgument.arguments_from(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
15
-
16
- expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [[nil, nil], ['Login failed.', 21]]
17
- end
18
- end
19
- end
@@ -1,113 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'cucumber/step_match_search'
3
- require 'cucumber/glue/dsl'
4
- require 'cucumber/glue/registry_and_more'
5
- require 'cucumber/configuration'
6
-
7
- module Cucumber
8
- describe StepMatchSearch do
9
-
10
- let(:search) { StepMatchSearch.new(registry.method(:step_matches), configuration) }
11
- let(:registry) { Glue::RegistryAndMore.new(runtime, configuration) }
12
- let(:runtime) do
13
- # TODO: break out step definitions collection from Glue::RegistryAndMore so we don't need this
14
- :unused
15
- end
16
- let(:configuration) { Configuration.new(options) }
17
- let(:options) { {} }
18
- let(:dsl) do
19
- # TODO: stop relying on implicit global state
20
- registry
21
- Object.new.extend(Glue::Dsl)
22
- end
23
-
24
- context 'caching' do
25
- it 'caches step match results' do
26
- dsl.Given(/it (.*) in (.*)/) { |what, month| }
27
-
28
- step_match = search.call('it snows in april').first
29
-
30
- expect(registry).not_to receive(:step_matches)
31
- second_step_match = search.call('it snows in april').first
32
-
33
- expect(step_match).to equal(second_step_match)
34
- end
35
- end
36
-
37
- describe 'resolving step defintion matches' do
38
-
39
- it 'raises Ambiguous error with guess hint when multiple step definitions match' do
40
- expected_error = %{Ambiguous match of "Three blind mice":
41
-
42
- spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three (.*) mice/'
43
- spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three blind (.*)/'
44
-
45
- You can run again with --guess to make Cucumber be more smart about it
46
- }
47
- dsl.Given(/Three (.*) mice/) {|disability|}
48
- dsl.Given(/Three blind (.*)/) {|animal|}
49
-
50
- expect(-> {
51
- search.call('Three blind mice').first
52
- }).to raise_error(Ambiguous, /#{expected_error}/)
53
- end
54
-
55
- describe 'when --guess is used' do
56
- let(:options) { {:guess => true} }
57
-
58
- it 'does not show --guess hint' do
59
- expected_error = %{Ambiguous match of "Three cute mice":
60
-
61
- spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three (.*) mice/'
62
- spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three cute (.*)/'
63
-
64
- }
65
- dsl.Given(/Three (.*) mice/) {|disability|}
66
- dsl.Given(/Three cute (.*)/) {|animal|}
67
-
68
- expect(-> {
69
- search.call('Three cute mice').first
70
- }).to raise_error(Ambiguous, /#{expected_error}/)
71
- end
72
-
73
- it 'does not raise Ambiguous error when multiple step definitions match' do
74
- dsl.Given(/Three (.*) mice/) {|disability|}
75
- dsl.Given(/Three (.*)/) {|animal|}
76
-
77
- expect(-> {
78
- search.call('Three blind mice').first
79
- }).not_to raise_error
80
- end
81
-
82
- it 'picks right step definition when an equal number of capture groups' do
83
- right = dsl.Given(/Three (.*) mice/) {|disability|}
84
- _wrong = dsl.Given(/Three (.*)/) {|animal|}
85
-
86
- expect(search.call('Three blind mice').first.step_definition).to eq right
87
- end
88
-
89
- it 'picks right step definition when an unequal number of capture groups' do
90
- right = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
91
- _wrong = dsl.Given(/Three (.*)/) {|animal|}
92
-
93
- expect(search.call('Three blind mice ran far').first.step_definition).to eq right
94
- end
95
-
96
- it 'picks most specific step definition when an unequal number of capture groups' do
97
- _general = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
98
- _specific = dsl.Given(/Three blind mice ran far/) do; end
99
- more_specific = dsl.Given(/^Three blind mice ran far$/) do; end
100
-
101
- expect(search.call('Three blind mice ran far').first.step_definition).to eq more_specific
102
- end
103
- end
104
-
105
- # TODO: remove this - it's ... redundant
106
- # http://railsforum.com/viewtopic.php?pid=93881
107
- it "does not raise Redundant unless it's really redundant" do
108
- dsl.Given(/^(.*) (.*) user named '(.*)'$/) {|a,b,c|}
109
- dsl.Given(/^there is no (.*) user named '(.*)'$/) {|a,b|}
110
- end
111
- end
112
- end
113
- end
@@ -1,86 +0,0 @@
1
- # encoding: utf-8
2
- # frozen_string_literal: true
3
- require 'spec_helper'
4
- require 'cucumber/glue/step_definition'
5
- require 'cucumber/glue/registry_and_more'
6
-
7
- module Cucumber
8
- describe StepMatch do
9
- WORD = '[[:word:]]'
10
-
11
- before do
12
- @registry = Glue::RegistryAndMore.new(nil, Configuration.new)
13
- end
14
-
15
- def stepdef(string_or_regexp)
16
- Glue::StepDefinition.new(@registry, string_or_regexp, lambda{}, {})
17
- end
18
-
19
- def step_match(regexp, name)
20
- stepdef = stepdef(regexp)
21
- StepMatch.new(stepdef, name, stepdef.arguments_from(name))
22
- end
23
-
24
- it 'formats step names' do
25
- m = step_match(/it (.*) in (.*)/, 'it snows in april')
26
- format = m.format_args('[%s]')
27
- expect(format).to eq 'it [snows] in [april]'
28
- end
29
-
30
- it 'formats one group when we use Unicode' do
31
- m = step_match(/I (#{WORD}+) ok/, "I æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ ok")
32
-
33
- expect(m.format_args('<span>%s</span>')).to eq "I <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> ok"
34
- end
35
-
36
- it 'formats several groups when we use Unicode' do
37
- m = step_match(/I (#{WORD}+) (#{WORD}+) (#{WORD}+) this (#{WORD}+)/, "I ate æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ egg this morning")
38
-
39
- expect(m.format_args('<span>%s</span>')).to eq "I <span>ate</span> <span>æøåÆØÅæøåÆØÅæøåÆØÅæøåÆØÅ</span> <span>egg</span> this <span>morning</span>"
40
- end
41
-
42
- it 'deals with Unicode both inside and outside arguments' do
43
- expect("Jæ vø ålsker døtte løndet").to match(/Jæ (.+) ålsker (.+) løndet/)
44
-
45
- m = step_match(/Jæ (#{WORD}+) ålsker (#{WORD}+) løndet/, "Jæ vø ålsker døtte løndet")
46
-
47
- expect(m.format_args('<span>%s</span>')).to eq "Jæ <span>vø</span> ålsker <span>døtte</span> løndet"
48
- end
49
-
50
- it 'formats groups with format string' do
51
- m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I ate 1 egg this morning')
52
-
53
- expect(m.format_args('<span>%s</span>')).to eq 'I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>'
54
- end
55
-
56
- it 'formats groups with format string when there are dupes' do
57
- m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I bob 1 bo this bobs')
58
-
59
- expect(m.format_args('<span>%s</span>')).to eq 'I <span>bob</span> <span>1</span> <span>bo</span> this <span>bobs</span>'
60
- end
61
-
62
- it 'formats groups with block' do
63
- m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I ate 1 egg this morning')
64
-
65
- expect(m.format_args(&lambda{|m| "<span>#{m}</span>"})).to eq 'I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>'
66
- end
67
-
68
- it 'formats groups with proc object' do
69
- m = step_match(/I (#{WORD}+) (\d+) (#{WORD}+) this (#{WORD}+)/, 'I ate 1 egg this morning')
70
-
71
- expect(m.format_args(lambda{|m| "<span>#{m}</span>"})).to eq 'I <span>ate</span> <span>1</span> <span>egg</span> this <span>morning</span>'
72
- end
73
-
74
- it 'formats groups even when first group is optional and not matched' do
75
- m = step_match(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
76
-
77
- expect(m.format_args('<span>%s</span>')).to eq "I should be flashed '<span>Login failed.</span>'"
78
- end
79
-
80
- it 'formats embedded groups' do
81
- m = step_match(/running( (\d+) times)? (\d+) meters/, 'running 5 times 10 meters')
82
-
83
- expect(m.format_args('<span>%s</span>')).to eq 'running<span> 5 times</span> <span>10</span> meters'
84
- end
85
- end
86
- end