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,445 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'yaml'
4
- require 'cucumber/cli/options'
5
-
6
- module Cucumber
7
- module Cli
8
- describe Options do
9
-
10
- def given_cucumber_yml_defined_as(hash_or_string)
11
- allow(File).to receive(:exist?) { true }
12
-
13
- cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
14
-
15
- allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
16
- end
17
-
18
- before(:each) do
19
- allow(File).to receive(:exist?) { false } # Meaning, no cucumber.yml exists
20
- allow(Kernel).to receive(:exit)
21
- end
22
-
23
- def output_stream
24
- @output_stream ||= StringIO.new
25
- end
26
-
27
- def error_stream
28
- @error_stream ||= StringIO.new
29
- end
30
-
31
- def options
32
- @options ||= Options.new(output_stream, error_stream)
33
- end
34
-
35
- def prepare_args(args)
36
- args.is_a?(Array) ? args : args.split(' ')
37
- end
38
-
39
- describe 'parsing' do
40
-
41
- def when_parsing(args)
42
- yield
43
- options.parse!(prepare_args(args))
44
- end
45
-
46
- def after_parsing(args)
47
- options.parse!(prepare_args(args))
48
- yield
49
- end
50
-
51
- context '-r or --require' do
52
- it 'collects all specified files into an array' do
53
- after_parsing('--require some_file.rb -r another_file.rb') do
54
- expect(options[:require]).to eq ['some_file.rb', 'another_file.rb']
55
- end
56
- end
57
- end
58
-
59
- context '--i18n-languages' do
60
- include RSpec::WorkInProgress
61
-
62
- it 'lists all known languages' do
63
- after_parsing '--i18n-languages' do
64
- ::Gherkin::DIALECTS.keys.map do |key|
65
- expect(@output_stream.string).to include(key.to_s);
66
- end
67
- end
68
- end
69
-
70
- it 'exits the program' do
71
- when_parsing('--i18n-languages') { expect(Kernel).to receive(:exit) }
72
- end
73
- end
74
-
75
- context '--i18n-keywords' do
76
- context 'with invalid LANG' do
77
- include RSpec::WorkInProgress
78
-
79
- it 'exits' do
80
- when_parsing '--i18n-keywords foo' do
81
- expect(Kernel).to receive(:exit)
82
- end
83
- end
84
-
85
- it 'says the language was invalid' do
86
- after_parsing '--i18n-keywords foo' do
87
- expect(@output_stream.string).to include("Invalid language 'foo'. Available languages are:")
88
- end
89
- end
90
-
91
- it 'displays the language table' do
92
- after_parsing '--i18n-keywords foo' do
93
- ::Gherkin::DIALECTS.keys.map do |key|
94
- expect(@output_stream.string).to include(key.to_s);
95
- end
96
- end
97
- end
98
- end
99
- end
100
-
101
- context '-f FORMAT or --format FORMAT' do
102
- it 'defaults the output for the formatter to the output stream (STDOUT)' do
103
- after_parsing('-f pretty') { expect(options[:formats]).to eq [['pretty', {}, output_stream]] }
104
- end
105
-
106
- it 'extracts per-formatter options' do
107
- after_parsing('-f pretty,foo=bar,foo2=bar2') do
108
- expect(options[:formats]).to eq [['pretty', { 'foo' => 'bar', 'foo2' => 'bar2' }, output_stream]]
109
- end
110
- end
111
- end
112
-
113
- context '-o [FILE|DIR] or --out [FILE|DIR]' do
114
- it "defaults the formatter to 'pretty' when not specified earlier" do
115
- after_parsing('-o file.txt') { expect(options[:formats]).to eq [['pretty', {}, 'file.txt']] }
116
- end
117
- it 'sets the output for the formatter defined immediatly before it' do
118
- after_parsing('-f profile --out file.txt -f pretty -o file2.txt') do
119
- expect(options[:formats]).to eq [['profile', {}, 'file.txt'], ['pretty', {}, 'file2.txt']]
120
- end
121
- end
122
- end
123
-
124
- context 'handling multiple formatters' do
125
- it 'catches multiple command line formatters using the same stream' do
126
- expect{ options.parse!(prepare_args('-f pretty -f progress')) }.to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
127
- end
128
-
129
- it 'catches multiple profile formatters using the same stream' do
130
- given_cucumber_yml_defined_as({'default' => '-f progress -f pretty'})
131
- options = Options.new(output_stream, error_stream, :default_profile => 'default')
132
-
133
- expect{ options.parse!(%w{}) }.to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
134
- end
135
-
136
- it 'profiles does not affect the catching of multiple command line formatters using the same stream' do
137
- given_cucumber_yml_defined_as({'default' => '-q'})
138
- options = Options.new(output_stream, error_stream, :default_profile => 'default')
139
-
140
- expect{ options.parse!(%w{-f progress -f pretty}) }.to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
141
- end
142
-
143
- it 'merges profile formatters and command line formatters' do
144
- given_cucumber_yml_defined_as({'default' => '-f junit -o result.xml'})
145
- options = Options.new(output_stream, error_stream, :default_profile => 'default')
146
-
147
- options.parse!(%w{-f pretty})
148
-
149
- expect(options[:formats]).to eq [['pretty', {}, output_stream], ['junit', {}, 'result.xml']]
150
- end
151
- end
152
-
153
- context '-t TAGS --tags TAGS' do
154
- it 'handles tag expressions as argument' do
155
- after_parsing(['--tags', 'not @foo or @bar']) { expect(options[:tag_expressions]).to eq ['not @foo or @bar'] }
156
- end
157
-
158
- it 'stores tags passed with different --tags seperately' do
159
- after_parsing('--tags @foo --tags @bar') { expect(options[:tag_expressions]).to eq ['@foo', '@bar'] }
160
- end
161
-
162
- it 'strips tag limits from the tag expressions stored' do
163
- after_parsing(['--tags', 'not @foo:2 or @bar:3']) { expect(options[:tag_expressions]).to eq ['not @foo or @bar'] }
164
- end
165
-
166
- it 'stores tag limits separately' do
167
- after_parsing(['--tags', 'not @foo:2 or @bar:3']) { expect(options[:tag_limits]).to eq Hash('@foo' => 2, '@bar' => 3) }
168
- end
169
-
170
- it 'raise exception for inconsistent tag limits' do
171
- expect{ after_parsing('--tags @foo:2 --tags @foo:3') }.to raise_error(RuntimeError, 'Inconsistent tag limits for @foo: 2 and 3')
172
-
173
- end
174
- end
175
-
176
- context '-n NAME or --name NAME' do
177
- it 'stores the provided names as regular expressions' do
178
- after_parsing('-n foo --name bar') { expect(options[:name_regexps]).to eq [/foo/,/bar/] }
179
- end
180
- end
181
-
182
- context '-e PATTERN or --exclude PATTERN' do
183
- it 'stores the provided exclusions as regular expressions' do
184
- after_parsing('-e foo --exclude bar') { expect(options[:excludes]).to eq [/foo/,/bar/] }
185
- end
186
- end
187
-
188
- context '-l LINES or --lines LINES' do
189
- it 'adds line numbers to args' do
190
- options.parse!(%w{-l24 FILE})
191
-
192
- expect(options.instance_variable_get(:@args)).to eq ['FILE:24']
193
- end
194
- end
195
-
196
- context '-p PROFILE or --profile PROFILE' do
197
- it 'uses the default profile passed in during initialization if none are specified by the user' do
198
- given_cucumber_yml_defined_as({'default' => '--require some_file'})
199
-
200
- options = Options.new(output_stream, error_stream, :default_profile => 'default')
201
- options.parse!(%w{--format progress})
202
-
203
- expect(options[:require]).to include('some_file')
204
- end
205
-
206
- it 'merges all uniq values from both cmd line and the profile' do
207
- given_cucumber_yml_defined_as('foo' => %w[--verbose])
208
- options.parse!(%w[--wip --profile foo])
209
-
210
- expect(options[:wip]).to be true
211
- expect(options[:verbose]).to be true
212
- end
213
-
214
- it "gives precendene to the origianl options' paths" do
215
- given_cucumber_yml_defined_as('foo' => %w[features])
216
- options.parse!(%w[my.feature -p foo])
217
-
218
- expect(options[:paths]).to eq %w[my.feature]
219
- end
220
-
221
- it 'combines the require files of both' do
222
- given_cucumber_yml_defined_as('bar' => %w[--require features -r dog.rb])
223
- options.parse!(%w[--require foo.rb -p bar])
224
-
225
- expect(options[:require]).to eq %w[foo.rb features dog.rb]
226
- end
227
-
228
- it 'combines the tag names of both' do
229
- given_cucumber_yml_defined_as('baz' => %w[-t @bar])
230
- options.parse!(%w[--tags @foo -p baz])
231
-
232
- expect(options[:tag_expressions]).to eq ['@foo', '@bar']
233
- end
234
-
235
- it 'combines the tag limits of both' do
236
- given_cucumber_yml_defined_as('baz' => %w[-t @bar:2])
237
- options.parse!(%w[--tags @foo:3 -p baz])
238
-
239
- expect(options[:tag_limits]).to eq Hash('@foo' => 3, '@bar' => 2)
240
- end
241
-
242
- it 'raise exceptions for inconsistent tag limits' do
243
- given_cucumber_yml_defined_as('baz' => %w[-t @bar:2])
244
-
245
- expect{ options.parse!(%w[--tags @bar:3 -p baz]) }.to raise_error(RuntimeError, 'Inconsistent tag limits for @bar: 3 and 2')
246
- end
247
-
248
- it 'only takes the paths from the original options, and disgregards the profiles' do
249
- given_cucumber_yml_defined_as('baz' => %w[features])
250
- options.parse!(%w[my.feature -p baz])
251
-
252
- expect(options[:paths]).to eq ['my.feature']
253
- end
254
-
255
- it 'uses the paths from the profile when none are specified originally' do
256
- given_cucumber_yml_defined_as('baz' => %w[some.feature])
257
- options.parse!(%w[-p baz])
258
-
259
- expect(options[:paths]).to eq ['some.feature']
260
- end
261
-
262
- it 'combines environment variables from the profile but gives precendene to cmd line args' do
263
- given_cucumber_yml_defined_as('baz' => %w[FOO=bar CHEESE=swiss])
264
- options.parse!(%w[-p baz CHEESE=cheddar BAR=foo])
265
-
266
- expect(options[:env_vars]).to eq({ 'BAR' => 'foo', 'FOO' => 'bar', 'CHEESE' => 'cheddar' })
267
- end
268
-
269
- it 'disregards STDOUT formatter defined in profile when another is passed in (via cmd line)' do
270
- given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
271
- options.parse!(%w{--format progress --profile foo})
272
-
273
- expect(options[:formats]).to eq [['progress', {}, output_stream]]
274
- end
275
-
276
- it 'includes any non-STDOUT formatters from the profile' do
277
- given_cucumber_yml_defined_as({'html' => %w[--format html -o features.html]})
278
- options.parse!(%w{--format progress --profile html})
279
-
280
- expect(options[:formats]).to eq [['progress', {}, output_stream], ['html', {}, 'features.html']]
281
- end
282
-
283
- it 'does not include STDOUT formatters from the profile if there is a STDOUT formatter in command line' do
284
- given_cucumber_yml_defined_as({'html' => %w[--format html -o features.html --format pretty]})
285
- options.parse!(%w{--format progress --profile html})
286
-
287
- expect(options[:formats]).to eq [['progress', {}, output_stream], ['html', {}, 'features.html']]
288
- end
289
-
290
- it 'includes any STDOUT formatters from the profile if no STDOUT formatter was specified in command line' do
291
- given_cucumber_yml_defined_as({'html' => %w[--format html]})
292
- options.parse!(%w{--format rerun -o rerun.txt --profile html})
293
-
294
- expect(options[:formats]).to eq [['html', {}, output_stream], ['rerun', {}, 'rerun.txt']]
295
- end
296
-
297
- it 'assumes all of the formatters defined in the profile when none are specified on cmd line' do
298
- given_cucumber_yml_defined_as({'html' => %w[--format progress --format html -o features.html]})
299
- options.parse!(%w{--profile html})
300
-
301
- expect(options[:formats]).to eq [['progress', {}, output_stream], ['html', {}, 'features.html']]
302
- end
303
-
304
- it 'only reads cucumber.yml once' do
305
- original_parse_count = $cucumber_yml_read_count
306
- $cucumber_yml_read_count = 0
307
-
308
- begin
309
- given_cucumber_yml_defined_as(<<-END
310
- <% $cucumber_yml_read_count += 1 %>
311
- default: --format pretty
312
- END
313
- )
314
- options = Options.new(output_stream, error_stream, :default_profile => 'default')
315
- options.parse!(%w(-f progress))
316
-
317
- expect($cucumber_yml_read_count).to eq 1
318
- ensure
319
- $cucumber_yml_read_count = original_parse_count
320
- end
321
- end
322
-
323
- it 'respects --quiet when defined in the profile' do
324
- given_cucumber_yml_defined_as('foo' => '-q')
325
- options.parse!(%w[-p foo])
326
-
327
- expect(options[:snippets]).to be false
328
- expect(options[:source]).to be false
329
- expect(options[:duration]).to be false
330
- end
331
-
332
- it 'uses --no-duration when defined in the profile' do
333
- given_cucumber_yml_defined_as('foo' => '--no-duration')
334
- options.parse!(%w[-p foo])
335
-
336
- expect(options[:duration]).to be false
337
- end
338
- end
339
-
340
- context '-P or --no-profile' do
341
- it 'disables profiles' do
342
- given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
343
-
344
- after_parsing('-P --require some_file.rb') do
345
- expect(options[:require]).to eq ['some_file.rb']
346
- end
347
- end
348
-
349
- it 'notifies the user that the profiles are being disabled' do
350
- given_cucumber_yml_defined_as({'default' => '-v'})
351
-
352
- after_parsing('--no-profile --require some_file.rb') do
353
- expect(output_stream.string).to match(/Disabling profiles.../)
354
- end
355
- end
356
- end
357
-
358
- context '-b or --backtrace' do
359
- it "turns on cucumber's full backtrace" do
360
- when_parsing('-b') do
361
- expect(Cucumber).to receive(:use_full_backtrace=).with(true)
362
- end
363
- end
364
- end
365
-
366
- context '--version' do
367
- it "displays Cucumber's version" do
368
- after_parsing('--version') do
369
- expect(output_stream.string).to match(/#{Cucumber::VERSION}/)
370
- end
371
- end
372
-
373
- it 'exits the program' do
374
- when_parsing('--version') { expect(Kernel).to receive(:exit) }
375
- end
376
- end
377
-
378
- context 'environment variables (i.e. MODE=webrat)' do
379
- it 'places all of the environment variables into a hash' do
380
- after_parsing('MODE=webrat FOO=bar') do
381
- expect(options[:env_vars]).to eq({ 'MODE' => 'webrat', 'FOO' => 'bar' })
382
- end
383
- end
384
- end
385
-
386
- context '--retry ATTEMPTS' do
387
- it 'is 0 by default' do
388
- after_parsing('') do
389
- expect(options[:retry]).to eql 0
390
- end
391
- end
392
-
393
- it 'sets the options[:retry] value' do
394
- after_parsing('--retry 4') do
395
- expect(options[:retry]).to eql 4
396
- end
397
- end
398
- end
399
-
400
- it 'assigns any extra arguments as paths to features' do
401
- after_parsing('-f pretty my_feature.feature my_other_features') do
402
- expect(options[:paths]).to eq ['my_feature.feature', 'my_other_features']
403
- end
404
- end
405
-
406
- it 'does not mistake environment variables as feature paths' do
407
- after_parsing('my_feature.feature FOO=bar') do
408
- expect(options[:paths]).to eq ['my_feature.feature']
409
- end
410
- end
411
-
412
- context '--snippet-type' do
413
- it 'parses the snippet type argument' do
414
- after_parsing('--snippet-type classic') do
415
- expect(options[:snippet_type]).to eq :classic
416
- end
417
- end
418
- end
419
- end
420
-
421
- describe 'dry-run' do
422
- it 'has the default value for snippets' do
423
- given_cucumber_yml_defined_as({'foo' => %w[--dry-run]})
424
- options.parse!(%w{--dry-run})
425
-
426
- expect(options[:snippets]).to be true
427
- end
428
-
429
- it 'sets snippets to false when no-snippets provided after dry-run' do
430
- given_cucumber_yml_defined_as({'foo' => %w[--dry-run --no-snippets]})
431
- options.parse!(%w{--dry-run --no-snippets})
432
-
433
- expect(options[:snippets]).to be false
434
- end
435
-
436
- it 'sets snippets to false when no-snippets provided before dry-run' do
437
- given_cucumber_yml_defined_as({'foo' => %w[--no-snippet --dry-run]})
438
- options.parse!(%w{--no-snippets --dry-run})
439
-
440
- expect(options[:snippets]).to be false
441
- end
442
- end
443
- end
444
- end
445
- end
@@ -1,66 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
- require 'yaml'
4
-
5
- module Cucumber
6
- module Cli
7
- describe ProfileLoader do
8
- def given_cucumber_yml_defined_as(hash_or_string)
9
- allow(Dir).to receive(:glob).with('{,.config/,config/}cucumber{.yml,.yaml}') { ['cucumber.yml'] }
10
- allow(File).to receive(:exist?) { true }
11
-
12
- cucumber_yml = hash_or_string.is_a?(Hash) ? hash_or_string.to_yaml : hash_or_string
13
-
14
- allow(IO).to receive(:read).with('cucumber.yml') { cucumber_yml }
15
- end
16
-
17
- def loader
18
- ProfileLoader.new
19
- end
20
-
21
- it 'treats backslashes as literals in rerun.txt when on Windows (JRuby or MRI)' do
22
- given_cucumber_yml_defined_as('default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22')
23
- if(Cucumber::WINDOWS)
24
- expect(loader.args_from('default')).to eq ['--format','pretty','features\sync_imap_mailbox.feature:16:22']
25
- else
26
- expect(loader.args_from('default')).to eq ['--format','pretty','featuressync_imap_mailbox.feature:16:22']
27
- end
28
- end
29
-
30
- it 'treats forward slashes as literals' do
31
- given_cucumber_yml_defined_as('default' => '--format "ugly" features/sync_imap_mailbox.feature:16:22')
32
-
33
- expect(loader.args_from('default')).to eq ['--format','ugly','features/sync_imap_mailbox.feature:16:22']
34
- end
35
-
36
- it 'treats percent sign as ERB code block after YAML directive' do
37
- yml = <<-HERE
38
- ---
39
- % x = '--format "pretty" features/sync_imap_mailbox.feature:16:22'
40
- default: <%= x %>
41
- HERE
42
- given_cucumber_yml_defined_as yml
43
- expect(loader.args_from('default')).to eq ['--format','pretty','features/sync_imap_mailbox.feature:16:22']
44
- end
45
-
46
- it 'correctly parses a profile that uses tag expressions (with double quotes)' do
47
- given_cucumber_yml_defined_as('default' => '--format "pretty" features\sync_imap_mailbox.feature:16:22 --tags "not @jruby"')
48
- if(Cucumber::WINDOWS)
49
- expect(loader.args_from('default')).to eq ['--format','pretty','features\sync_imap_mailbox.feature:16:22','--tags','not @jruby']
50
- else
51
- expect(loader.args_from('default')).to eq ['--format','pretty','featuressync_imap_mailbox.feature:16:22','--tags','not @jruby']
52
- end
53
- end
54
-
55
- it 'correctly parses a profile that uses tag expressions (with single quotes)' do
56
- given_cucumber_yml_defined_as('default' => "--format 'pretty' features\\sync_imap_mailbox.feature:16:22 --tags 'not @jruby'")
57
- if(Cucumber::WINDOWS)
58
- expect(loader.args_from('default')).to eq ['--format','pretty','features\sync_imap_mailbox.feature:16:22','--tags','not @jruby']
59
- else
60
- expect(loader.args_from('default')).to eq ['--format','pretty','featuressync_imap_mailbox.feature:16:22','--tags','not @jruby']
61
- end
62
- end
63
-
64
- end
65
- end
66
- end
@@ -1,86 +0,0 @@
1
- # frozen_string_literal: true
2
- require 'spec_helper'
3
-
4
- module Cucumber
5
- module Cli
6
- describe RerunFile do
7
-
8
- let(:rerun_file) { RerunFile.new('@rerun.txt') }
9
-
10
- it 'expects rerun files to have a leading @' do
11
- allow(File).to receive(:file?) { true }
12
- expect(RerunFile.can_read?('rerun.txt')).to eq false
13
- expect(RerunFile.can_read?('@rerun.txt')).to eq true
14
- end
15
-
16
- it 'does not treat directories as rerun files' do
17
- allow(File).to receive(:file?) { false }
18
- expect(RerunFile.can_read?('@rerun.txt')).to eq false
19
- end
20
-
21
- it 'removes leading @ character from filename' do
22
- expect(rerun_file.path).to eq 'rerun.txt'
23
- end
24
-
25
- context 'rerun file containing single feature' do
26
- before(:each) do
27
- allow(IO).to receive(:read).and_return('cucumber.feature')
28
- end
29
-
30
- it 'produces an array containing a single feature file path' do
31
- expect(rerun_file.features).to eq %w(cucumber.feature)
32
- end
33
- end
34
-
35
- context 'contains multiple features on multiple lines' do
36
- before(:each) do
37
- allow(IO).to receive(:read).and_return("cucumber.feature\nfoo.feature")
38
- end
39
-
40
- it 'produces an array containing multiple feature file paths' do
41
- expect(rerun_file.features).to eq %w(cucumber.feature foo.feature)
42
- end
43
- end
44
-
45
- context 'contains multiple features on same line' do
46
- before(:each) do
47
- allow(IO).to receive(:read).and_return('cucumber.feature foo.feature')
48
- end
49
-
50
- it 'produces an array containing multiple feature file paths' do
51
- expect(rerun_file.features).to eq %w(cucumber.feature foo.feature)
52
- end
53
- end
54
-
55
- context 'contains multiple scenarios on same line' do
56
- before(:each) do
57
- allow(IO).to receive(:read).and_return('cucumber.feature:8 foo.feature:8:16')
58
- end
59
-
60
- it 'produces an array containing multiple feature file paths with scenario lines' do
61
- expect(rerun_file.features).to eq %w(cucumber.feature:8 foo.feature:8:16)
62
- end
63
- end
64
-
65
- context 'contains features with spaces in file names' do
66
- before(:each) do
67
- allow(IO).to receive(:read).and_return('cucumber test.feature:8 foo.feature:8:16')
68
- end
69
-
70
- it 'produces an array containing multiple feature file paths with scenario lines' do
71
- expect(rerun_file.features).to eq ['cucumber test.feature:8', 'foo.feature:8:16']
72
- end
73
- end
74
-
75
- context 'contains multiple scenarios without spaces between them' do
76
- before(:each) do
77
- allow(IO).to receive(:read).and_return('cucumber test.feature:8foo.feature:8:16')
78
- end
79
-
80
- it 'produces an array containing multiple feature file paths with scenario lines' do
81
- expect(rerun_file.features).to eq ['cucumber test.feature:8', 'foo.feature:8:16']
82
- end
83
- end
84
- end
85
- end
86
- end