cucumber 3.0.0.pre.1 → 3.0.0.pre.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (316) hide show
  1. checksums.yaml +4 -4
  2. data/.cucumberproignore +6 -0
  3. data/.rubocop.yml +13 -0
  4. data/.rubocop_todo.yml +1075 -0
  5. data/.travis.yml +42 -8
  6. data/CONTRIBUTING.md +8 -1
  7. data/Gemfile +16 -10
  8. data/History.md +96 -36
  9. data/README.md +12 -3
  10. data/Rakefile +12 -2
  11. data/appveyor.yml +26 -0
  12. data/cucumber.gemspec +15 -10
  13. data/cucumber.yml +9 -10
  14. data/examples/i18n/Rakefile +1 -1
  15. data/examples/i18n/ar/features/step_definitions/calculator_steps.rb +2 -2
  16. data/examples/i18n/ar/lib/calculator.rb +2 -2
  17. data/examples/i18n/bg/features/step_definitions/calculator_steps.rb +6 -6
  18. data/examples/i18n/ca/features/step_definitions/calculator_steps.rb +4 -4
  19. data/examples/i18n/ca/lib/calculadora.rb +2 -2
  20. data/examples/i18n/cs/features/step_definitions/calculator_steps.rb +4 -4
  21. data/examples/i18n/cs/lib/calculator.rb +3 -3
  22. data/examples/i18n/da/features/step_definitions/lommeregner_steps.rb +4 -4
  23. data/examples/i18n/da/lib/lommeregner.rb +2 -2
  24. data/examples/i18n/de/features/step_definitions/calculator_steps.rb +4 -4
  25. data/examples/i18n/de/lib/calculator.rb +2 -2
  26. data/examples/i18n/el/features/step_definitions/calculator_steps.rb +5 -5
  27. data/examples/i18n/el/lib/calculator.rb +2 -2
  28. data/examples/i18n/en-lol/features/step_definitions/cucumbrz_steps.rb +4 -4
  29. data/examples/i18n/en-lol/lib/basket.rb +2 -2
  30. data/examples/i18n/en-lol/lib/belly.rb +2 -2
  31. data/examples/i18n/en/features/step_definitions/calculator_steps.rb +4 -4
  32. data/examples/i18n/en/lib/calculator.rb +2 -2
  33. data/examples/i18n/eo/features/step_definitions/calculator_steps.rb +4 -4
  34. data/examples/i18n/eo/lib/calculator.rb +2 -2
  35. data/examples/i18n/es/features/step_definitions/calculador_steps.rb +5 -5
  36. data/examples/i18n/es/lib/calculador.rb +2 -2
  37. data/examples/i18n/et/features/step_definitions/kalkulaator_steps.rb +4 -4
  38. data/examples/i18n/et/lib/kalkulaator.rb +3 -3
  39. data/examples/i18n/fi/features/step_definitions/laskin_steps.rb +3 -3
  40. data/examples/i18n/fi/lib/laskin.rb +1 -1
  41. data/examples/i18n/fr/features/step_definitions/calculatrice_steps.rb +8 -8
  42. data/examples/i18n/fr/features/support/env.rb +1 -1
  43. data/examples/i18n/fr/lib/calculatrice.rb +2 -2
  44. data/examples/i18n/he/features/step_definitions/calculator_steps.rb +4 -4
  45. data/examples/i18n/he/lib/calculator.rb +1 -1
  46. data/examples/i18n/hi/features/step_definitions/calculator_steps.rb +3 -3
  47. data/examples/i18n/hi/lib/calculator.rb +1 -1
  48. data/examples/i18n/ht/features/step_definitions/kalkilatris_steps.rb +4 -4
  49. data/examples/i18n/ht/lib/kalkilatris.rb +2 -2
  50. data/examples/i18n/hu/features/step_definitions/calculator_steps.rb +4 -4
  51. data/examples/i18n/hu/lib/calculator.rb +1 -1
  52. data/examples/i18n/id/features/step_definitions/calculator_steps.rb +4 -4
  53. data/examples/i18n/id/lib/calculator.rb +2 -2
  54. data/examples/i18n/it/features/step_definitions/calcolatrice_steps.rb +4 -4
  55. data/examples/i18n/it/lib/calcolatrice.rb +3 -3
  56. data/examples/i18n/ja/features/step_definitions/calculator_steps.rb +3 -3
  57. data/examples/i18n/ja/features/support/env.rb +1 -1
  58. data/examples/i18n/ja/lib/calculator.rb +2 -2
  59. data/examples/i18n/ko/features/step_definitions/calculator_steps.rb +4 -4
  60. data/examples/i18n/ko/lib/calculator.rb +2 -2
  61. data/examples/i18n/lt/features/step_definitions/calculator_steps.rb +4 -4
  62. data/examples/i18n/lt/lib/calculator.rb +2 -2
  63. data/examples/i18n/lv/features/step_definitions/calculator_steps.rb +4 -4
  64. data/examples/i18n/lv/lib/calculator.rb +2 -2
  65. data/examples/i18n/no/features/step_definitions/kalkulator_steps.rb +3 -3
  66. data/examples/i18n/no/features/support/env.rb +1 -1
  67. data/examples/i18n/no/lib/kalkulator.rb +2 -2
  68. data/examples/i18n/pl/features/step_definitions/calculator_steps.rb +4 -4
  69. data/examples/i18n/pl/lib/calculator.rb +2 -2
  70. data/examples/i18n/pt/features/step_definitions/calculadora_steps.rb +3 -3
  71. data/examples/i18n/pt/features/support/env.rb +1 -1
  72. data/examples/i18n/pt/lib/calculadora.rb +1 -1
  73. data/examples/i18n/ro/features/step_definitions/calculator_steps.rb +5 -5
  74. data/examples/i18n/ro/lib/calculator.rb +1 -1
  75. data/examples/i18n/ru/features/step_definitions/calculator_steps.rb +5 -5
  76. data/examples/i18n/sk/features/step_definitions/calculator_steps.rb +4 -4
  77. data/examples/i18n/sk/lib/calculator.rb +2 -2
  78. data/examples/i18n/sr-Cyrl/features/step_definitions/calculator_steps.rb +3 -3
  79. data/examples/i18n/sr-Cyrl/features/support/env.rb +1 -1
  80. data/examples/i18n/sr-Cyrl/lib/calculator.rb +2 -2
  81. data/examples/i18n/sr-Latn/features/step_definitions/calculator_steps.rb +4 -4
  82. data/examples/i18n/sr-Latn/lib/calculator.rb +2 -2
  83. data/examples/i18n/sv/features/step_definitions/kalkulator_steps.rb +3 -3
  84. data/examples/i18n/sv/lib/kalkulator.rb +2 -2
  85. data/examples/i18n/tr/features/step_definitions/hesap_makinesi_adimlari.rb +4 -4
  86. data/examples/i18n/tr/lib/hesap_makinesi.rb +2 -2
  87. data/examples/i18n/uk/features/step_definitions/calculator_steps.rb +4 -4
  88. data/examples/i18n/uz/features/step_definitions/calculator_steps.rb +4 -4
  89. data/examples/i18n/zh-CN/features/step_definitions/calculator_steps.rb +5 -5
  90. data/examples/i18n/zh-CN/lib/calculator.rb +2 -2
  91. data/examples/i18n/zh-TW/features/step_definitions/calculator_steps.rb +4 -4
  92. data/examples/i18n/zh-TW/lib/calculator.rb +2 -2
  93. data/examples/rspec_doubles/features/step_definitions/calvin_steps.rb +3 -3
  94. data/examples/sinatra/features/step_definitions/add_steps.rb +4 -4
  95. data/examples/tcl/features/step_definitions/fib_steps.rb +2 -2
  96. data/examples/test_unit/features/step_definitions/test_unit_steps.rb +4 -4
  97. data/examples/watir/features/step_definitions/search_steps.rb +3 -3
  98. data/examples/watir/features/support/screenshots.rb +5 -5
  99. data/features/docs/api/list_step_defs_as_json.feature +21 -7
  100. data/features/docs/api/listen_for_events.feature +1 -1
  101. data/features/docs/api/run_cli_main_with_existing_runtime.feature +1 -0
  102. data/features/docs/cli/dry_run.feature +3 -0
  103. data/features/docs/cli/execute_with_tag_filter.feature +4 -4
  104. data/features/docs/cli/fail_fast.feature +2 -0
  105. data/features/docs/{gherkin/language_help.feature → cli/i18n.feature} +6 -6
  106. data/features/docs/cli/randomize.feature +2 -2
  107. data/features/docs/cli/retry_failing_tests.feature +28 -3
  108. data/features/docs/cli/run_scenarios_matching_name.feature +1 -0
  109. data/features/docs/cli/specifying_multiple_formatters.feature +3 -0
  110. data/features/docs/cli/strict_mode.feature +6 -0
  111. data/features/docs/defining_steps/nested_steps.feature +5 -1
  112. data/features/docs/defining_steps/nested_steps_i18n.feature +1 -0
  113. data/features/docs/defining_steps/nested_steps_with_second_arg.feature +2 -0
  114. data/features/docs/defining_steps/printing_messages.feature +1 -1
  115. data/features/docs/defining_steps/skip_scenario.feature +1 -0
  116. data/features/docs/defining_steps/snippets.feature +18 -18
  117. data/features/docs/events/gherkin_source_read_event.feature +43 -0
  118. data/features/docs/events/step_activated_event.feature +36 -0
  119. data/features/docs/events/step_definition_registered_event.feature +29 -0
  120. data/features/docs/events/test_case_finished_event.feature +35 -0
  121. data/features/docs/events/test_case_starting_event.feature +54 -0
  122. data/features/docs/events/test_run_finished_event.feature +40 -0
  123. data/features/docs/events/test_run_starting_event.feature +41 -0
  124. data/features/docs/events/test_step_finished_event.feature +47 -0
  125. data/features/docs/events/test_step_starting_event.feature +43 -0
  126. data/features/docs/exception_in_after_hook.feature +3 -2
  127. data/features/docs/exception_in_after_step_hook.feature +2 -0
  128. data/features/docs/exception_in_around_hook.feature +2 -0
  129. data/features/docs/exception_in_before_hook.feature +3 -1
  130. data/features/docs/extending_cucumber/custom_formatter.feature +21 -1
  131. data/features/docs/formatters/json_formatter.feature +4 -4
  132. data/features/docs/formatters/junit_formatter.feature +7 -6
  133. data/features/docs/formatters/pretty_formatter.feature +1 -0
  134. data/features/docs/formatters/progress_formatter.feature +1 -0
  135. data/features/docs/formatters/rerun_formatter.feature +2 -0
  136. data/features/docs/formatters/summary_formatter.feature +1 -0
  137. data/features/docs/formatters/usage_formatter.feature +3 -0
  138. data/features/docs/getting_started.feature +2 -1
  139. data/features/docs/gherkin/background.feature +5 -5
  140. data/features/docs/gherkin/doc_strings.feature +2 -0
  141. data/features/docs/gherkin/expand_option_for_outlines.feature +1 -0
  142. data/features/docs/gherkin/outlines.feature +4 -0
  143. data/features/docs/gherkin/unicode_table.feature +1 -0
  144. data/features/docs/gherkin/using_descriptions.feature +1 -0
  145. data/features/docs/gherkin/using_star_notation.feature +1 -1
  146. data/features/docs/post_configuration_hook.feature +1 -1
  147. data/features/docs/rake_task.feature +5 -0
  148. data/features/docs/raketask.feature +3 -1
  149. data/features/docs/work_in_progress.feature +5 -2
  150. data/features/docs/writing_support_code/after_step_hooks.feature +3 -1
  151. data/features/docs/writing_support_code/around_hooks.feature +6 -0
  152. data/features/docs/writing_support_code/before_hook.feature +1 -0
  153. data/features/docs/writing_support_code/hook_order.feature +3 -1
  154. data/features/docs/writing_support_code/parameter_types.feature +75 -0
  155. data/features/docs/writing_support_code/tagged_hooks.feature +1 -1
  156. data/features/lib/step_definitions/aruba_steps.rb +4 -10
  157. data/features/lib/step_definitions/cli_steps.rb +2 -2
  158. data/features/lib/step_definitions/cucumber_steps.rb +8 -12
  159. data/features/lib/step_definitions/iso-8859-1_steps.rb +2 -2
  160. data/features/lib/step_definitions/json_steps.rb +1 -1
  161. data/features/lib/step_definitions/junit_steps.rb +1 -1
  162. data/features/lib/step_definitions/language_steps.rb +2 -2
  163. data/features/lib/step_definitions/profile_steps.rb +6 -6
  164. data/features/lib/step_definitions/retry_steps.rb +3 -3
  165. data/features/lib/step_definitions/ruby_steps.rb +1 -1
  166. data/features/lib/support/env.rb +1 -1
  167. data/features/lib/support/fake_wire_server.rb +7 -2
  168. data/features/lib/support/feature_factory.rb +1 -1
  169. data/features/lib/support/normalise_output.rb +13 -12
  170. data/features/lib/support/parameter_types.rb +8 -0
  171. data/gem_tasks/contributors.rake +9 -6
  172. data/gem_tasks/environment.rake +1 -5
  173. data/gem_tasks/examples.rake +1 -1
  174. data/gem_tasks/fix_cr_lf.rake +1 -1
  175. data/gem_tasks/flog.rake +2 -2
  176. data/gem_tasks/rspec.rake +1 -1
  177. data/lib/autotest/cucumber_mixin.rb +15 -15
  178. data/lib/autotest/discover.rb +2 -2
  179. data/lib/cucumber/cli/configuration.rb +7 -13
  180. data/lib/cucumber/cli/main.rb +6 -6
  181. data/lib/cucumber/cli/options.rb +163 -126
  182. data/lib/cucumber/cli/profile_loader.rb +24 -20
  183. data/lib/cucumber/configuration.rb +12 -17
  184. data/lib/cucumber/constantize.rb +1 -1
  185. data/lib/cucumber/core_ext/string.rb +1 -1
  186. data/lib/cucumber/deprecate.rb +1 -1
  187. data/lib/cucumber/events.rb +11 -1
  188. data/lib/cucumber/events/gherkin_source_read.rb +17 -0
  189. data/lib/cucumber/events/{step_match.rb → step_activated.rb} +2 -2
  190. data/lib/cucumber/events/step_definition_registered.rb +1 -1
  191. data/lib/cucumber/events/test_case_finished.rb +18 -0
  192. data/lib/cucumber/events/test_case_starting.rb +15 -0
  193. data/lib/cucumber/events/test_run_starting.rb +16 -0
  194. data/lib/cucumber/events/test_step_finished.rb +20 -0
  195. data/lib/cucumber/events/test_step_starting.rb +17 -0
  196. data/lib/cucumber/filters.rb +1 -0
  197. data/lib/cucumber/filters/activate_steps.rb +1 -1
  198. data/lib/cucumber/filters/broadcast_test_run_starting_event.rb +27 -0
  199. data/lib/cucumber/filters/retry.rb +1 -1
  200. data/lib/cucumber/filters/tag_limits.rb +3 -3
  201. data/lib/cucumber/filters/tag_limits/verifier.rb +1 -1
  202. data/lib/cucumber/formatter/ansicolor.rb +8 -11
  203. data/lib/cucumber/formatter/backtrace_filter.rb +19 -7
  204. data/lib/cucumber/formatter/console.rb +16 -19
  205. data/lib/cucumber/formatter/console_counts.rb +8 -21
  206. data/lib/cucumber/formatter/console_issues.rb +30 -9
  207. data/lib/cucumber/formatter/duration.rb +1 -1
  208. data/lib/cucumber/formatter/fail_fast.rb +1 -1
  209. data/lib/cucumber/formatter/html.rb +168 -242
  210. data/lib/cucumber/formatter/html_builder.rb +110 -0
  211. data/lib/cucumber/formatter/inline-js.js +30 -0
  212. data/lib/cucumber/formatter/interceptor.rb +2 -2
  213. data/lib/cucumber/formatter/json.rb +12 -12
  214. data/lib/cucumber/formatter/junit.rb +11 -11
  215. data/lib/cucumber/formatter/legacy_api/adapter.rb +27 -27
  216. data/lib/cucumber/formatter/legacy_api/ast.rb +16 -20
  217. data/lib/cucumber/formatter/legacy_api/results.rb +6 -8
  218. data/lib/cucumber/formatter/pretty.rb +17 -17
  219. data/lib/cucumber/formatter/progress.rb +11 -12
  220. data/lib/cucumber/formatter/rerun.rb +1 -1
  221. data/lib/cucumber/formatter/steps.rb +1 -1
  222. data/lib/cucumber/formatter/unicode.rb +1 -1
  223. data/lib/cucumber/formatter/usage.rb +12 -12
  224. data/lib/cucumber/gherkin/formatter/ansi_escapes.rb +1 -1
  225. data/lib/cucumber/gherkin/formatter/escaping.rb +1 -1
  226. data/lib/cucumber/{rb_support/rb_dsl.rb → glue/dsl.rb} +44 -17
  227. data/lib/cucumber/glue/hook.rb +43 -0
  228. data/lib/cucumber/glue/invoke_in_world.rb +70 -0
  229. data/lib/cucumber/glue/proto_world.rb +225 -0
  230. data/lib/cucumber/{rb_support/rb_language.rb → glue/registry_and_more.rb} +45 -86
  231. data/lib/cucumber/{rb_support → glue}/snippet.rb +62 -25
  232. data/lib/cucumber/glue/step_definition.rb +143 -0
  233. data/lib/cucumber/glue/world_factory.rb +23 -0
  234. data/lib/cucumber/hooks.rb +4 -4
  235. data/lib/cucumber/multiline_argument.rb +2 -2
  236. data/lib/cucumber/multiline_argument/data_table.rb +40 -178
  237. data/lib/cucumber/multiline_argument/data_table/diff_matrices.rb +158 -0
  238. data/lib/cucumber/platform.rb +3 -5
  239. data/lib/cucumber/rake/task.rb +11 -11
  240. data/lib/cucumber/rspec/disable_option_parser.rb +1 -1
  241. data/lib/cucumber/rspec/doubles.rb +1 -1
  242. data/lib/cucumber/running_test_case.rb +2 -2
  243. data/lib/cucumber/runtime.rb +46 -34
  244. data/lib/cucumber/runtime/after_hooks.rb +1 -1
  245. data/lib/cucumber/runtime/for_programming_languages.rb +1 -36
  246. data/lib/cucumber/runtime/support_code.rb +19 -15
  247. data/lib/cucumber/runtime/user_interface.rb +4 -11
  248. data/lib/cucumber/step_argument.rb +0 -2
  249. data/lib/cucumber/step_definition_light.rb +1 -0
  250. data/lib/cucumber/step_match.rb +16 -15
  251. data/lib/cucumber/step_match_search.rb +2 -3
  252. data/lib/cucumber/term/ansicolor.rb +1 -1
  253. data/lib/cucumber/version +1 -1
  254. data/lib/simplecov_setup.rb +1 -1
  255. data/scripts/invite-collaborator +40 -0
  256. data/scripts/update-history +83 -0
  257. data/spec/cucumber/cli/configuration_spec.rb +95 -97
  258. data/spec/cucumber/cli/main_spec.rb +7 -7
  259. data/spec/cucumber/cli/options_spec.rb +112 -78
  260. data/spec/cucumber/cli/profile_loader_spec.rb +24 -5
  261. data/spec/cucumber/cli/rerun_spec.rb +20 -20
  262. data/spec/cucumber/configuration_spec.rb +47 -47
  263. data/spec/cucumber/constantize_spec.rb +2 -2
  264. data/spec/cucumber/events_spec.rb +9 -0
  265. data/spec/cucumber/file_specs_spec.rb +25 -25
  266. data/spec/cucumber/filters/activate_steps_spec.rb +16 -16
  267. data/spec/cucumber/filters/gated_receiver_spec.rb +6 -6
  268. data/spec/cucumber/filters/retry_spec.rb +22 -9
  269. data/spec/cucumber/filters/tag_limits/test_case_index_spec.rb +11 -11
  270. data/spec/cucumber/filters/tag_limits/verifier_spec.rb +14 -14
  271. data/spec/cucumber/filters/tag_limits_spec.rb +8 -8
  272. data/spec/cucumber/formatter/ansicolor_spec.rb +9 -9
  273. data/spec/cucumber/formatter/backtrace_filter_spec.rb +32 -0
  274. data/spec/cucumber/formatter/console_counts_spec.rb +1 -1
  275. data/spec/cucumber/formatter/duration_spec.rb +3 -3
  276. data/spec/cucumber/formatter/fail_fast_spec.rb +21 -21
  277. data/spec/cucumber/formatter/html_spec.rb +58 -58
  278. data/spec/cucumber/formatter/json_spec.rb +44 -46
  279. data/spec/cucumber/formatter/junit_spec.rb +43 -45
  280. data/spec/cucumber/formatter/legacy_api/adapter_spec.rb +43 -43
  281. data/spec/cucumber/formatter/pretty_spec.rb +107 -107
  282. data/spec/cucumber/formatter/progress_spec.rb +20 -20
  283. data/spec/cucumber/formatter/rerun_spec.rb +1 -1
  284. data/spec/cucumber/formatter/spec_helper.rb +6 -5
  285. data/spec/cucumber/{rb_support/rb_world_spec.rb → glue/proto_world_spec.rb} +20 -5
  286. data/spec/cucumber/glue/registry_and_more_spec.rb +213 -0
  287. data/spec/cucumber/{rb_support → glue}/snippet_spec.rb +61 -25
  288. data/spec/cucumber/glue/step_definition_spec.rb +207 -0
  289. data/spec/cucumber/hooks_spec.rb +3 -3
  290. data/spec/cucumber/multiline_argument/data_table_spec.rb +177 -133
  291. data/spec/cucumber/project_initializer_spec.rb +10 -10
  292. data/spec/cucumber/rake/forked_spec.rb +10 -10
  293. data/spec/cucumber/rake/task_spec.rb +20 -20
  294. data/spec/cucumber/running_test_case_spec.rb +35 -35
  295. data/spec/cucumber/runtime/for_programming_languages_spec.rb +1 -30
  296. data/spec/cucumber/runtime_spec.rb +2 -2
  297. data/spec/cucumber/step_argument_spec.rb +5 -5
  298. data/spec/cucumber/step_match_search_spec.rb +31 -41
  299. data/spec/cucumber/step_match_spec.rb +33 -33
  300. data/spec/cucumber/world/pending_spec.rb +10 -10
  301. metadata +117 -47
  302. data/features/docs/formatters/debug_formatter.feature +0 -47
  303. data/features/docs/writing_support_code/transforms.feature +0 -98
  304. data/features/lib/step_definitions/wire_steps.rb +0 -59
  305. data/gem_tasks/cucumber.rake +0 -26
  306. data/lib/cucumber/core_ext/instance_exec.rb +0 -71
  307. data/lib/cucumber/formatter/debug.rb +0 -36
  308. data/lib/cucumber/rb_support/rb_hook.rb +0 -20
  309. data/lib/cucumber/rb_support/rb_step_definition.rb +0 -132
  310. data/lib/cucumber/rb_support/rb_transform.rb +0 -60
  311. data/lib/cucumber/rb_support/rb_world.rb +0 -171
  312. data/spec/cucumber/core_ext/instance_exec_spec.rb +0 -5
  313. data/spec/cucumber/formatter/debug_spec.rb +0 -65
  314. data/spec/cucumber/rb_support/rb_language_spec.rb +0 -321
  315. data/spec/cucumber/rb_support/rb_step_definition_spec.rb +0 -200
  316. data/spec/cucumber/rb_support/rb_transform_spec.rb +0 -47
@@ -38,7 +38,7 @@ module Cli
38
38
 
39
39
  attr_reader :out, :error
40
40
 
41
- it "uses the default profile when no profile is defined" do
41
+ it 'uses the default profile when no profile is defined' do
42
42
  given_cucumber_yml_defined_as({'default' => '--require some_file'})
43
43
 
44
44
  config.parse!(%w{--format progress})
@@ -49,16 +49,16 @@ module Cli
49
49
  context '--profile' do
50
50
  include RSpec::WorkInProgress
51
51
 
52
- it "expands args from profiles in the cucumber.yml file" do
52
+ it 'expands args from profiles in the cucumber.yml file' do
53
53
  given_cucumber_yml_defined_as({'bongo' => '--require from/yml'})
54
54
 
55
55
  config.parse!(%w{--format progress --profile bongo})
56
56
 
57
- expect(config.options[:formats]).to eq [['progress', out]]
57
+ expect(config.options[:formats]).to eq [['progress', {}, out]]
58
58
  expect(config.options[:require]).to eq ['from/yml']
59
59
  end
60
60
 
61
- it "expands args from the default profile when no flags are provided" do
61
+ it 'expands args from the default profile when no flags are provided' do
62
62
  given_cucumber_yml_defined_as({'default' => '--require from/yml'})
63
63
 
64
64
  config.parse!([])
@@ -66,7 +66,7 @@ module Cli
66
66
  expect(config.options[:require]).to eq ['from/yml']
67
67
  end
68
68
 
69
- it "allows --strict to be set by a profile" do
69
+ it 'allows --strict to be set by a profile' do
70
70
  given_cucumber_yml_defined_as({'bongo' => '--strict'})
71
71
 
72
72
  config.parse!(%w{--profile bongo})
@@ -74,7 +74,7 @@ module Cli
74
74
  expect(config.options[:strict]).to be true
75
75
  end
76
76
 
77
- it "parses ERB syntax in the cucumber.yml file" do
77
+ it 'parses ERB syntax in the cucumber.yml file' do
78
78
  given_cucumber_yml_defined_as("---\ndefault: \"<%=\"--require some_file\"%>\"\n")
79
79
 
80
80
  config.parse!([])
@@ -82,7 +82,7 @@ module Cli
82
82
  expect(config.options[:require]).to include('some_file')
83
83
  end
84
84
 
85
- it "parses ERB in cucumber.yml that makes uses nested ERB sessions" do
85
+ it 'parses ERB in cucumber.yml that makes uses nested ERB sessions' do
86
86
  given_cucumber_yml_defined_as(<<ERB_YML)
87
87
  <%= ERB.new({'standard' => '--require some_file'}.to_yaml).result %>
88
88
  <%= ERB.new({'enhanced' => '--require other_file'}.to_yaml).result %>
@@ -93,7 +93,7 @@ ERB_YML
93
93
  expect(config.options[:require]).to include('some_file')
94
94
  end
95
95
 
96
- it "provides a helpful error message when a specified profile does not exists in cucumber.yml" do
96
+ it 'provides a helpful error message when a specified profile does not exists in cucumber.yml' do
97
97
  given_cucumber_yml_defined_as({'default' => '--require from/yml', 'html_report' => '--format html'})
98
98
 
99
99
  expected_message = <<-END_OF_MESSAGE
@@ -107,42 +107,42 @@ END_OF_MESSAGE
107
107
  expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(ProfileNotFound, expected_message)
108
108
  end
109
109
 
110
- it "allows profiles to be defined in arrays" do
110
+ it 'allows profiles to be defined in arrays' do
111
111
  given_cucumber_yml_defined_as({'foo' => ['-f','progress']})
112
112
 
113
113
  config.parse!(%w{--profile foo})
114
114
 
115
- expect(config.options[:formats]).to eq [['progress', out]]
115
+ expect(config.options[:formats]).to eq [['progress', {}, out]]
116
116
  end
117
117
 
118
- it "disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)" do
118
+ it 'disregards default STDOUT formatter defined in profile when another is passed in (via cmd line)' do
119
119
  given_cucumber_yml_defined_as({'foo' => %w[--format pretty]})
120
120
  config.parse!(%w{--format progress --profile foo})
121
121
 
122
- expect(config.options[:formats]).to eq [['progress', out]]
122
+ expect(config.options[:formats]).to eq [['progress', {}, out]]
123
123
  end
124
124
 
125
- ["--no-profile", "-P"].each do |flag|
125
+ ['--no-profile', '-P'].each do |flag|
126
126
  context 'when none is specified with #{flag}' do
127
- it "disables profiles" do
127
+ it 'disables profiles' do
128
128
  given_cucumber_yml_defined_as({'default' => '-v --require file_specified_in_default_profile.rb'})
129
129
 
130
- config.parse!("#{flag} --require some_file.rb".split(" "))
130
+ config.parse!("#{flag} --require some_file.rb".split(' '))
131
131
 
132
132
  expect(config.options[:require]).to eq ['some_file.rb']
133
133
  end
134
134
 
135
- it "notifies the user that the profiles are being disabled" do
135
+ it 'notifies the user that the profiles are being disabled' do
136
136
  given_cucumber_yml_defined_as({'default' => '-v'})
137
137
 
138
- config.parse!("#{flag} --require some_file.rb".split(" "))
138
+ config.parse!("#{flag} --require some_file.rb".split(' '))
139
139
 
140
- expect(out.string).to match /Disabling profiles.../
140
+ expect(out.string).to match(/Disabling profiles.../)
141
141
  end
142
142
  end
143
143
  end
144
144
 
145
- it "issues a helpful error message when a specified profile exists but is nil or blank" do
145
+ it 'issues a helpful error message when a specified profile exists but is nil or blank' do
146
146
  [nil, ' '].each do |bad_input|
147
147
  given_cucumber_yml_defined_as({'foo' => bad_input})
148
148
 
@@ -152,7 +152,7 @@ END_OF_MESSAGE
152
152
  end
153
153
  end
154
154
 
155
- it "issues a helpful error message when no YAML file exists and a profile is specified" do
155
+ it 'issues a helpful error message when no YAML file exists and a profile is specified' do
156
156
  expect(File).to receive(:exist?).with('cucumber.yml') { false }
157
157
 
158
158
  expected_error = /cucumber\.yml was not found/
@@ -160,10 +160,10 @@ END_OF_MESSAGE
160
160
  expect(-> { config.parse!(%w{--profile i_do_not_exist}) }).to raise_error(expected_error)
161
161
  end
162
162
 
163
- it "issues a helpful error message when cucumber.yml is blank or malformed" do
163
+ it 'issues a helpful error message when cucumber.yml is blank or malformed' do
164
164
  expected_error_message = /cucumber\.yml was found, but was blank or malformed. Please refer to cucumber's documentation on correct profile usage./
165
165
 
166
- ['', 'sfsadfs', "--- \n- an\n- array\n", "---dddfd"].each do |bad_input|
166
+ ['', 'sfsadfs', "--- \n- an\n- array\n", '---dddfd'].each do |bad_input|
167
167
  given_cucumber_yml_defined_as(bad_input)
168
168
 
169
169
  expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
@@ -172,149 +172,149 @@ END_OF_MESSAGE
172
172
  end
173
173
  end
174
174
 
175
- it "issues a helpful error message when cucumber.yml can not be parsed" do
175
+ it 'issues a helpful error message when cucumber.yml can not be parsed' do
176
176
  expected_error_message = /cucumber.yml was found, but could not be parsed. Please refer to cucumber's documentation on correct profile usage./
177
177
 
178
- given_cucumber_yml_defined_as("input that causes an exception in YAML loading")
178
+ given_cucumber_yml_defined_as('input that causes an exception in YAML loading')
179
179
 
180
180
  expect(YAML).to receive(:load).and_raise(ArgumentError)
181
181
  expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
182
182
  end
183
183
 
184
- it "issues a helpful error message when cucumber.yml can not be parsed by ERB" do
184
+ it 'issues a helpful error message when cucumber.yml can not be parsed by ERB' do
185
185
  expected_error_message = /cucumber.yml was found, but could not be parsed with ERB. Please refer to cucumber's documentation on correct profile usage./
186
- given_cucumber_yml_defined_as("<% this_fails %>")
186
+ given_cucumber_yml_defined_as('<% this_fails %>')
187
187
 
188
188
  expect(-> { config.parse!([]) }).to raise_error(expected_error_message)
189
189
  end
190
190
  end
191
191
 
192
- it "accepts --dry-run option" do
192
+ it 'accepts --dry-run option' do
193
193
  config.parse!(%w{--dry-run})
194
194
 
195
195
  expect(config.options[:dry_run]).to be true
196
196
  end
197
-
198
- it "implies --no-duration with --dry-run option" do
197
+
198
+ it 'implies --no-duration with --dry-run option' do
199
199
  config.parse!(%w{--dry-run})
200
-
200
+
201
201
  expect(config.options[:duration]).to be false
202
202
  end
203
203
 
204
- it "accepts --no-source option" do
204
+ it 'accepts --no-source option' do
205
205
  config.parse!(%w{--no-source})
206
206
 
207
207
  expect(config.options[:source]).to be false
208
208
  end
209
209
 
210
- it "accepts --no-snippets option" do
210
+ it 'accepts --no-snippets option' do
211
211
  config.parse!(%w{--no-snippets})
212
212
 
213
213
  expect(config.options[:snippets]).to be false
214
214
  end
215
215
 
216
- it "sets snippets and source and duration to false with --quiet option" do
216
+ it 'sets snippets and source and duration to false with --quiet option' do
217
217
  config.parse!(%w{--quiet})
218
218
 
219
219
  expect(config.options[:snippets]).to be false
220
220
  expect(config.options[:source]).to be false
221
221
  expect(config.options[:duration]).to be false
222
222
  end
223
-
224
- it "sets duration to false with --no-duration" do
223
+
224
+ it 'sets duration to false with --no-duration' do
225
225
  config.parse!(%w{--no-duration})
226
-
226
+
227
227
  expect(config.options[:duration]).to be false
228
228
  end
229
229
 
230
- it "accepts --verbose option" do
230
+ it 'accepts --verbose option' do
231
231
  config.parse!(%w{--verbose})
232
232
 
233
233
  expect(config.options[:verbose]).to be true
234
234
  end
235
235
 
236
- it "accepts --out option" do
236
+ it 'accepts --out option' do
237
237
  config.parse!(%w{--out jalla.txt})
238
238
 
239
- expect(config.formats).to eq [['pretty', 'jalla.txt']]
239
+ expect(config.formats).to eq [['pretty', {}, 'jalla.txt']]
240
240
  end
241
241
 
242
- it "accepts multiple --out options" do
242
+ it 'accepts multiple --out options' do
243
243
  config.parse!(%w{--format progress --out file1 --out file2})
244
244
 
245
- expect(config.formats).to eq [['progress', 'file2']]
245
+ expect(config.formats).to eq [['progress', {}, 'file2']]
246
246
  end
247
247
 
248
- it "accepts multiple --format options and put the STDOUT one first so progress is seen" do
248
+ it 'accepts multiple --format options and put the STDOUT one first so progress is seen' do
249
249
  config.parse!(%w{--format pretty --out pretty.txt --format progress})
250
250
 
251
- expect(config.formats).to eq [['progress', out], ['pretty', 'pretty.txt']]
251
+ expect(config.formats).to eq [['progress', {}, out], ['pretty', {}, 'pretty.txt']]
252
252
  end
253
253
 
254
- it "does not accept multiple --format options when both use implicit STDOUT" do
255
- expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
254
+ it 'does not accept multiple --format options when both use implicit STDOUT' do
255
+ expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
256
256
  end
257
257
 
258
- it "does not accept multiple --format options when both use implicit STDOUT (using profile with no formatters)" do
258
+ it 'does not accept multiple --format options when both use implicit STDOUT (using profile with no formatters)' do
259
259
  given_cucumber_yml_defined_as({'default' => ['-q']})
260
- expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
260
+ expect(-> { config.parse!(%w{--format pretty --format progress}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
261
261
  end
262
262
 
263
- it "accepts same --format options with implicit STDOUT, and keep only one" do
263
+ it 'accepts same --format options with implicit STDOUT, and keep only one' do
264
264
  config.parse!(%w{--format pretty --format pretty})
265
265
 
266
- expect(config.formats).to eq [["pretty", out]]
266
+ expect(config.formats).to eq [['pretty', {}, out]]
267
267
  end
268
268
 
269
- it "does not accept multiple --out streams pointing to the same place" do
270
- expect(-> { config.parse!(%w{--format pretty --out file1 --format progress --out file1}) }).to raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
269
+ it 'does not accept multiple --out streams pointing to the same place' do
270
+ expect(-> { config.parse!(%w{--format pretty --out file1 --format progress --out file1}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
271
271
  end
272
272
 
273
- it "does not accept multiple --out streams pointing to the same place (one from profile, one from command line)" do
273
+ it 'does not accept multiple --out streams pointing to the same place (one from profile, one from command line)' do
274
274
  given_cucumber_yml_defined_as({'default' => ['-f','progress', '--out', 'file1']})
275
- expect(-> { config.parse!(%w{--format pretty --out file1}) }).to raise_error("All but one formatter must use --out, only one can print to each stream (or STDOUT)")
275
+ expect(-> { config.parse!(%w{--format pretty --out file1}) }).to raise_error('All but one formatter must use --out, only one can print to each stream (or STDOUT)')
276
276
  end
277
277
 
278
- it "associates --out to previous --format" do
278
+ it 'associates --out to previous --format' do
279
279
  config.parse!(%w{--format progress --out file1 --format profile --out file2})
280
280
 
281
- expect(config.formats).to eq [["progress", "file1"], ["profile" ,"file2"]]
281
+ expect(config.formats).to eq [['progress', {}, 'file1'], ['profile', {}, 'file2']]
282
282
  end
283
283
 
284
- it "accepts same --format options with same --out streams and keep only one" do
284
+ it 'accepts same --format options with same --out streams and keep only one' do
285
285
  config.parse!(%w{--format html --out file --format pretty --format html --out file})
286
286
 
287
- expect(config.formats).to eq [["pretty", out], ["html", "file"]]
287
+ expect(config.formats).to eq [['pretty', {}, out], ['html', {}, 'file']]
288
288
  end
289
289
 
290
- it "accepts same --format options with different --out streams" do
290
+ it 'accepts same --format options with different --out streams' do
291
291
  config.parse!(%w{--format html --out file1 --format html --out file2})
292
292
 
293
- expect(config.formats).to eq [["html", "file1"], ["html", "file2"]]
293
+ expect(config.formats).to eq [['html', {}, 'file1'], ['html', {}, 'file2']]
294
294
  end
295
295
 
296
- it "accepts --color option" do
296
+ it 'accepts --color option' do
297
297
  expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(true)
298
298
 
299
299
  config.parse!(['--color'])
300
300
  end
301
301
 
302
- it "accepts --no-color option" do
302
+ it 'accepts --no-color option' do
303
303
  expect(Cucumber::Term::ANSIColor).to receive(:coloring=).with(false)
304
304
 
305
305
  config = Configuration.new(StringIO.new)
306
306
  config.parse!(['--no-color'])
307
307
  end
308
308
 
309
- describe "--backtrace" do
309
+ describe '--backtrace' do
310
310
  before do
311
311
  Cucumber.use_full_backtrace = false
312
312
  end
313
313
 
314
- it "shows full backtrace when --backtrace is present" do
314
+ it 'shows full backtrace when --backtrace is present' do
315
315
  Main.new(['--backtrace'])
316
316
  begin
317
- expect("x").to eq "y"
317
+ expect('x').to eq 'y'
318
318
  rescue RSpec::Expectations::ExpectationNotMetError => e
319
319
  expect(e.backtrace[0]).not_to eq "#{__FILE__}:#{__LINE__ - 2}"
320
320
  end
@@ -325,108 +325,106 @@ END_OF_MESSAGE
325
325
  end
326
326
  end
327
327
 
328
- it "accepts multiple --name options" do
329
- config.parse!(['--name', "User logs in", '--name', "User signs up"])
328
+ it 'accepts multiple --name options' do
329
+ config.parse!(['--name', 'User logs in', '--name', 'User signs up'])
330
330
 
331
331
  expect(config.options[:name_regexps]).to include(/User logs in/)
332
332
  expect(config.options[:name_regexps]).to include(/User signs up/)
333
333
  end
334
334
 
335
- it "accepts multiple -n options" do
336
- config.parse!(['-n', "User logs in", '-n', "User signs up"])
335
+ it 'accepts multiple -n options' do
336
+ config.parse!(['-n', 'User logs in', '-n', 'User signs up'])
337
337
 
338
338
  expect(config.options[:name_regexps]).to include(/User logs in/)
339
339
  expect(config.options[:name_regexps]).to include(/User signs up/)
340
340
  end
341
341
 
342
- it "should allow specifying environment variables on the command line" do
343
- config.parse!(["foo=bar"])
342
+ it 'should allow specifying environment variables on the command line' do
343
+ config.parse!(['foo=bar'])
344
344
 
345
- expect(ENV["foo"]).to eq "bar"
345
+ expect(ENV['foo']).to eq 'bar'
346
346
  expect(config.paths).not_to include('foo=bar')
347
347
  end
348
348
 
349
- it "allows specifying environment variables in profiles" do
349
+ it 'allows specifying environment variables in profiles' do
350
350
  given_cucumber_yml_defined_as({'selenium' => 'RAILS_ENV=selenium'})
351
- config.parse!(["--profile", "selenium"])
351
+ config.parse!(['--profile', 'selenium'])
352
352
 
353
- expect(ENV["RAILS_ENV"]).to eq "selenium"
353
+ expect(ENV['RAILS_ENV']).to eq 'selenium'
354
354
  expect(config.paths).not_to include('RAILS_ENV=selenium')
355
355
  end
356
356
 
357
- describe "#tag_expression" do
358
- include RSpec::WorkInProgress
359
-
360
- it "returns an empty expression when no tags are specified" do
357
+ describe '#tag_expressions' do
358
+ it 'returns an empty expression when no tags are specified' do
361
359
  config.parse!([])
362
360
 
363
- expect(config.tag_expression).to be_empty
361
+ expect(config.tag_expressions).to be_empty
364
362
  end
365
363
 
366
- it "returns an expression when tags are specified" do
364
+ it 'returns an expression when tags are specified' do
367
365
  config.parse!(['--tags','@foo'])
368
366
 
369
- expect(config.tag_expression).not_to be_empty
367
+ expect(config.tag_expressions).not_to be_empty
370
368
  end
371
369
  end
372
370
 
373
371
  describe '#tag_limits' do
374
- it "returns an empty hash when no limits are specified" do
372
+ it 'returns an empty hash when no limits are specified' do
375
373
  config.parse!([])
376
374
 
377
375
  expect(config.tag_limits).to eq({ })
378
376
  end
379
377
 
380
- it "returns a hash of limits when limits are specified" do
378
+ it 'returns a hash of limits when limits are specified' do
381
379
  config.parse!(['--tags','@foo:1'])
382
380
 
383
- expect(config.tag_limits).to eq({ "@foo" => 1 })
381
+ expect(config.tag_limits).to eq({ '@foo' => 1 })
384
382
  end
385
383
  end
386
384
 
387
- describe "#dry_run?" do
388
- it "returns true when --dry-run was specified on in the arguments" do
385
+ describe '#dry_run?' do
386
+ it 'returns true when --dry-run was specified on in the arguments' do
389
387
  config.parse!(['--dry-run'])
390
388
 
391
389
  expect(config.dry_run?).to be true
392
390
  end
393
391
 
394
- it "returns true when --dry-run was specified in yaml file" do
392
+ it 'returns true when --dry-run was specified in yaml file' do
395
393
  given_cucumber_yml_defined_as({'default' => '--dry-run'})
396
394
  config.parse!([])
397
395
 
398
396
  expect(config.dry_run?).to be true
399
397
  end
400
398
 
401
- it "returns false by default" do
399
+ it 'returns false by default' do
402
400
  config.parse!([])
403
401
 
404
402
  expect(config.dry_run?).to be false
405
403
  end
406
404
  end
407
405
 
408
- describe "#snippet_type" do
409
- it "returns the snippet type when it was set" do
410
- config.parse!(["--snippet-type", "classic"])
406
+ describe '#snippet_type' do
407
+ it 'returns the snippet type when it was set' do
408
+ config.parse!(['--snippet-type', 'classic'])
411
409
 
412
410
  expect(config.snippet_type).to eq :classic
413
411
  end
414
412
 
415
- it "returns the snippet type when it was set with shorthand option" do
416
- config.parse!(["-I", "classic"])
413
+ it 'returns the snippet type when it was set with shorthand option' do
414
+ config.parse!(['-I', 'classic'])
417
415
 
418
416
  expect(config.snippet_type).to eq :classic
419
417
  end
420
418
 
421
- it "returns the default snippet type if it was not set" do
419
+ it 'returns the default snippet type if it was not set' do
422
420
  config.parse!([])
423
421
 
424
- expect(config.snippet_type).to eq :regexp
422
+ expect(config.snippet_type).to eq :cucumber_expression
425
423
  end
426
424
  end
427
425
 
428
- describe "#retry_attempts" do
429
- it "returns the specified number of retries" do
426
+ describe '#retry_attempts' do
427
+ it 'returns the specified number of retries' do
430
428
  config.parse!(['--retry=3'])
431
429
  expect(config.retry_attempts).to eql 3
432
430
  end