cucumber 3.0.1 → 3.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (517) hide show
  1. checksums.yaml +5 -5
  2. data/CHANGELOG.md +84 -4
  3. data/CONTRIBUTING.md +3 -4
  4. data/README.md +12 -12
  5. data/lib/autotest/cucumber.rb +1 -0
  6. data/lib/autotest/cucumber_mixin.rb +1 -0
  7. data/lib/autotest/cucumber_rails.rb +1 -0
  8. data/lib/autotest/cucumber_rails_rspec.rb +1 -0
  9. data/lib/autotest/cucumber_rails_rspec2.rb +1 -0
  10. data/lib/autotest/cucumber_rspec.rb +1 -0
  11. data/lib/autotest/cucumber_rspec2.rb +1 -0
  12. data/lib/autotest/discover.rb +1 -0
  13. data/lib/cucumber.rb +1 -0
  14. data/lib/cucumber/cli/configuration.rb +1 -0
  15. data/lib/cucumber/cli/main.rb +2 -2
  16. data/lib/cucumber/cli/options.rb +63 -55
  17. data/lib/cucumber/cli/profile_loader.rb +5 -7
  18. data/lib/cucumber/cli/rerun_file.rb +1 -0
  19. data/lib/cucumber/configuration.rb +8 -7
  20. data/lib/cucumber/constantize.rb +6 -5
  21. data/lib/cucumber/core_ext/string.rb +1 -0
  22. data/lib/cucumber/deprecate.rb +1 -1
  23. data/lib/cucumber/encoding.rb +2 -1
  24. data/lib/cucumber/errors.rb +2 -1
  25. data/lib/cucumber/events.rb +1 -2
  26. data/lib/cucumber/events/gherkin_source_read.rb +1 -4
  27. data/lib/cucumber/events/step_activated.rb +4 -5
  28. data/lib/cucumber/events/step_definition_registered.rb +4 -8
  29. data/lib/cucumber/events/test_case_finished.rb +0 -4
  30. data/lib/cucumber/events/test_case_started.rb +0 -4
  31. data/lib/cucumber/events/test_run_finished.rb +2 -3
  32. data/lib/cucumber/events/test_run_started.rb +2 -4
  33. data/lib/cucumber/events/test_step_finished.rb +0 -6
  34. data/lib/cucumber/events/test_step_started.rb +1 -7
  35. data/lib/cucumber/file_specs.rb +2 -1
  36. data/lib/cucumber/filters.rb +1 -0
  37. data/lib/cucumber/filters/activate_steps.rb +1 -1
  38. data/lib/cucumber/filters/apply_after_hooks.rb +1 -0
  39. data/lib/cucumber/filters/apply_after_step_hooks.rb +1 -0
  40. data/lib/cucumber/filters/apply_around_hooks.rb +1 -0
  41. data/lib/cucumber/filters/apply_before_hooks.rb +1 -0
  42. data/lib/cucumber/filters/broadcast_test_run_started_event.rb +2 -1
  43. data/lib/cucumber/filters/gated_receiver.rb +1 -2
  44. data/lib/cucumber/filters/prepare_world.rb +2 -5
  45. data/lib/cucumber/filters/quit.rb +2 -4
  46. data/lib/cucumber/filters/randomizer.rb +6 -7
  47. data/lib/cucumber/filters/retry.rb +2 -2
  48. data/lib/cucumber/filters/tag_limits.rb +2 -2
  49. data/lib/cucumber/filters/tag_limits/test_case_index.rb +1 -2
  50. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -2
  51. data/lib/cucumber/formatter/ansicolor.rb +13 -12
  52. data/lib/cucumber/formatter/backtrace_filter.rb +1 -2
  53. data/lib/cucumber/formatter/console.rb +11 -12
  54. data/lib/cucumber/formatter/console_counts.rb +4 -4
  55. data/lib/cucumber/formatter/console_issues.rb +3 -3
  56. data/lib/cucumber/formatter/duration.rb +1 -0
  57. data/lib/cucumber/formatter/duration_extractor.rb +1 -1
  58. data/lib/cucumber/formatter/fail_fast.rb +9 -6
  59. data/lib/cucumber/formatter/fanout.rb +1 -3
  60. data/lib/cucumber/formatter/hook_query_visitor.rb +1 -0
  61. data/lib/cucumber/formatter/html.rb +28 -32
  62. data/lib/cucumber/formatter/html_builder.rb +3 -2
  63. data/lib/cucumber/formatter/http_io.rb +146 -0
  64. data/lib/cucumber/formatter/ignore_missing_messages.rb +1 -3
  65. data/lib/cucumber/formatter/interceptor.rb +18 -5
  66. data/lib/cucumber/formatter/io.rb +18 -11
  67. data/lib/cucumber/formatter/json.rb +11 -4
  68. data/lib/cucumber/formatter/json_pretty.rb +1 -1
  69. data/lib/cucumber/formatter/junit.rb +22 -17
  70. data/lib/cucumber/formatter/pretty.rb +4 -3
  71. data/lib/cucumber/formatter/progress.rb +3 -2
  72. data/lib/cucumber/formatter/rerun.rb +2 -1
  73. data/lib/cucumber/formatter/stepdefs.rb +1 -0
  74. data/lib/cucumber/formatter/steps.rb +2 -2
  75. data/lib/cucumber/formatter/summary.rb +1 -2
  76. data/lib/cucumber/formatter/unicode.rb +2 -2
  77. data/lib/cucumber/formatter/usage.rb +22 -19
  78. data/lib/cucumber/gherkin/data_table_parser.rb +1 -0
  79. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +86 -85
  80. data/lib/cucumber/gherkin/formatter/escaping.rb +13 -12
  81. data/lib/cucumber/gherkin/i18n.rb +1 -0
  82. data/lib/cucumber/gherkin/steps_parser.rb +1 -0
  83. data/lib/cucumber/glue/dsl.rb +1 -0
  84. data/lib/cucumber/glue/hook.rb +1 -0
  85. data/lib/cucumber/glue/invoke_in_world.rb +3 -3
  86. data/lib/cucumber/glue/proto_world.rb +10 -9
  87. data/lib/cucumber/glue/registry_and_more.rb +13 -12
  88. data/lib/cucumber/glue/snippet.rb +1 -5
  89. data/lib/cucumber/glue/step_definition.rb +10 -10
  90. data/lib/cucumber/glue/world_factory.rb +1 -3
  91. data/lib/cucumber/hooks.rb +13 -3
  92. data/lib/cucumber/load_path.rb +1 -0
  93. data/lib/cucumber/multiline_argument.rb +3 -3
  94. data/lib/cucumber/multiline_argument/data_table.rb +16 -20
  95. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +7 -11
  96. data/lib/cucumber/multiline_argument/doc_string.rb +1 -0
  97. data/lib/cucumber/platform.rb +2 -1
  98. data/lib/cucumber/project_initializer.rb +1 -1
  99. data/lib/cucumber/rake/task.rb +8 -5
  100. data/lib/cucumber/rspec/disable_option_parser.rb +1 -0
  101. data/lib/cucumber/rspec/doubles.rb +1 -0
  102. data/lib/cucumber/running_test_case.rb +2 -1
  103. data/lib/cucumber/runtime.rb +6 -6
  104. data/lib/cucumber/runtime/after_hooks.rb +1 -0
  105. data/lib/cucumber/runtime/before_hooks.rb +1 -0
  106. data/lib/cucumber/runtime/for_programming_languages.rb +8 -7
  107. data/lib/cucumber/runtime/step_hooks.rb +2 -0
  108. data/lib/cucumber/runtime/support_code.rb +3 -7
  109. data/lib/cucumber/runtime/user_interface.rb +2 -3
  110. data/lib/cucumber/step_argument.rb +1 -0
  111. data/lib/cucumber/step_definition_light.rb +2 -1
  112. data/lib/cucumber/step_definitions.rb +2 -1
  113. data/lib/cucumber/step_match.rb +9 -8
  114. data/lib/cucumber/step_match_search.rb +8 -9
  115. data/lib/cucumber/term/ansicolor.rb +30 -30
  116. data/lib/cucumber/unit.rb +1 -0
  117. data/lib/cucumber/version +1 -1
  118. data/lib/simplecov_setup.rb +1 -0
  119. metadata +64 -659
  120. data/.coveralls.yml +0 -1
  121. data/.cucumberproignore +0 -6
  122. data/.gitattributes +0 -32
  123. data/.github/ISSUE_TEMPLATE.md +0 -48
  124. data/.github/PULL_REQUEST_TEMPLATE.md +0 -40
  125. data/.rspec +0 -1
  126. data/.rubocop.yml +0 -13
  127. data/.rubocop_todo.yml +0 -991
  128. data/.ruby-gemset +0 -1
  129. data/.travis.yml +0 -70
  130. data/.yardopts +0 -1
  131. data/Gemfile +0 -28
  132. data/Rakefile +0 -32
  133. data/appveyor.yml +0 -27
  134. data/cucumber.gemspec +0 -52
  135. data/cucumber.yml +0 -19
  136. data/examples/i18n/README.textile +0 -3
  137. data/examples/i18n/Rakefile +0 -33
  138. data/examples/i18n/ar/Rakefile +0 -6
  139. data/examples/i18n/ar/features/addition.feature +0 -17
  140. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +0 -29
  141. data/examples/i18n/ar/lib/calculator.rb +0 -11
  142. data/examples/i18n/bg/Rakefile +0 -6
  143. data/examples/i18n/bg/features/addition.feature +0 -12
  144. data/examples/i18n/bg/features/consecutive_calculations.feature +0 -19
  145. data/examples/i18n/bg/features/division.feature +0 -17
  146. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +0 -24
  147. data/examples/i18n/bg/features/support/env.rb +0 -10
  148. data/examples/i18n/bg/features/support/world.rb +0 -8
  149. data/examples/i18n/bg/lib/calculator.rb +0 -25
  150. data/examples/i18n/ca/Rakefile +0 -6
  151. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +0 -26
  152. data/examples/i18n/ca/features/suma.feature +0 -17
  153. data/examples/i18n/ca/lib/calculadora.rb +0 -16
  154. data/examples/i18n/cs/Rakefile +0 -6
  155. data/examples/i18n/cs/features/addition.feature +0 -17
  156. data/examples/i18n/cs/features/division.feature +0 -11
  157. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +0 -29
  158. data/examples/i18n/cs/lib/calculator.rb +0 -14
  159. data/examples/i18n/da/Rakefile +0 -6
  160. data/examples/i18n/da/features/sammenlaegning.feature +0 -18
  161. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +0 -29
  162. data/examples/i18n/da/lib/lommeregner.rb +0 -11
  163. data/examples/i18n/de/Rakefile +0 -6
  164. data/examples/i18n/de/features/addition.feature +0 -17
  165. data/examples/i18n/de/features/division.feature +0 -10
  166. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +0 -29
  167. data/examples/i18n/de/lib/calculator.rb +0 -14
  168. data/examples/i18n/el/Rakefile +0 -6
  169. data/examples/i18n/el/features/addition.feature +0 -17
  170. data/examples/i18n/el/features/division.feature +0 -10
  171. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +0 -29
  172. data/examples/i18n/el/lib/calculator.rb +0 -14
  173. data/examples/i18n/en-lol/Rakefile +0 -4
  174. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +0 -16
  175. data/examples/i18n/en-lol/features/stuffing.feature +0 -8
  176. data/examples/i18n/en-lol/features/support/env.rb +0 -11
  177. data/examples/i18n/en-lol/lib/basket.rb +0 -12
  178. data/examples/i18n/en-lol/lib/belly.rb +0 -11
  179. data/examples/i18n/en/Rakefile +0 -6
  180. data/examples/i18n/en/features/addition.feature +0 -17
  181. data/examples/i18n/en/features/division.feature +0 -10
  182. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +0 -29
  183. data/examples/i18n/en/lib/calculator.rb +0 -14
  184. data/examples/i18n/eo/Rakefile +0 -6
  185. data/examples/i18n/eo/features/adicio.feature +0 -17
  186. data/examples/i18n/eo/features/divido.feature +0 -10
  187. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +0 -29
  188. data/examples/i18n/eo/lib/calculator.rb +0 -14
  189. data/examples/i18n/es/Rakefile +0 -6
  190. data/examples/i18n/es/features/adicion.feature +0 -17
  191. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +0 -26
  192. data/examples/i18n/es/lib/calculador.rb +0 -14
  193. data/examples/i18n/et/Rakefile +0 -6
  194. data/examples/i18n/et/features/jagamine.feature +0 -10
  195. data/examples/i18n/et/features/liitmine.feature +0 -17
  196. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +0 -29
  197. data/examples/i18n/et/lib/kalkulaator.rb +0 -14
  198. data/examples/i18n/fi/Rakefile +0 -6
  199. data/examples/i18n/fi/features/jakolasku.feature +0 -10
  200. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +0 -29
  201. data/examples/i18n/fi/features/yhteenlasku.feature +0 -17
  202. data/examples/i18n/fi/lib/laskin.rb +0 -14
  203. data/examples/i18n/fr/Rakefile +0 -8
  204. data/examples/i18n/fr/features/addition.feature +0 -18
  205. data/examples/i18n/fr/features/addition2.feature +0 -17
  206. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +0 -32
  207. data/examples/i18n/fr/features/support/env.rb +0 -10
  208. data/examples/i18n/fr/lib/calculatrice.rb +0 -10
  209. data/examples/i18n/he/Rakefile +0 -6
  210. data/examples/i18n/he/features/addition.feature +0 -17
  211. data/examples/i18n/he/features/division.feature +0 -10
  212. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +0 -29
  213. data/examples/i18n/he/lib/calculator.rb +0 -15
  214. data/examples/i18n/hi/Rakefile +0 -6
  215. data/examples/i18n/hi/features/addition.feature +0 -16
  216. data/examples/i18n/hi/features/division.feature +0 -10
  217. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +0 -29
  218. data/examples/i18n/hi/lib/calculator.rb +0 -15
  219. data/examples/i18n/ht/Rakefile +0 -6
  220. data/examples/i18n/ht/features/adisyon.feature +0 -17
  221. data/examples/i18n/ht/features/divizyon.feature +0 -10
  222. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +0 -29
  223. data/examples/i18n/ht/lib/kalkilatris.rb +0 -14
  224. data/examples/i18n/hu/Rakefile +0 -6
  225. data/examples/i18n/hu/features/osszeadas.feature +0 -17
  226. data/examples/i18n/hu/features/osztas.feature +0 -10
  227. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +0 -30
  228. data/examples/i18n/hu/lib/calculator.rb +0 -14
  229. data/examples/i18n/id/Rakefile +0 -6
  230. data/examples/i18n/id/features/addition.feature +0 -17
  231. data/examples/i18n/id/features/division.feature +0 -10
  232. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +0 -29
  233. data/examples/i18n/id/lib/calculator.rb +0 -14
  234. data/examples/i18n/it/Rakefile +0 -6
  235. data/examples/i18n/it/features/somma.feature +0 -11
  236. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +0 -29
  237. data/examples/i18n/it/lib/calcolatrice.rb +0 -11
  238. data/examples/i18n/ja/Rakefile +0 -6
  239. data/examples/i18n/ja/features/addition.feature +0 -17
  240. data/examples/i18n/ja/features/division.feature +0 -10
  241. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +0 -19
  242. data/examples/i18n/ja/features/support/env.rb +0 -10
  243. data/examples/i18n/ja/lib/calculator.rb +0 -14
  244. data/examples/i18n/ko/Rakefile +0 -6
  245. data/examples/i18n/ko/features/addition.feature +0 -17
  246. data/examples/i18n/ko/features/division.feature +0 -11
  247. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +0 -29
  248. data/examples/i18n/ko/lib/calculator.rb +0 -14
  249. data/examples/i18n/lt/Rakefile +0 -6
  250. data/examples/i18n/lt/features/addition.feature +0 -17
  251. data/examples/i18n/lt/features/division.feature +0 -10
  252. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +0 -29
  253. data/examples/i18n/lt/lib/calculator.rb +0 -14
  254. data/examples/i18n/lv/Rakefile +0 -6
  255. data/examples/i18n/lv/features/addition.feature +0 -17
  256. data/examples/i18n/lv/features/division.feature +0 -10
  257. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +0 -29
  258. data/examples/i18n/lv/lib/calculator.rb +0 -14
  259. data/examples/i18n/no/Rakefile +0 -6
  260. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +0 -17
  261. data/examples/i18n/no/features/summering.feature +0 -19
  262. data/examples/i18n/no/features/support/env.rb +0 -11
  263. data/examples/i18n/no/lib/kalkulator.rb +0 -11
  264. data/examples/i18n/pl/Rakefile +0 -6
  265. data/examples/i18n/pl/features/addition.feature +0 -17
  266. data/examples/i18n/pl/features/division.feature +0 -10
  267. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +0 -29
  268. data/examples/i18n/pl/features/support/env.rb +0 -10
  269. data/examples/i18n/pl/lib/calculator.rb +0 -14
  270. data/examples/i18n/pt/Rakefile +0 -6
  271. data/examples/i18n/pt/features/adicao.feature +0 -11
  272. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +0 -20
  273. data/examples/i18n/pt/features/support/env.rb +0 -10
  274. data/examples/i18n/pt/lib/calculadora.rb +0 -10
  275. data/examples/i18n/ro/Rakefile +0 -6
  276. data/examples/i18n/ro/features/adunare.feature +0 -12
  277. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +0 -26
  278. data/examples/i18n/ro/lib/calculator.rb +0 -11
  279. data/examples/i18n/ru/Rakefile +0 -6
  280. data/examples/i18n/ru/features/addition.feature +0 -11
  281. data/examples/i18n/ru/features/consecutive_calculations.feature +0 -17
  282. data/examples/i18n/ru/features/division.feature +0 -16
  283. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +0 -19
  284. data/examples/i18n/ru/features/support/env.rb +0 -10
  285. data/examples/i18n/ru/features/support/world.rb +0 -8
  286. data/examples/i18n/ru/lib/calculator.rb +0 -25
  287. data/examples/i18n/sk/Rakefile +0 -6
  288. data/examples/i18n/sk/features/addition.feature +0 -17
  289. data/examples/i18n/sk/features/division.feature +0 -10
  290. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +0 -29
  291. data/examples/i18n/sk/lib/calculator.rb +0 -14
  292. data/examples/i18n/sr-Cyrl/Rakefile +0 -6
  293. data/examples/i18n/sr-Cyrl/features/sabiranje.feature +0 -18
  294. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +0 -20
  295. data/examples/i18n/sr-Cyrl/features/support/env.rb +0 -10
  296. data/examples/i18n/sr-Cyrl/lib/calculator.rb +0 -12
  297. data/examples/i18n/sr-Latn/Rakefile +0 -6
  298. data/examples/i18n/sr-Latn/features/sabiranje.feature +0 -18
  299. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +0 -29
  300. data/examples/i18n/sr-Latn/lib/calculator.rb +0 -12
  301. data/examples/i18n/sv/Rakefile +0 -6
  302. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +0 -29
  303. data/examples/i18n/sv/features/summering.feature +0 -18
  304. data/examples/i18n/sv/lib/kalkulator.rb +0 -11
  305. data/examples/i18n/tr/Rakefile +0 -6
  306. data/examples/i18n/tr/features/bolme.feature +0 -10
  307. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +0 -29
  308. data/examples/i18n/tr/features/toplama.feature +0 -18
  309. data/examples/i18n/tr/lib/hesap_makinesi.rb +0 -15
  310. data/examples/i18n/uk/Rakefile +0 -6
  311. data/examples/i18n/uk/features/addition.feature +0 -11
  312. data/examples/i18n/uk/features/consecutive_calculations.feature +0 -17
  313. data/examples/i18n/uk/features/division.feature +0 -16
  314. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +0 -19
  315. data/examples/i18n/uk/features/support/env.rb +0 -10
  316. data/examples/i18n/uk/features/support/world.rb +0 -8
  317. data/examples/i18n/uk/lib/calculator.rb +0 -25
  318. data/examples/i18n/uz/Rakefile +0 -6
  319. data/examples/i18n/uz/features/addition.feature +0 -10
  320. data/examples/i18n/uz/features/consecutive_calculations.feature +0 -17
  321. data/examples/i18n/uz/features/division.feature +0 -17
  322. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +0 -19
  323. data/examples/i18n/uz/features/support/env.rb +0 -10
  324. data/examples/i18n/uz/features/support/world.rb +0 -8
  325. data/examples/i18n/uz/lib/calculator.rb +0 -25
  326. data/examples/i18n/zh-CN/Rakefile +0 -4
  327. data/examples/i18n/zh-CN/features/addition.feature +0 -18
  328. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +0 -31
  329. data/examples/i18n/zh-CN/lib/calculator.rb +0 -10
  330. data/examples/i18n/zh-TW/Rakefile +0 -4
  331. data/examples/i18n/zh-TW/features/addition.feature +0 -17
  332. data/examples/i18n/zh-TW/features/division.feature +0 -11
  333. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +0 -29
  334. data/examples/i18n/zh-TW/lib/calculator.rb +0 -14
  335. data/examples/rspec_doubles/Rakefile +0 -4
  336. data/examples/rspec_doubles/features/mocking.feature +0 -9
  337. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +0 -19
  338. data/examples/rspec_doubles/features/support/env.rb +0 -12
  339. data/examples/sinatra/README.textile +0 -13
  340. data/examples/sinatra/Rakefile +0 -6
  341. data/examples/sinatra/app.rb +0 -14
  342. data/examples/sinatra/features/add.feature +0 -11
  343. data/examples/sinatra/features/step_definitions/add_steps.rb +0 -15
  344. data/examples/sinatra/features/support/env.rb +0 -15
  345. data/examples/sinatra/views/add.erb +0 -7
  346. data/examples/sinatra/views/layout.erb +0 -8
  347. data/examples/tcl/README.textile +0 -11
  348. data/examples/tcl/Rakefile +0 -6
  349. data/examples/tcl/features/fibonnacci.feature +0 -17
  350. data/examples/tcl/features/step_definitions/fib_steps.rb +0 -7
  351. data/examples/tcl/features/support/env.rb +0 -7
  352. data/examples/tcl/src/fib.tcl +0 -3
  353. data/examples/test_unit/Gemfile +0 -4
  354. data/examples/test_unit/Rakefile +0 -6
  355. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +0 -20
  356. data/examples/test_unit/features/test_unit.feature +0 -9
  357. data/examples/watir/README.textile +0 -16
  358. data/examples/watir/Rakefile +0 -12
  359. data/examples/watir/cucumber.yml +0 -1
  360. data/examples/watir/features/search.feature +0 -12
  361. data/examples/watir/features/step_definitions/search_steps.rb +0 -27
  362. data/examples/watir/features/support/env.rb +0 -39
  363. data/examples/watir/features/support/screenshots.rb +0 -47
  364. data/features/docs/api/list_step_defs_as_json.feature +0 -64
  365. data/features/docs/api/listen_for_events.feature +0 -59
  366. data/features/docs/api/run_cli_main_with_existing_runtime.feature +0 -27
  367. data/features/docs/cli/backtraces.feature +0 -36
  368. data/features/docs/cli/dry_run.feature +0 -73
  369. data/features/docs/cli/exclude_files.feature +0 -18
  370. data/features/docs/cli/execute_with_tag_filter.feature +0 -119
  371. data/features/docs/cli/fail_fast.feature +0 -48
  372. data/features/docs/cli/finding_steps.feature +0 -28
  373. data/features/docs/cli/help.feature +0 -8
  374. data/features/docs/cli/i18n.feature +0 -42
  375. data/features/docs/cli/randomize.feature +0 -140
  376. data/features/docs/cli/require.feature +0 -27
  377. data/features/docs/cli/retry_failing_tests.feature +0 -92
  378. data/features/docs/cli/run_scenarios_matching_name.feature +0 -105
  379. data/features/docs/cli/run_specific_scenarios.feature +0 -77
  380. data/features/docs/cli/showing_differences.feature +0 -43
  381. data/features/docs/cli/specifying_multiple_formatters.feature +0 -68
  382. data/features/docs/cli/strict_mode.feature +0 -70
  383. data/features/docs/defining_steps/ambiguous_steps.feature +0 -89
  384. data/features/docs/defining_steps/nested_steps.feature +0 -181
  385. data/features/docs/defining_steps/nested_steps_i18n.feature +0 -37
  386. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +0 -56
  387. data/features/docs/defining_steps/one_line_step_definitions.feature +0 -65
  388. data/features/docs/defining_steps/printing_messages.feature +0 -147
  389. data/features/docs/defining_steps/skip_scenario.feature +0 -31
  390. data/features/docs/defining_steps/snippets.feature +0 -56
  391. data/features/docs/defining_steps/table_diffing.feature +0 -50
  392. data/features/docs/events/gherkin_source_read_event.feature +0 -43
  393. data/features/docs/events/step_activated_event.feature +0 -36
  394. data/features/docs/events/step_definition_registered_event.feature +0 -29
  395. data/features/docs/events/test_case_finished_event.feature +0 -35
  396. data/features/docs/events/test_case_started_event.feature +0 -54
  397. data/features/docs/events/test_run_finished_event.feature +0 -40
  398. data/features/docs/events/test_run_started_event.feature +0 -41
  399. data/features/docs/events/test_step_finished_event.feature +0 -47
  400. data/features/docs/events/test_step_started_event.feature +0 -43
  401. data/features/docs/exception_in_after_hook.feature +0 -127
  402. data/features/docs/exception_in_after_step_hook.feature +0 -104
  403. data/features/docs/exception_in_around_hook.feature +0 -80
  404. data/features/docs/exception_in_before_hook.feature +0 -98
  405. data/features/docs/extending_cucumber/custom_filter.feature +0 -29
  406. data/features/docs/extending_cucumber/custom_formatter.feature +0 -94
  407. data/features/docs/formatters/api_methods.feature +0 -37
  408. data/features/docs/formatters/html_formatter.feature +0 -91
  409. data/features/docs/formatters/json_formatter.feature +0 -767
  410. data/features/docs/formatters/junit_formatter.feature +0 -455
  411. data/features/docs/formatters/pretty_formatter.feature +0 -74
  412. data/features/docs/formatters/progress_formatter.feature +0 -32
  413. data/features/docs/formatters/rerun_formatter.feature +0 -190
  414. data/features/docs/formatters/summary_formatter.feature +0 -35
  415. data/features/docs/formatters/usage_formatter.feature +0 -101
  416. data/features/docs/getting_started.feature +0 -28
  417. data/features/docs/gherkin/background.feature +0 -548
  418. data/features/docs/gherkin/doc_strings.feature +0 -76
  419. data/features/docs/gherkin/expand_option_for_outlines.feature +0 -47
  420. data/features/docs/gherkin/language_from_header.feature +0 -32
  421. data/features/docs/gherkin/outlines.feature +0 -158
  422. data/features/docs/gherkin/unicode_table.feature +0 -33
  423. data/features/docs/gherkin/using_descriptions.feature +0 -83
  424. data/features/docs/gherkin/using_star_notation.feature +0 -37
  425. data/features/docs/iso-8859-1.feature +0 -6
  426. data/features/docs/post_configuration_hook.feature +0 -33
  427. data/features/docs/profiles.feature +0 -120
  428. data/features/docs/rake_task.feature +0 -146
  429. data/features/docs/raketask.feature +0 -46
  430. data/features/docs/work_in_progress.feature +0 -157
  431. data/features/docs/writing_support_code/after_hooks.feature +0 -102
  432. data/features/docs/writing_support_code/after_step_hooks.feature +0 -55
  433. data/features/docs/writing_support_code/around_hooks.feature +0 -266
  434. data/features/docs/writing_support_code/before_hook.feature +0 -66
  435. data/features/docs/writing_support_code/hook_order.feature +0 -63
  436. data/features/docs/writing_support_code/load_path.feature +0 -17
  437. data/features/docs/writing_support_code/parameter_types.feature +0 -69
  438. data/features/docs/writing_support_code/state.feature +0 -32
  439. data/features/docs/writing_support_code/tagged_hooks.feature +0 -95
  440. data/features/docs/writing_support_code/world.feature +0 -129
  441. data/features/lib/step_definitions/aruba_steps.rb +0 -21
  442. data/features/lib/step_definitions/cli_steps.rb +0 -4
  443. data/features/lib/step_definitions/cucumber_steps.rb +0 -75
  444. data/features/lib/step_definitions/iso-8859-1_steps.rb +0 -16
  445. data/features/lib/step_definitions/json_steps.rb +0 -8
  446. data/features/lib/step_definitions/junit_steps.rb +0 -14
  447. data/features/lib/step_definitions/language_steps.rb +0 -9
  448. data/features/lib/step_definitions/profile_steps.rb +0 -16
  449. data/features/lib/step_definitions/retry_steps.rb +0 -55
  450. data/features/lib/step_definitions/ruby_steps.rb +0 -4
  451. data/features/lib/support/env.rb +0 -22
  452. data/features/lib/support/fake_wire_server.rb +0 -94
  453. data/features/lib/support/feature_factory.rb +0 -68
  454. data/features/lib/support/normalise_output.rb +0 -52
  455. data/features/lib/support/parameter_types.rb +0 -5
  456. data/gem_tasks/contributors.rake +0 -19
  457. data/gem_tasks/cov.rake +0 -6
  458. data/gem_tasks/downloads.rb +0 -8
  459. data/gem_tasks/environment.rake +0 -4
  460. data/gem_tasks/examples.rake +0 -12
  461. data/gem_tasks/fix_cr_lf.rake +0 -22
  462. data/gem_tasks/flog.rake +0 -5
  463. data/gem_tasks/rspec.rake +0 -7
  464. data/gem_tasks/sass.rake +0 -5
  465. data/gem_tasks/stats +0 -16
  466. data/gem_tasks/versions.txt +0 -74
  467. data/scripts/invite-collaborator +0 -40
  468. data/scripts/update-changelog +0 -86
  469. data/spec/cucumber/cli/configuration_spec.rb +0 -446
  470. data/spec/cucumber/cli/main_spec.rb +0 -84
  471. data/spec/cucumber/cli/options_spec.rb +0 -445
  472. data/spec/cucumber/cli/profile_loader_spec.rb +0 -66
  473. data/spec/cucumber/cli/rerun_spec.rb +0 -86
  474. data/spec/cucumber/configuration_spec.rb +0 -148
  475. data/spec/cucumber/constantize_spec.rb +0 -20
  476. data/spec/cucumber/events_spec.rb +0 -9
  477. data/spec/cucumber/file_specs_spec.rb +0 -61
  478. data/spec/cucumber/filters/activate_steps_spec.rb +0 -152
  479. data/spec/cucumber/filters/gated_receiver_spec.rb +0 -48
  480. data/spec/cucumber/filters/retry_spec.rb +0 -98
  481. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +0 -39
  482. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +0 -58
  483. data/spec/cucumber/filters/tag_limits_spec.rb +0 -60
  484. data/spec/cucumber/formatter/ansicolor_spec.rb +0 -33
  485. data/spec/cucumber/formatter/backtrace_filter_spec.rb +0 -32
  486. data/spec/cucumber/formatter/console_counts_spec.rb +0 -14
  487. data/spec/cucumber/formatter/duration_spec.rb +0 -23
  488. data/spec/cucumber/formatter/fail_fast_spec.rb +0 -88
  489. data/spec/cucumber/formatter/html_spec.rb +0 -543
  490. data/spec/cucumber/formatter/interceptor_spec.rb +0 -137
  491. data/spec/cucumber/formatter/json_spec.rb +0 -815
  492. data/spec/cucumber/formatter/junit_spec.rb +0 -251
  493. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +0 -2175
  494. data/spec/cucumber/formatter/pretty_spec.rb +0 -907
  495. data/spec/cucumber/formatter/progress_spec.rb +0 -170
  496. data/spec/cucumber/formatter/rerun_spec.rb +0 -97
  497. data/spec/cucumber/formatter/spec_helper.rb +0 -84
  498. data/spec/cucumber/glue/proto_world_spec.rb +0 -63
  499. data/spec/cucumber/glue/registry_and_more_spec.rb +0 -213
  500. data/spec/cucumber/glue/snippet_spec.rb +0 -174
  501. data/spec/cucumber/glue/step_definition_spec.rb +0 -207
  502. data/spec/cucumber/hooks_spec.rb +0 -31
  503. data/spec/cucumber/multiline_argument/data_table_spec.rb +0 -653
  504. data/spec/cucumber/project_initializer_spec.rb +0 -88
  505. data/spec/cucumber/rake/forked_spec.rb +0 -58
  506. data/spec/cucumber/rake/task_spec.rb +0 -86
  507. data/spec/cucumber/running_test_case_spec.rb +0 -140
  508. data/spec/cucumber/runtime/for_programming_languages_spec.rb +0 -8
  509. data/spec/cucumber/runtime/support_code_spec.rb +0 -17
  510. data/spec/cucumber/runtime_spec.rb +0 -21
  511. data/spec/cucumber/sell_cucumbers.feature +0 -19
  512. data/spec/cucumber/step_argument_spec.rb +0 -19
  513. data/spec/cucumber/step_match_search_spec.rb +0 -113
  514. data/spec/cucumber/step_match_spec.rb +0 -86
  515. data/spec/cucumber/world/pending_spec.rb +0 -48
  516. data/spec/spec_helper.rb +0 -30
  517. data/spec/support/standard_step_actions.rb +0 -19
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 59a692d9b2bb6abe44ffda39687077d9a9875ac6
4
- data.tar.gz: 68b322f2c42b48b161c37af0d5ceb6e80f7604a6
2
+ SHA256:
3
+ metadata.gz: 6a9339e408c80955872fc7386ee99fc26b6519458369e06f0a65be76b27b6129
4
+ data.tar.gz: 10667fb8062a67fbf034a80a35a0d6ad53ca087bbe9cef9a9019d3343fddae94
5
5
  SHA512:
6
- metadata.gz: bd06621e7445264cb47e0a9a9ef77274d682de78dbf7519d620283aadd82dbee7a0aa3491b37142f9e370355a40de6b048d55742366ae3d0cad1f853433f32b6
7
- data.tar.gz: fe939354cfd699bcdf9381bc5f4ed59d041c4cfb8ce33c438671ce49ee6754ee3a4bc728ffb3f1a95f16539d01760d66c89f8ac52ded72b537889bb4ba091098
6
+ metadata.gz: 4e9417b90d33b309f6a90845de1e66aeea91767146ca534b80f09989600ff50c1cc868f1c46696dccd48767d0cc78794df29cbe97cc227178db27c05bf510687
7
+ data.tar.gz: 2b2cdf34b49f79ec6bbb4d8b484d211c4afb82f0572baa75463b0bc8f9c614e02d1acb303fc623730b42a61e37343c1d882ffb817a1fd9eebdf7c59da7bf8813
@@ -10,25 +10,105 @@ Please visit [cucumber/CONTRIBUTING.md](https://github.com/cucumber/cucumber/blo
10
10
 
11
11
  ----
12
12
 
13
- ## [In Git](https://github.com/cucumber/cucumber-ruby/compare/v3.0.1...master) (Not released)
13
+ ## [3.2.0](https://github.com/cucumber/cucumber-ruby/compare/v3.1.2...v3.2.0) (2020-07-02)
14
+
15
+ ### Added
16
+
17
+ * `--out` option now supports URL:
18
+ * default method is `PUT`
19
+ * you can ussed cURL like options, for example: `--out "http://example.com -X POST -H Content-Type:text/json"` (Backport of [#1395](https://github.com/cucumber/cucumber-ruby/pull/1395) and [#1406](https://github.com/cucumber/cucumber-ruby/pull/1406))
20
+
21
+ ### Fixed
22
+
23
+ * JSON report: Do not fail when trying to embed bytes [#1388](https://github.com/cucumber/cucumber-ruby/issues/1388)
24
+
25
+ ## [3.1.2](https://github.com/cucumber/cucumber-ruby/compare/v3.1.1...v3.1.2) (2018-07-13)
14
26
 
15
27
  ### Changed
16
28
 
17
- * N/A
29
+ * Upgraded to `cucumber-core` 3.2.0
30
+ * Change to use the gherkin step location in the Json formatter.
31
+ ([#1243](https://github.com/cucumber/cucumber-ruby/pull/1243),
32
+ [#1108](https://github.com/cucumber/cucumber-ruby/issues/1108)
33
+ [brasmusson](https://github.com/brasmusson))
34
+
35
+ ### Fixed
36
+
37
+ * Support ParameterType with empty capture group.
38
+ ([#404](https://github.com/cucumber/cucumber/issues/404)
39
+ [aslakhellesoy](https://github.com/aslakhellesoy))
40
+
41
+ ## [3.1.1](https://github.com/cucumber/cucumber-ruby/compare/v3.1.0...v3.1.1) (2018-06-03)
18
42
 
19
43
  ### Added
20
44
 
21
45
  * N/A
22
46
 
23
- ### Fixed
47
+ ### Changed
48
+
49
+ * Add Rubocop to default Rake task ([#1256](https://github.com/cucumber/cucumber-ruby/pull/1256) [@jaysonesmith](https://github.com/jaysonesmith))
50
+ * Upgraded `cucumber-expressions` dependency to ~> 6.0.0 ([#1299](https://github.com/cucumber/cucumber-ruby/pull/1299) [@aslakhellesoy](https://github.com/aslakhellesoy))
51
+ * Upgraded to `gherkin` 5.1.0 ([#1299](https://github.com/cucumber/cucumber-ruby/pull/1299) [@aslakhellesoy](https://github.com/aslakhellesoy))
52
+
53
+ ### Deprecated
24
54
 
25
55
  * N/A
26
56
 
57
+ ### Removed
58
+
59
+ * N/A
60
+
61
+ ### Fixed
62
+
63
+ * Make `--fail-fast` play nice with `--retry` ([#1283](https://github.com/cucumber/cucumber-ruby/pull/1283) [@yrral86](https://github.com/yrral86))
64
+ * Fix incompatible encodings error in JUnit formatter ([#1244](https://github.com/cucumber/cucumber-ruby/pull/1244) [@NickAb](https://github.com/NickAb)) (except on JRuby, see [#1259](https://github.com/cucumber/cucumber-ruby/pull/1259))
65
+ * Fix the handling of failed hooks in the JUnit Formatter ([@brasmusson](https://github.com/brasmusson))
66
+ * Fixed lengthy stacktrace when running `cucumber -f stepdefs` when steps aren't defined. ([#1286](https://github.com/cucumber/cucumber-ruby/pull/1286) [@xtrasimplicity](https://github.com/xtrasimplicity))
67
+ * Fixed an error with HTML snippet generation when `frozen_string_literal` is enabled and the `Syntax` gem is not installed. ([#1287](https://github.com/cucumber/cucumber-ruby/pull/1287) [@xtrasimplicity](https://github.com/xtrasimplicity))
68
+
27
69
  ### Improved
28
70
 
29
71
  * N/A
30
72
 
31
- ## [In Git](https://github.com/cucumber/cucumber-ruby/compare/v3.0.0...3.0.1) (2017-09-29)
73
+ ## [3.1.0](https://github.com/cucumber/cucumber-ruby/compare/v3.0.2...v3.1.0) (2017-11-28)
74
+
75
+ ### Added
76
+
77
+ * ParameterType transformer runs in World
78
+ ([#1213](https://github.com/cucumber/cucumber-ruby/pull/1213)
79
+ [@aslakhellesoy](https://github.com/aslakhellesoy))
80
+
81
+ ### Changed
82
+
83
+ * Upgraded to `cucumber-expressions` 5.0.4
84
+ * Upgraded to `cucumber-tag_expressions` 1.1.0
85
+ * Upgraded to `gherkin` 5.0.0
86
+
87
+ ### Fixed
88
+
89
+ * Fix the handling of failed hooks in the JUnit Formatter ([@brasmusson](https://github.com/brasmusson))
90
+
91
+ ## [3.0.2](https://github.com/cucumber/cucumber-ruby/compare/v3.0.1...v3.0.2) (2017-11-11)
92
+
93
+ ### Removed
94
+
95
+ * Cucumber is no longer tested on Ruby 2.1 and below.
96
+
97
+ ### Fixed
98
+
99
+ * Fix html reporter with more than one embedded screenshot ([#1216](https://github.com/cucumber/cucumber-ruby/pull/1216) [@nonkor](https://github.com/nonkor))
100
+ * Change test expectation to handle Ruby's unstable sorting ([#1210](https://github.com/cucumber/cucumber-ruby/pull/1210) [@jaysonesmith](https://github.com/jaysonesmith))
101
+ * Fix the printing of newlines in the rerun formatter - a problem introduced in [#1162](https://github.com/cucumber/cucumber-ruby/issues/1162) ([#1207](https://github.com/cucumber/cucumber-ruby/issues/1207) [@brasmusson](https://github.com/brasmusson))
102
+ * Handle the `--retry` option in profiles ([#1050](https://github.com/cucumber/cucumber-ruby/issues/1050) [@brasmusson](https://github.com/brasmusson))
103
+
104
+ ### Improved
105
+
106
+ * Exclude the legacy_api from rubocop, regenerate Rubocop Todo ([@jaysonesmith](https://github.com/jaysonesmith), [@brasmusson](https://github.com/brasmusson))
107
+ * Review and handle excluded/ignored cops ([#1208](https://github.com/cucumber/cucumber-ruby/pull/1208) [@jaysonesmith](https://github.com/jaysonesmith))
108
+ * Fix SymbolProc issues ([#1212](https://github.com/cucumber/cucumber-ruby/pull/1212) [@jaysonesmith](https://github.com/jaysonesmith))
109
+ * Fix TrailingBlankLines ([#1211](https://github.com/cucumber/cucumber-ruby/pull/1211) [@jaysonesmith](https://github.com/jaysonesmith))
110
+
111
+ ## [3.0.1](https://github.com/cucumber/cucumber-ruby/compare/v3.0.0...3.0.1) (2017-09-29)
32
112
 
33
113
  ### Fixed
34
114
 
@@ -59,10 +59,8 @@ help us to correct style violations reported here:
59
59
 
60
60
  ## Release Process
61
61
 
62
- * Bump the version number in `lib/cucumber/platform.rb`.
63
- * Make sure `History.md` is updated with the upcoming version number, and has entries for all fixes.
64
- * No need to add a `History.md` header at this point - this should be done when a new change is made, later.
65
- * Make sure you have up-to-date and clean copy of cucumber/cucumber.github.com.git at the same level as cucumber repo.
62
+ * Bump the version number in `lib/cucumber/version`.
63
+ * Make sure `CHANGELOG.md` is updated with the upcoming version number, and has entries for all fixes.
66
64
 
67
65
  Now release it
68
66
 
@@ -81,6 +79,7 @@ Current release managers:
81
79
  * [Oleg Sukhodolsky](https://rubygems.org/profiles/os97673)
82
80
  * [Steve Tooke](https://rubygems.org/profiles/tooky)
83
81
  * [Björn Rasmusson](https://rubygems.org/profiles/brasmusson)
82
+ * [Andrew Walter](https://rubygems.org/profiles/xtrasimplicity)
84
83
 
85
84
  To grant release karma, issue the following commands:
86
85
 
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
- [![Join the chat at https://gitter.im/cucumber/cucumber-ruby](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/cucumber/cucumber-ruby?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
2
- [![Build Status](https://travis-ci.org/cucumber/cucumber-ruby.svg?branch=master)](https://travis-ci.org/cucumber/cucumber-ruby)
3
- [![Windows Build Status](https://ci.appveyor.com/api/projects/status/ncqhcevrv93hhu5j?svg=true)](https://ci.appveyor.com/project/cucumberbdd/cucumber-ruby)
1
+ [![OpenCollective](https://opencollective.com/cucumber/backers/badge.svg)](https://opencollective.com/cucumber)
2
+ [![OpenCollective](https://opencollective.com/cucumber/sponsors/badge.svg)](https://opencollective.com/cucumber)
3
+
4
+ [![CircleCI](https://circleci.com/gh/cucumber/cucumber-ruby.svg?style=svg)](https://circleci.com/gh/cucumber/cucumber-ruby)
4
5
 
5
6
  [![Code Climate](https://codeclimate.com/github/cucumber/cucumber-ruby.svg)](https://codeclimate.com/github/cucumber/cucumber-ruby)
6
7
  [![Coverage Status](https://coveralls.io/repos/cucumber/cucumber-ruby/badge.svg?branch=master)](https://coveralls.io/r/cucumber/cucumber-ruby?branch=master)
@@ -9,26 +10,25 @@
9
10
  # Cucumber
10
11
 
11
12
  Cucumber is a tool for running automated tests written in plain language. Because they're
12
- written in plain language, they can be read by anyone on your team. Because they can be
13
+ written in plain language, they can be read by anyone on your team. Because they can be
13
14
  read by anyone, you can use them to help improve communication, collaboration and trust on
14
15
  your team.
15
16
 
16
17
  Where to get more info:
17
18
 
18
- * The main website: https://cucumber.io/
19
- * Documentation: https://github.com/cucumber/cucumber/wiki
20
- * Ruby API Documentation: http://www.rubydoc.info/github/cucumber/cucumber-ruby/
21
- * Support forum: https://groups.google.com/group/cukes
22
- * Chat: ([Slack](https://cucumber.io/support#slack) and [Gitter](https://cucumber.io/support#gitter))
19
+ * The main website: https://cucumber.io/
20
+ * Documentation: https://docs.cucumber.io
21
+ * Ruby API Documentation: http://www.rubydoc.info/github/cucumber/cucumber-ruby/
22
+ * Support forum: https://groups.google.com/group/cukes
23
+ * Chat: ([Slack](https://cucumber.io/support#slack) and [Gitter](https://cucumber.io/support#gitter))
23
24
 
24
25
  See [CONTRIBUTING.md](CONTRIBUTING.md) for info on contributing to Cucumber.
25
26
 
26
27
  ## Supported platforms
27
-
28
+ * Ruby 2.5
28
29
  * Ruby 2.4
29
30
  * Ruby 2.3
30
31
  * Ruby 2.2
31
- * Ruby 2.1
32
32
  * JRuby 9.1
33
33
 
34
34
  ## Code of Conduct
@@ -37,4 +37,4 @@ Everyone interacting in this codebase and issue tracker is expected to follow th
37
37
 
38
38
  ## Copyright
39
39
 
40
- Copyright (c) Aslak Hellesøy and Contributors. See LICENSE for details.
40
+ Copyright (c) Cucumber Ltd. and Contributors. See LICENSE for details.
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest'
3
4
  require 'autotest/cucumber_mixin'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest'
3
4
  require 'tempfile'
4
5
  require 'cucumber'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest/rails'
3
4
  require 'autotest/cucumber_mixin'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest/cucumber_mixin'
3
4
  require 'autotest/rails_rspec'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest/cucumber_mixin'
3
4
  require 'autotest/rails_rspec2'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest/cucumber_mixin'
3
4
  require 'autotest/rspec'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'autotest/cucumber_mixin'
3
4
  require 'autotest/rspec2'
4
5
 
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  Autotest.add_discovery do
3
4
  if File.directory?('features')
4
5
  if ENV['AUTOFEATURE'] =~ /true/i
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'yaml'
3
4
  require 'cucumber/encoding'
4
5
  require 'cucumber/platform'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'logger'
3
4
  require 'cucumber/cli/options'
4
5
  require 'cucumber/cli/rerun_file'
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'optparse'
3
4
  require 'cucumber'
4
5
  require 'logger'
@@ -13,7 +14,7 @@ module Cucumber
13
14
  end
14
15
  end
15
16
 
16
- def initialize(args, _=nil, out=STDOUT, err=STDERR, kernel=Kernel)
17
+ def initialize(args, _ = nil, out = STDOUT, err = STDERR, kernel = Kernel)
17
18
  @args = args
18
19
  @out = out
19
20
  @err = err
@@ -70,7 +71,6 @@ module Cucumber
70
71
 
71
72
  private
72
73
 
73
-
74
74
  def exit_ok
75
75
  @kernel.exit 0
76
76
  end
@@ -1,4 +1,5 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  require 'cucumber/cli/profile_loader'
3
4
  require 'cucumber/formatter/ansicolor'
4
5
  require 'cucumber/glue/registry_and_more'
@@ -7,9 +8,9 @@ require 'cucumber/core/test/result'
7
8
 
8
9
  module Cucumber
9
10
  module Cli
10
-
11
11
  class Options
12
12
  INDENT = ' ' * 53
13
+ # rubocop:disable Layout/MultilineOperationIndentation
13
14
  BUILTIN_FORMATS = {
14
15
  'html' => ['Cucumber::Formatter::Html', 'Generates a nice looking HTML report.'],
15
16
  'pretty' => ['Cucumber::Formatter::Pretty', 'Prints the feature as is - in colours.'],
@@ -27,19 +28,20 @@ module Cucumber
27
28
  'json_pretty' => ['Cucumber::Formatter::JsonPretty', 'Prints the feature as prettified JSON'],
28
29
  'summary' => ['Cucumber::Formatter::Summary', 'Summary output of feature and scenarios']
29
30
  }
30
- max = BUILTIN_FORMATS.keys.map{|s| s.length}.max
31
+ # rubocop:enable Layout/MultilineOperationIndentation
32
+ max = BUILTIN_FORMATS.keys.map(&:length).max
31
33
  FORMAT_HELP_MSG = [
32
- 'Use --format rerun --out rerun.txt to write out failing',
33
- 'features. You can rerun them with cucumber @rerun.txt.',
34
- 'FORMAT can also be the fully qualified class name of',
35
- "your own custom formatter. If the class isn't loaded,",
36
- 'Cucumber will attempt to require a file with a relative',
37
- 'file name that is the underscore name of the class name.',
38
- 'Example: --format Foo::BarZap -> Cucumber will look for',
39
- 'foo/bar_zap.rb. You can place the file with this relative',
40
- 'path underneath your features/support directory or anywhere',
41
- "on Ruby's LOAD_PATH, for example in a Ruby gem."
42
- ]
34
+ 'Use --format rerun --out rerun.txt to write out failing',
35
+ 'features. You can rerun them with cucumber @rerun.txt.',
36
+ 'FORMAT can also be the fully qualified class name of',
37
+ "your own custom formatter. If the class isn't loaded,",
38
+ 'Cucumber will attempt to require a file with a relative',
39
+ 'file name that is the underscore name of the class name.',
40
+ 'Example: --format Foo::BarZap -> Cucumber will look for',
41
+ 'foo/bar_zap.rb. You can place the file with this relative',
42
+ 'path underneath your features/support directory or anywhere',
43
+ "on Ruby's LOAD_PATH, for example in a Ruby gem."
44
+ ]
43
45
 
44
46
  FORMAT_HELP = (BUILTIN_FORMATS.keys.sort.map do |key|
45
47
  " #{key}#{' ' * (max - key.length)} : #{BUILTIN_FORMATS[key][1]}"
@@ -51,11 +53,11 @@ module Cucumber
51
53
  FAIL_FAST_FLAG = '--fail-fast'
52
54
  RETRY_FLAG = '--retry'
53
55
  OPTIONS_WITH_ARGS = [
54
- '-r', '--require', '--i18n-keywords', '-f', '--format', '-o',
55
- '--out', '-t', '--tags', '-n', '--name', '-e', '--exclude',
56
- PROFILE_SHORT_FLAG, PROFILE_LONG_FLAG, RETRY_FLAG, '-l',
57
- '--lines', '--port', '-I', '--snippet-type'
58
- ]
56
+ '-r', '--require', '--i18n-keywords', '-f', '--format', '-o',
57
+ '--out', '-t', '--tags', '-n', '--name', '-e', '--exclude',
58
+ PROFILE_SHORT_FLAG, PROFILE_LONG_FLAG, RETRY_FLAG, '-l',
59
+ '--lines', '--port', '-I', '--snippet-type'
60
+ ]
59
61
  ORDER_TYPES = %w{defined random}
60
62
  TAG_LIMIT_MATCHER = /(?<tag_name>\@\w+):(?<limit>\d+)/x
61
63
 
@@ -93,32 +95,32 @@ module Cucumber
93
95
 
94
96
  @args.options do |opts|
95
97
  opts.banner = banner
96
- opts.on('-r LIBRARY|DIR', '--require LIBRARY|DIR', *require_files_msg) {|lib| require_files(lib) }
98
+ opts.on('-r LIBRARY|DIR', '--require LIBRARY|DIR', *require_files_msg) { |lib| require_files(lib) }
97
99
 
98
- if(Cucumber::JRUBY)
99
- opts.on('-j DIR', '--jars DIR', 'Load all the jars under DIR') {|jars| load_jars(jars) }
100
+ if Cucumber::JRUBY
101
+ opts.on('-j DIR', '--jars DIR', 'Load all the jars under DIR') { |jars| load_jars(jars) }
100
102
  end
101
103
 
102
- opts.on("#{RETRY_FLAG} ATTEMPTS", *retry_msg) {|v| set_option :retry, v.to_i }
104
+ opts.on("#{RETRY_FLAG} ATTEMPTS", *retry_msg) { |v| set_option :retry, v.to_i }
103
105
  opts.on('--i18n-languages', *i18n_languages_msg) { list_languages_and_exit }
104
- opts.on('--i18n-keywords LANG', *i18n_keywords_msg) {|lang| set_language lang }
106
+ opts.on('--i18n-keywords LANG', *i18n_keywords_msg) { |lang| language lang }
105
107
  opts.on(FAIL_FAST_FLAG, 'Exit immediately following the first failing scenario') { set_option :fail_fast }
106
108
  opts.on('-f FORMAT', '--format FORMAT', *format_msg, *FORMAT_HELP) do |v|
107
109
  add_option :formats, [*parse_formats(v), @out_stream]
108
110
  end
109
- opts.on('--init', *init_msg) {|v| initialize_project }
110
- opts.on('-o', '--out [FILE|DIR]', *out_msg) {|v| set_out_stream v }
111
- opts.on('-t TAG_EXPRESSION', '--tags TAG_EXPRESSION', *tags_msg) {|v| add_tag v }
112
- opts.on('-n NAME', '--name NAME', *name_msg) {|v| add_option :name_regexps, /#{v}/ }
113
- opts.on('-e', '--exclude PATTERN', *exclude_msg) {|v| add_option :excludes, Regexp.new(v) }
114
- opts.on(PROFILE_SHORT_FLAG, "#{PROFILE_LONG_FLAG} PROFILE", *profile_short_flag_msg) {|v| add_profile v }
115
- opts.on(NO_PROFILE_SHORT_FLAG, NO_PROFILE_LONG_FLAG, *no_profile_short_flag_msg) {|v| disable_profile_loading }
116
- opts.on('-c', '--[no-]color', *color_msg) {|v| set_color v }
111
+ opts.on('--init', *init_msg) { |v| initialize_project }
112
+ opts.on('-o', '--out [FILE|DIR|URL]', *out_msg) { |v| out_stream v }
113
+ opts.on('-t TAG_EXPRESSION', '--tags TAG_EXPRESSION', *tags_msg) { |v| add_tag v }
114
+ opts.on('-n NAME', '--name NAME', *name_msg) { |v| add_option :name_regexps, /#{v}/ }
115
+ opts.on('-e', '--exclude PATTERN', *exclude_msg) { |v| add_option :excludes, Regexp.new(v) }
116
+ opts.on(PROFILE_SHORT_FLAG, "#{PROFILE_LONG_FLAG} PROFILE", *profile_short_flag_msg) { |v| add_profile v }
117
+ opts.on(NO_PROFILE_SHORT_FLAG, NO_PROFILE_LONG_FLAG, *no_profile_short_flag_msg) { |v| disable_profile_loading }
118
+ opts.on('-c', '--[no-]color', *color_msg) { |v| color v }
117
119
  opts.on('-d', '--dry-run', *dry_run_msg) { set_dry_run_and_duration }
118
120
  opts.on('-m', '--no-multiline', "Don't print multiline strings and tables under steps.") { set_option :no_multiline }
119
121
  opts.on('-s', '--no-source', "Don't print the file and line of the step definition with the steps.") { set_option :source, false }
120
122
  opts.on('-i', '--no-snippets', "Don't print snippets for pending steps.") { set_option :snippets, false }
121
- opts.on('-I', '--snippet-type TYPE', *snippet_type_msg) {|v| set_option :snippet_type, v.to_sym }
123
+ opts.on('-I', '--snippet-type TYPE', *snippet_type_msg) { |v| set_option :snippet_type, v.to_sym }
122
124
  opts.on('-q', '--quiet', 'Alias for --no-snippets --no-source.') { shut_up }
123
125
  opts.on('--no-duration', "Don't print the duration at the end of the summary") { set_option :duration, false }
124
126
  opts.on('-b', '--backtrace', 'Show full backtrace for all errors.') { Cucumber.use_full_backtrace = true }
@@ -129,11 +131,11 @@ module Cucumber
129
131
  opts.on('-w', '--wip', 'Fail if there are any passing scenarios.') { set_option :wip }
130
132
  opts.on('-v', '--verbose', 'Show the files and features loaded.') { set_option :verbose }
131
133
  opts.on('-g', '--guess', 'Guess best match for Ambiguous steps.') { set_option :guess }
132
- opts.on('-l', '--lines LINES', *lines_msg) {|lines| set_option :lines, lines }
134
+ opts.on('-l', '--lines LINES', *lines_msg) { |lines| set_option :lines, lines }
133
135
  opts.on('-x', '--expand', 'Expand Scenario Outline Tables in output.') { set_option :expand }
134
136
 
135
137
  opts.on('--order TYPE[:SEED]', 'Run examples in the specified order. Available types:',
136
- *<<-TEXT.split("\n")) do |order|
138
+ *<<-TEXT.split("\n")) do |order|
137
139
  [defined] Run scenarios in the order they were defined (default).
138
140
  [random] Shuffle scenarios before running.
139
141
  Specify SEED to reproduce the shuffling from a previous run.
@@ -152,7 +154,7 @@ TEXT
152
154
  @args.map! { |a| "#{a}:#{@options[:lines]}" } if @options[:lines]
153
155
 
154
156
  extract_environment_variables
155
- @options[:paths] = @args.dup #whatver is left over
157
+ @options[:paths] = @args.dup # whatver is left over
156
158
 
157
159
  check_formatter_stream_conflicts()
158
160
 
@@ -201,11 +203,11 @@ TEXT
201
203
  end
202
204
 
203
205
  def exclude_msg
204
- [ "Don't run feature files or require ruby files matching PATTERN" ]
206
+ ["Don't run feature files or require ruby files matching PATTERN"]
205
207
  end
206
208
 
207
209
  def format_msg
208
- [ 'How to format features (Default: pretty). Available formats:' ]
210
+ ['How to format features (Default: pretty). Available formats:']
209
211
  end
210
212
 
211
213
  def i18n_languages_msg
@@ -229,7 +231,7 @@ TEXT
229
231
  end
230
232
 
231
233
  def lines_msg
232
- [ 'Run given line numbers. Equivalent to FILE:LINE syntax' ]
234
+ ['Run given line numbers. Equivalent to FILE:LINE syntax']
233
235
  end
234
236
 
235
237
  def no_profile_short_flag_msg
@@ -249,7 +251,7 @@ TEXT
249
251
  end
250
252
 
251
253
  def retry_msg
252
- [ 'Specify the number of times to retry failing tests (default: 0)' ]
254
+ ['Specify the number of times to retry failing tests (default: 0)']
253
255
  end
254
256
 
255
257
  def name_msg
@@ -273,7 +275,7 @@ TEXT
273
275
  [formatter, options_hash]
274
276
  end
275
277
 
276
- def set_out_stream(v)
278
+ def out_stream(v)
277
279
  @options[:formats] << ['pretty', {}, nil] if @options[:formats].empty?
278
280
  @options[:formats][-1][2] = v
279
281
  end
@@ -303,10 +305,14 @@ TEXT
303
305
 
304
306
  def out_msg
305
307
  [
306
- 'Write output to a file/directory instead of STDOUT. This option',
308
+ 'Write output to a file/directory/URL instead of STDOUT. This option',
307
309
  'applies to the previously specified --format, or the',
308
310
  'default format if no format is specified. Check the specific',
309
- "formatter's docs to see whether to pass a file or a dir."
311
+ "formatter's docs to see whether to pass a file, dir or URL.",
312
+ "\n",
313
+ 'When using a URL, the output of the formatter will be sent as the HTTP request body.',
314
+ 'HTTP headers and request method can be set with cURL like options.',
315
+ 'Example: --out "http://example.com -X POST -H Content-Type:text/json"'
310
316
  ]
311
317
  end
312
318
 
@@ -332,12 +338,12 @@ TEXT
332
338
 
333
339
  def banner
334
340
  [
335
- 'Usage: cucumber [options] [ [FILE|DIR|URL][:LINE[:LINE]*] ]+', '',
336
- 'Examples:',
337
- 'cucumber examples/i18n/en/features',
338
- 'cucumber @rerun.txt (See --format rerun)',
339
- 'cucumber examples/i18n/it/features/somma.feature:6:98:113',
340
- 'cucumber -s -i http://rubyurl.com/eeCl', '', ''
341
+ 'Usage: cucumber [options] [ [FILE|DIR|URL][:LINE[:LINE]*] ]+', '',
342
+ 'Examples:',
343
+ 'cucumber examples/i18n/en/features',
344
+ 'cucumber @rerun.txt (See --format rerun)',
345
+ 'cucumber examples/i18n/it/features/somma.feature:6:98:113',
346
+ 'cucumber -s -i http://rubyurl.com/eeCl', '', ''
341
347
  ].join("\n")
342
348
  end
343
349
 
@@ -349,10 +355,10 @@ TEXT
349
355
  end
350
356
 
351
357
  def require_jars(jars)
352
- Dir["#{jars}/**/*.jar"].each {|jar| require jar}
358
+ Dir["#{jars}/**/*.jar"].each { |jar| require jar }
353
359
  end
354
360
 
355
- def set_language(lang)
361
+ def language(lang)
356
362
  require 'gherkin/dialect'
357
363
 
358
364
  return indicate_invalid_language_and_exit(lang) unless ::Gherkin::DIALECTS.keys.include? lang
@@ -391,7 +397,7 @@ TEXT
391
397
  tag_limits[tag_name] = limit
392
398
  end
393
399
 
394
- def set_color(color)
400
+ def color(color)
395
401
  Cucumber::Term::ANSIColor.coloring = color
396
402
  end
397
403
 
@@ -403,7 +409,7 @@ TEXT
403
409
  @profiles << p
404
410
  end
405
411
 
406
- def set_option(option, value=nil)
412
+ def set_option(option, value = nil)
407
413
  @options[option] = value.nil? ? true : value
408
414
  end
409
415
 
@@ -508,6 +514,8 @@ TEXT
508
514
  @options[:formats] = stdout_formats[0..0] + non_stdout_formats
509
515
  end
510
516
 
517
+ @options[:retry] = other_options[:retry] if @options[:retry] == 0
518
+
511
519
  self
512
520
  end
513
521
 
@@ -551,7 +559,8 @@ TEXT
551
559
  data = Cucumber::MultilineArgument::DataTable.from(
552
560
  ::Gherkin::DIALECTS.keys.map do |key|
553
561
  [key, ::Gherkin::DIALECTS[key].fetch('name'), ::Gherkin::DIALECTS[key].fetch('native')]
554
- end)
562
+ end
563
+ )
555
564
  @out_stream.write(data.to_s({ color: false, prefixes: Hash.new('') }))
556
565
  Kernel.exit(0)
557
566
  end
@@ -571,7 +580,7 @@ TEXT
571
580
  :dry_run => false,
572
581
  :formats => [],
573
582
  :excludes => [],
574
- :tag_expressions => [],
583
+ :tag_expressions => [],
575
584
  :tag_limits => {},
576
585
  :name_regexps => [],
577
586
  :env_vars => {},
@@ -583,6 +592,5 @@ TEXT
583
592
  }
584
593
  end
585
594
  end
586
-
587
595
  end
588
596
  end