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
@@ -10,7 +10,7 @@ module Cucumber
10
10
  allow(command_line_config).to receive(:puts)
11
11
  end
12
12
 
13
- context "no files created" do
13
+ context 'no files created' do
14
14
  around(:example) do |example|
15
15
 
16
16
  dir = Dir.mktmpdir
@@ -24,29 +24,29 @@ module Cucumber
24
24
  end
25
25
  end
26
26
 
27
- it "should create features directory" do
27
+ it 'should create features directory' do
28
28
  expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features$)
29
29
  command_line_config.run
30
30
  end
31
31
 
32
- it "should create step_definitions directory" do
32
+ it 'should create step_definitions directory' do
33
33
  expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/step_definitions$)
34
34
  command_line_config.run
35
35
  end
36
36
 
37
- it "should create support directory" do
37
+ it 'should create support directory' do
38
38
  expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support$)
39
39
  command_line_config.run
40
40
  end
41
41
 
42
- it "should create env.rb directory" do
42
+ it 'should create env.rb directory' do
43
43
  expect(command_line_config).to receive(:puts).with %r(^\s+create\s+features/support/env.rb$)
44
44
  command_line_config.run
45
45
  end
46
46
 
47
47
  end
48
48
 
49
- context "files created" do
49
+ context 'files created' do
50
50
  around(:example) do |example|
51
51
  dir = Dir.mktmpdir
52
52
  FileUtils.mkdir_p "#{dir}/features"
@@ -63,22 +63,22 @@ module Cucumber
63
63
  end
64
64
  end
65
65
 
66
- it "should not create features directory" do
66
+ it 'should not create features directory' do
67
67
  expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features$)
68
68
  command_line_config.run
69
69
  end
70
70
 
71
- it "should not create step_definitions directory" do
71
+ it 'should not create step_definitions directory' do
72
72
  expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/step_definitions$)
73
73
  command_line_config.run
74
74
  end
75
75
 
76
- it "should not create support directory" do
76
+ it 'should not create support directory' do
77
77
  expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support$)
78
78
  command_line_config.run
79
79
  end
80
80
 
81
- it "should not create env.rb directory" do
81
+ it 'should not create env.rb directory' do
82
82
  expect(command_line_config).to receive(:puts).with %r(^\s+exist\s+features/support/env.rb$)
83
83
  command_line_config.run
84
84
  end
@@ -11,17 +11,17 @@ module Cucumber
11
11
  let(:cucumber_opts) { ['--cuke-option'] }
12
12
  let(:feature_files) { ['./some.feature'] }
13
13
 
14
- context "when running with bundler" do
14
+ context 'when running with bundler' do
15
15
  let(:bundler) { true }
16
16
 
17
17
  subject { Task::ForkedCucumberRunner.new(
18
18
  libs, binary, cucumber_opts, bundler, feature_files) }
19
19
 
20
- it "does use bundler if bundler is set to true" do
20
+ it 'does use bundler if bundler is set to true' do
21
21
  expect(subject.use_bundler).to be true
22
22
  end
23
23
 
24
- it "uses bundle exec to find cucumber and libraries" do
24
+ it 'uses bundle exec to find cucumber and libraries' do
25
25
  expect(subject.cmd).to eq [Cucumber::RUBY_BINARY,
26
26
  '-S',
27
27
  'bundle',
@@ -31,22 +31,22 @@ module Cucumber
31
31
  end
32
32
  end
33
33
 
34
- context "when running without bundler" do
34
+ context 'when running without bundler' do
35
35
  let(:bundler) { false }
36
36
 
37
37
  subject { Task::ForkedCucumberRunner.new(
38
38
  libs, binary, cucumber_opts, bundler, feature_files) }
39
39
 
40
- it "does not use bundler if bundler is set to false" do
40
+ it 'does not use bundler if bundler is set to false' do
41
41
  expect(subject.use_bundler).to be false
42
42
  end
43
43
 
44
- it "uses well known cucumber location and specified libraries" do
44
+ it 'uses well known cucumber location and specified libraries' do
45
45
  expect(subject.cmd).to eq [Cucumber::RUBY_BINARY,
46
- "-I",
47
- "\"lib\"",
48
- "\"#{Cucumber::BINARY }\"",
49
- "--cuke-option"] + feature_files
46
+ '-I',
47
+ '"lib"',
48
+ "\"#{Cucumber::BINARY}\"",
49
+ '--cuke-option'] + feature_files
50
50
  end
51
51
  end
52
52
  end
@@ -7,75 +7,75 @@ module Cucumber
7
7
  module Rake
8
8
  describe Task do
9
9
 
10
- describe "#cucumber_opts" do
10
+ describe '#cucumber_opts' do
11
11
  before { subject.cucumber_opts = opts }
12
12
 
13
- context "when set via array" do
13
+ context 'when set via array' do
14
14
  let(:opts) { %w[ foo bar ] }
15
15
  it { expect(subject.cucumber_opts).to be opts }
16
16
  end
17
17
 
18
- context "when set via space-delimited string" do
19
- let(:opts) { "foo bar" }
18
+ context 'when set via space-delimited string' do
19
+ let(:opts) { 'foo bar' }
20
20
  it { expect(subject.cucumber_opts).to eq %w[ foo bar ] }
21
21
  end
22
22
  end
23
23
 
24
- describe "#cucumber_opts_with_profile" do
24
+ describe '#cucumber_opts_with_profile' do
25
25
  before do
26
26
  subject.cucumber_opts = opts
27
27
  subject.profile = profile
28
28
  end
29
29
 
30
- context "with cucumber_opts" do
30
+ context 'with cucumber_opts' do
31
31
  let(:opts) { %w[ foo bar ] }
32
32
 
33
- context "without profile" do
33
+ context 'without profile' do
34
34
  let(:profile) { nil }
35
35
 
36
- it "should return just cucumber_opts" do
36
+ it 'should return just cucumber_opts' do
37
37
  expect(subject.cucumber_opts_with_profile).to be opts
38
38
  end
39
39
  end
40
40
 
41
- context "with profile" do
42
- let(:profile) { "fancy" }
41
+ context 'with profile' do
42
+ let(:profile) { 'fancy' }
43
43
 
44
- it "should combine opts and profile into an array, prepending --profile option" do
44
+ it 'should combine opts and profile into an array, prepending --profile option' do
45
45
  expect(subject.cucumber_opts_with_profile).to eq %w[ foo bar --profile fancy ]
46
46
  end
47
47
  end
48
48
 
49
- context "with multiple profiles" do
49
+ context 'with multiple profiles' do
50
50
  let(:profile) { %w[ fancy pants ] }
51
51
 
52
- it "should combine opts and each profile into an array, prepending --profile option" do
52
+ it 'should combine opts and each profile into an array, prepending --profile option' do
53
53
  expect(subject.cucumber_opts_with_profile).to eq %w[ foo bar --profile fancy --profile pants ]
54
54
  end
55
55
  end
56
56
  end
57
57
 
58
- context "without cucumber_opts" do
58
+ context 'without cucumber_opts' do
59
59
  let(:opts) { nil }
60
60
 
61
- context "without profile" do
61
+ context 'without profile' do
62
62
  let(:profile) { nil }
63
63
 
64
64
  it { expect(subject.cucumber_opts_with_profile).to eq [] }
65
65
  end
66
66
 
67
- context "with profile" do
68
- let(:profile) { "fancy" }
67
+ context 'with profile' do
68
+ let(:profile) { 'fancy' }
69
69
 
70
- it "should combine opts and profile into an array, prepending --profile option" do
70
+ it 'should combine opts and profile into an array, prepending --profile option' do
71
71
  expect(subject.cucumber_opts_with_profile).to eq %w[ --profile fancy ]
72
72
  end
73
73
  end
74
74
 
75
- context "with multiple profiles" do
75
+ context 'with multiple profiles' do
76
76
  let(:profile) { %w[ fancy pants ] }
77
77
 
78
- it "should combine opts and each profile into an array, prepending --profile option" do
78
+ it 'should combine opts and each profile into an array, prepending --profile option' do
79
79
  expect(subject.cucumber_opts_with_profile).to eq %w[ --profile fancy --profile pants ]
80
80
  end
81
81
  end
@@ -21,42 +21,42 @@ module Cucumber
21
21
  compile [gherkin_doc], receiver
22
22
  end
23
23
 
24
- context "for a regular scenario" do
24
+ context 'for a regular scenario' do
25
25
  let(:gherkin_doc) do
26
26
  gherkin do
27
- feature "feature name" do
28
- scenario "scenario name" do
29
- step "passing"
27
+ feature 'feature name' do
28
+ scenario 'scenario name' do
29
+ step 'passing'
30
30
  end
31
31
  end
32
32
  end
33
33
  end
34
34
 
35
- it "sets the scenario name correctly" do
36
- expect(wrapped_test_case.name).to eq "scenario name"
35
+ it 'sets the scenario name correctly' do
36
+ expect(wrapped_test_case.name).to eq 'scenario name'
37
37
  end
38
38
 
39
- it "sets the feature name correctly" do
40
- expect(wrapped_test_case.feature.name).to eq "feature name"
39
+ it 'sets the feature name correctly' do
40
+ expect(wrapped_test_case.feature.name).to eq 'feature name'
41
41
  end
42
42
 
43
- it "exposes properties of the test_case" do
43
+ it 'exposes properties of the test_case' do
44
44
  expect(wrapped_test_case.location).to eq core_test_case.location
45
45
  expect(wrapped_test_case.source).to eq core_test_case.source
46
46
  expect(wrapped_test_case.keyword).to eq core_test_case.keyword
47
47
  end
48
48
 
49
- it "exposes properties of the result" do
49
+ it 'exposes properties of the result' do
50
50
  expect(wrapped_test_case.status).to eq result.to_sym
51
51
  end
52
52
  end
53
53
 
54
- context "for a failed scenario" do
54
+ context 'for a failed scenario' do
55
55
  let(:gherkin_doc) do
56
56
  gherkin do
57
- feature "feature name" do
58
- scenario "scenario name" do
59
- step "failed"
57
+ feature 'feature name' do
58
+ scenario 'scenario name' do
59
+ step 'failed'
60
60
  end
61
61
  end
62
62
  end
@@ -68,21 +68,21 @@ module Cucumber
68
68
  self.wrapped_test_case = self.wrapped_test_case.with_result(Core::Test::Result::Failed.new(0, exception))
69
69
  end
70
70
 
71
- it "is failed?" do
71
+ it 'is failed?' do
72
72
  expect(wrapped_test_case.failed?).to be_truthy
73
73
  end
74
74
 
75
- it "exposes the exception" do
75
+ it 'exposes the exception' do
76
76
  expect(wrapped_test_case.exception).to eq exception
77
77
  end
78
78
  end
79
79
 
80
- context "for a passing scenario" do
80
+ context 'for a passing scenario' do
81
81
  let(:gherkin_doc) do
82
82
  gherkin do
83
- feature "feature name" do
84
- scenario "scenario name" do
85
- step "passing"
83
+ feature 'feature name' do
84
+ scenario 'scenario name' do
85
+ step 'passing'
86
86
  end
87
87
  end
88
88
  end
@@ -92,25 +92,25 @@ module Cucumber
92
92
  self.wrapped_test_case = self.wrapped_test_case.with_result(Core::Test::Result::Passed.new(0))
93
93
  end
94
94
 
95
- it "is not failed?" do
95
+ it 'is not failed?' do
96
96
  expect(wrapped_test_case.failed?).to be_falsey
97
97
  end
98
98
 
99
- it "#exception is nil" do
99
+ it '#exception is nil' do
100
100
  expect(wrapped_test_case.exception).to be_nil
101
101
  end
102
102
  end
103
103
 
104
- context "for a scenario outline" do
104
+ context 'for a scenario outline' do
105
105
  let(:gherkin_doc) do
106
106
  gherkin do
107
- feature "feature name" do
108
- scenario_outline "scenario outline name" do
109
- step "passing with <arg1> <arg2>"
107
+ feature 'feature name' do
108
+ scenario_outline 'scenario outline name' do
109
+ step 'passing with <arg1> <arg2>'
110
110
 
111
- examples "examples name" do
112
- row "arg1", "arg2"
113
- row "a", "b"
111
+ examples 'examples name' do
112
+ row 'arg1', 'arg2'
113
+ row 'a', 'b'
114
114
  end
115
115
  end
116
116
  end
@@ -118,21 +118,21 @@ module Cucumber
118
118
  end
119
119
 
120
120
  it "sets the test case's name correctly" do
121
- expect(wrapped_test_case.name).to eq "scenario outline name, examples name (#1)"
121
+ expect(wrapped_test_case.name).to eq 'scenario outline name, examples name (#1)'
122
122
  end
123
123
 
124
- it "sets the feature name correctly" do
125
- expect(wrapped_test_case.feature.name).to eq "feature name"
124
+ it 'sets the feature name correctly' do
125
+ expect(wrapped_test_case.feature.name).to eq 'feature name'
126
126
  end
127
127
 
128
- it "exposes properties of the test_case" do
128
+ it 'exposes properties of the test_case' do
129
129
  expect(wrapped_test_case.location).to eq core_test_case.location
130
130
  expect(wrapped_test_case.source).to eq core_test_case.source
131
131
  expect(wrapped_test_case.keyword).to eq core_test_case.keyword
132
132
  end
133
133
 
134
- it "exposes the examples table row cell values" do
135
- expect(wrapped_test_case.cell_values).to eq ["a", "b"]
134
+ it 'exposes the examples table row cell values' do
135
+ expect(wrapped_test_case.cell_values).to eq %w(a b)
136
136
  end
137
137
 
138
138
  end
@@ -3,35 +3,6 @@ require 'spec_helper'
3
3
 
4
4
  module Cucumber
5
5
  describe Runtime::ForProgrammingLanguages do
6
-
7
- let(:user_interface) { double('user interface') }
8
- subject { Runtime::SupportCode.new(user_interface) }
9
- let(:runtime_facade) { Runtime::ForProgrammingLanguages.new(subject, user_interface) }
10
-
11
- describe "#doc_string" do
12
-
13
- it 'defaults to a blank content-type' do
14
- str = runtime_facade.doc_string('DOC')
15
- expect(str).to be_kind_of(MultilineArgument::DocString)
16
- expect(str.content_type).to eq('')
17
- end
18
-
19
- it 'can have a content type' do
20
- str = runtime_facade.doc_string('DOC','ruby')
21
- expect(str.content_type).to eq('ruby')
22
- end
23
-
24
- end
25
-
26
- describe "#table" do
27
-
28
- it 'produces Ast::Table by #table' do
29
- expect(runtime_facade.table(%{
30
- | account | description | amount |
31
- | INT-100 | Taxi | 114 |
32
- | CUC-101 | Peeler | 22 |
33
- })).to be_kind_of(MultilineArgument::DataTable)
34
- end
35
- end
6
+ it 'should probably be inlined'
36
7
  end
37
8
  end
@@ -6,10 +6,10 @@ module Cucumber
6
6
  subject { Runtime.new(options) }
7
7
  let(:options) { {} }
8
8
 
9
- describe "#features_paths" do
9
+ describe '#features_paths' do
10
10
  let(:options) { {:paths => ['foo/bar/baz.feature', 'foo/bar/features/baz.feature', 'other_features'] } }
11
11
 
12
- it "returns the value from configuration.paths" do
12
+ it 'returns the value from configuration.paths' do
13
13
  expect(subject.features_paths).to eq options[:paths]
14
14
  end
15
15
  end
@@ -4,16 +4,16 @@ require 'cucumber/step_argument'
4
4
 
5
5
  module Cucumber
6
6
  describe StepArgument do
7
- it "creates 2 arguments" do
8
- arguments = StepArgument.arguments_from(/I (\w+) (\w+)/, "I like fish")
7
+ it 'creates 2 arguments' do
8
+ arguments = StepArgument.arguments_from(/I (\w+) (\w+)/, 'I like fish')
9
9
 
10
- expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [["like", 2], ["fish", 7]]
10
+ expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [['like', 2], ['fish', 7]]
11
11
  end
12
12
 
13
- it "creates 2 arguments when first group is optional" do
13
+ it 'creates 2 arguments when first group is optional' do
14
14
  arguments = StepArgument.arguments_from(/should( not)? be flashed '([^']*?)'$/, "I should be flashed 'Login failed.'")
15
15
 
16
- expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [[nil, nil], ["Login failed.", 21]]
16
+ expect(arguments.map{|argument| [argument.val, argument.offset]}).to eq [[nil, nil], ['Login failed.', 21]]
17
17
  end
18
18
  end
19
19
  end
@@ -1,42 +1,42 @@
1
1
  # frozen_string_literal: true
2
2
  require 'cucumber/step_match_search'
3
- require 'cucumber/rb_support/rb_dsl'
4
- require 'cucumber/rb_support/rb_language'
3
+ require 'cucumber/glue/dsl'
4
+ require 'cucumber/glue/registry_and_more'
5
5
  require 'cucumber/configuration'
6
6
 
7
7
  module Cucumber
8
8
  describe StepMatchSearch do
9
9
 
10
- let(:search) { StepMatchSearch.new(rb_language.method(:step_matches), configuration) }
11
- let(:rb_language) { RbSupport::RbLanguage.new(runtime, configuration) }
10
+ let(:search) { StepMatchSearch.new(registry.method(:step_matches), configuration) }
11
+ let(:registry) { Glue::RegistryAndMore.new(runtime, configuration) }
12
12
  let(:runtime) do
13
- # TODO: break out step definitions collection from RbLanguage so we don't need this
13
+ # TODO: break out step definitions collection from Glue::RegistryAndMore so we don't need this
14
14
  :unused
15
15
  end
16
16
  let(:configuration) { Configuration.new(options) }
17
17
  let(:options) { {} }
18
18
  let(:dsl) do
19
19
  # TODO: stop relying on implicit global state
20
- rb_language
21
- Object.new.extend(RbSupport::RbDsl)
20
+ registry
21
+ Object.new.extend(Glue::Dsl)
22
22
  end
23
23
 
24
24
  context 'caching' do
25
- it "caches step match results" do
25
+ it 'caches step match results' do
26
26
  dsl.Given(/it (.*) in (.*)/) { |what, month| }
27
27
 
28
- step_match = search.call("it snows in april").first
28
+ step_match = search.call('it snows in april').first
29
29
 
30
- expect(rb_language).not_to receive(:step_matches)
31
- second_step_match = search.call("it snows in april").first
30
+ expect(registry).not_to receive(:step_matches)
31
+ second_step_match = search.call('it snows in april').first
32
32
 
33
33
  expect(step_match).to equal(second_step_match)
34
34
  end
35
35
  end
36
36
 
37
- describe "resolving step defintion matches" do
37
+ describe 'resolving step defintion matches' do
38
38
 
39
- it "raises Ambiguous error with guess hint when multiple step definitions match" do
39
+ it 'raises Ambiguous error with guess hint when multiple step definitions match' do
40
40
  expected_error = %{Ambiguous match of "Three blind mice":
41
41
 
42
42
  spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three (.*) mice/'
@@ -48,14 +48,14 @@ You can run again with --guess to make Cucumber be more smart about it
48
48
  dsl.Given(/Three blind (.*)/) {|animal|}
49
49
 
50
50
  expect(-> {
51
- search.call("Three blind mice").first
51
+ search.call('Three blind mice').first
52
52
  }).to raise_error(Ambiguous, /#{expected_error}/)
53
53
  end
54
54
 
55
- describe "when --guess is used" do
55
+ describe 'when --guess is used' do
56
56
  let(:options) { {:guess => true} }
57
57
 
58
- it "does not show --guess hint" do
58
+ it 'does not show --guess hint' do
59
59
  expected_error = %{Ambiguous match of "Three cute mice":
60
60
 
61
61
  spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three (.*) mice/'
@@ -66,48 +66,39 @@ spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three cute (.*)/'
66
66
  dsl.Given(/Three cute (.*)/) {|animal|}
67
67
 
68
68
  expect(-> {
69
- search.call("Three cute mice").first
69
+ search.call('Three cute mice').first
70
70
  }).to raise_error(Ambiguous, /#{expected_error}/)
71
71
  end
72
72
 
73
- it "does not raise Ambiguous error when multiple step definitions match" do
73
+ it 'does not raise Ambiguous error when multiple step definitions match' do
74
74
  dsl.Given(/Three (.*) mice/) {|disability|}
75
75
  dsl.Given(/Three (.*)/) {|animal|}
76
76
 
77
77
  expect(-> {
78
- search.call("Three blind mice").first
78
+ search.call('Three blind mice').first
79
79
  }).not_to raise_error
80
80
  end
81
81
 
82
- it "does not raise NoMethodError when guessing from multiple step definitions with nil fields" do
83
- dsl.Given(/Three (.*) mice( cannot find food)?/) {|disability, is_disastrous|}
84
- dsl.Given(/Three (.*)?/) {|animal|}
82
+ it 'picks right step definition when an equal number of capture groups' do
83
+ right = dsl.Given(/Three (.*) mice/) {|disability|}
84
+ _wrong = dsl.Given(/Three (.*)/) {|animal|}
85
85
 
86
- expect(-> {
87
- search.call("Three blind mice").first
88
- }).not_to raise_error
89
- end
90
-
91
- it "picks right step definition when an equal number of capture groups" do
92
- right = dsl.Given(/Three (.*) mice/) {|disability|}
93
- wrong = dsl.Given(/Three (.*)/) {|animal|}
94
-
95
- expect(search.call("Three blind mice").first.step_definition).to eq right
86
+ expect(search.call('Three blind mice').first.step_definition).to eq right
96
87
  end
97
88
 
98
- it "picks right step definition when an unequal number of capture groups" do
99
- right = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
100
- wrong = dsl.Given(/Three (.*)/) {|animal|}
89
+ it 'picks right step definition when an unequal number of capture groups' do
90
+ right = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
91
+ _wrong = dsl.Given(/Three (.*)/) {|animal|}
101
92
 
102
- expect(search.call("Three blind mice ran far").first.step_definition).to eq right
93
+ expect(search.call('Three blind mice ran far').first.step_definition).to eq right
103
94
  end
104
95
 
105
- it "picks most specific step definition when an unequal number of capture groups" do
106
- general = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
107
- specific = dsl.Given(/Three blind mice ran far/) do; end
96
+ it 'picks most specific step definition when an unequal number of capture groups' do
97
+ _general = dsl.Given(/Three (.*) mice ran (.*)/) {|disability|}
98
+ _specific = dsl.Given(/Three blind mice ran far/) do; end
108
99
  more_specific = dsl.Given(/^Three blind mice ran far$/) do; end
109
100
 
110
- expect(search.call("Three blind mice ran far").first.step_definition).to eq more_specific
101
+ expect(search.call('Three blind mice ran far').first.step_definition).to eq more_specific
111
102
  end
112
103
  end
113
104
 
@@ -120,4 +111,3 @@ spec/cucumber/step_match_search_spec.rb:\\d+:in `/Three cute (.*)/'
120
111
  end
121
112
  end
122
113
  end
123
-