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
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  require 'cucumber/formatter/spec_helper'
4
4
  require 'cucumber/formatter/html'
5
5
  require 'nokogiri'
6
- require 'cucumber/rb_support/rb_language'
6
+ require 'cucumber/glue/registry_and_more'
7
7
  require 'rspec/mocks'
8
8
 
9
9
  module Cucumber
@@ -24,13 +24,13 @@ module Cucumber
24
24
  @formatter = Html.new(runtime, @out, {})
25
25
  end
26
26
 
27
- it "does not raise an error when visiting a blank feature name" do
27
+ it 'does not raise an error when visiting a blank feature name' do
28
28
  expect(-> {
29
- @formatter.feature_name("Feature", "")
29
+ @formatter.feature_name('Feature', '')
30
30
  }).not_to raise_error
31
31
  end
32
32
 
33
- describe "when writing the report to a file" do
33
+ describe 'when writing the report to a file' do
34
34
  before(:each) do
35
35
  allow(@out).to receive(:respond_to?).with(:path).and_return(true)
36
36
  expect(@out).to receive(:path).and_return('out/file.html')
@@ -38,7 +38,7 @@ module Cucumber
38
38
  @doc = Nokogiri.HTML(@out.string)
39
39
  end
40
40
 
41
- describe "with a step that embeds a snapshot" do
41
+ describe 'with a step that embeds a snapshot' do
42
42
  define_steps do
43
43
  Given(/snap/) {
44
44
  RSpec::Mocks.allow_message(File, :file?) { true }
@@ -52,19 +52,19 @@ module Cucumber
52
52
  Given snap
53
53
  FEATURE
54
54
 
55
- it "converts the snapshot path to a relative path" do
56
- expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq "snapshot.jpeg"
55
+ it 'converts the snapshot path to a relative path' do
56
+ expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg'
57
57
  end
58
58
  end
59
59
  end
60
60
 
61
- describe "given a single feature" do
61
+ describe 'given a single feature' do
62
62
  before(:each) do
63
63
  run_defined_feature
64
64
  @doc = Nokogiri.HTML(@out.string)
65
65
  end
66
66
 
67
- describe "basic feature" do
67
+ describe 'basic feature' do
68
68
  define_feature <<-FEATURE
69
69
  Feature: Bananas
70
70
  In order to find my inner monkey
@@ -72,12 +72,12 @@ module Cucumber
72
72
  I must eat bananas
73
73
  FEATURE
74
74
 
75
- it "should output a main container div" do
75
+ it 'should output a main container div' do
76
76
  expect(@out.string).to match(/\<div class="cucumber"\>/)
77
77
  end
78
78
  end
79
79
 
80
- describe "with a comment" do
80
+ describe 'with a comment' do
81
81
  define_feature <<-FEATURE
82
82
  # Healthy
83
83
  Feature: Foo
@@ -88,16 +88,16 @@ module Cucumber
88
88
  it { expect(@out.string).to match(/^\<!DOCTYPE/) }
89
89
  it { expect(@out.string).to match(/\<\/html\>$/) }
90
90
 
91
- it "nests the comment within the feature" do
91
+ it 'nests the comment within the feature' do
92
92
  expect(@doc).to have_css_node('.feature .comment', /Healthy/)
93
93
  end
94
94
 
95
- it "properly closes the comment" do
95
+ it 'properly closes the comment' do
96
96
  expect(@out.string).to match(%r{<pre class="comment"># Healthy<br/></pre>})
97
97
  end
98
98
  end
99
99
 
100
- describe "with a comment at scenario level" do
100
+ describe 'with a comment at scenario level' do
101
101
  define_feature <<-FEATURE
102
102
  Feature: Foo
103
103
  # Healthy Scenario
@@ -108,7 +108,7 @@ module Cucumber
108
108
  it { expect(@doc).to have_css_node('.scenario .comment', /Healthy Scenario/) }
109
109
  end
110
110
 
111
- describe "with a tag" do
111
+ describe 'with a tag' do
112
112
  define_feature <<-FEATURE
113
113
  @foo
114
114
  Feature: can't have standalone tag :)
@@ -119,7 +119,7 @@ module Cucumber
119
119
  it { expect(@doc).to have_css_node('.feature .tag', /foo/) }
120
120
  end
121
121
 
122
- describe "with a narrative" do
122
+ describe 'with a narrative' do
123
123
  define_feature <<-FEATURE
124
124
  Feature: Bananas
125
125
  In order to find my inner monkey
@@ -134,7 +134,7 @@ module Cucumber
134
134
  it { expect(@doc).to have_css_node('.feature .narrative', /must eat bananas/) }
135
135
  end
136
136
 
137
- describe "with a background" do
137
+ describe 'with a background' do
138
138
  define_feature <<-FEATURE
139
139
  Feature: Bananas
140
140
 
@@ -148,7 +148,7 @@ module Cucumber
148
148
  it { expect(@doc).to have_css_node('.feature .background', /there are bananas/) }
149
149
  end
150
150
 
151
- describe "with a scenario" do
151
+ describe 'with a scenario' do
152
152
  define_feature <<-FEATURE
153
153
  Feature: Banana party
154
154
 
@@ -160,7 +160,7 @@ module Cucumber
160
160
  it { expect(@doc).to have_css_node('.feature .scenario .step', /there are bananas/) }
161
161
  end
162
162
 
163
- describe "with a scenario outline" do
163
+ describe 'with a scenario outline' do
164
164
  define_feature <<-FEATURE
165
165
  Feature: Fud Pyramid
166
166
 
@@ -184,7 +184,7 @@ module Cucumber
184
184
  it { expect(@doc).to have_css_node('.feature .scenario.outline table td', /carrots/) }
185
185
  end
186
186
 
187
- describe "with a step with a py string" do
187
+ describe 'with a step with a py string' do
188
188
  define_feature <<-FEATURE
189
189
  Feature: Traveling circus
190
190
 
@@ -198,7 +198,7 @@ module Cucumber
198
198
  it { expect(@doc).to have_css_node('.feature .scenario .val', /foo/) }
199
199
  end
200
200
 
201
- describe "with a multiline step arg" do
201
+ describe 'with a multiline step arg' do
202
202
  define_steps do
203
203
  Given(/there are monkeys:/) { |table| }
204
204
  end
@@ -216,7 +216,7 @@ module Cucumber
216
216
  it { expect(@out.string.include?('makeYellow(\'scenario_1\')')).to be false }
217
217
  end
218
218
 
219
- describe "with a table in the background and the scenario" do
219
+ describe 'with a table in the background and the scenario' do
220
220
  define_feature <<-FEATURE
221
221
  Feature: accountant monkey
222
222
 
@@ -233,7 +233,7 @@ module Cucumber
233
233
  it { expect(@doc.css('td').length).to eq 8 }
234
234
  end
235
235
 
236
- describe "with a py string in the background and the scenario" do
236
+ describe 'with a py string in the background and the scenario' do
237
237
  define_feature <<-FEATURE
238
238
  Feature: py strings
239
239
 
@@ -253,7 +253,7 @@ module Cucumber
253
253
  it { expect(@doc.css('.feature .scenario pre.val').length).to eq 1 }
254
254
  end
255
255
 
256
- describe "with a step that fails in the scenario" do
256
+ describe 'with a step that fails in the scenario' do
257
257
  define_steps do
258
258
  Given(/boo/) { raise StandardError, 'eek'.freeze }
259
259
  end
@@ -274,7 +274,7 @@ module Cucumber
274
274
  end
275
275
  end
276
276
 
277
- describe "with a step that fails in the background" do
277
+ describe 'with a step that fails in the background' do
278
278
  define_steps do
279
279
  Given(/boo/) { raise 'eek' }
280
280
  end
@@ -296,8 +296,8 @@ module Cucumber
296
296
  it { expect(@doc).not_to have_css_node('.feature .scenario .backtrace', //) }
297
297
  end
298
298
 
299
- context "with a before hook that fails" do
300
- describe "in a scenario" do
299
+ context 'with a before hook that fails' do
300
+ describe 'in a scenario' do
301
301
  define_steps do
302
302
  Before { raise 'eek' }
303
303
  Given(/yay/) {}
@@ -314,7 +314,7 @@ module Cucumber
314
314
  it { expect(@doc).to have_css_node('.feature .scenario .step.skipped', /yay/) }
315
315
  end
316
316
 
317
- describe "in a scenario outline" do
317
+ describe 'in a scenario outline' do
318
318
  define_steps do
319
319
  Before { raise 'eek' }
320
320
  Given(/yay/) {}
@@ -336,7 +336,7 @@ module Cucumber
336
336
 
337
337
  end
338
338
 
339
- describe "with a step that embeds a snapshot" do
339
+ describe 'with a step that embeds a snapshot' do
340
340
  define_steps do
341
341
  Given(/snap/) {
342
342
  RSpec::Mocks.allow_message(File, :file?) { true }
@@ -350,10 +350,10 @@ module Cucumber
350
350
  Given snap
351
351
  FEATURE
352
352
 
353
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq "snapshot.jpeg" }
353
+ it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'snapshot.jpeg' }
354
354
  end
355
355
 
356
- describe "with a step that embeds a text" do
356
+ describe 'with a step that embeds a text' do
357
357
  define_steps do
358
358
  Given(/log/) { embed('log.txt', 'text/plain') }
359
359
  end
@@ -364,10 +364,10 @@ module Cucumber
364
364
  Given log
365
365
  FEATURE
366
366
 
367
- it { expect(@doc.at('a#text_0')['href'].to_s).to eq "log.txt" }
367
+ it { expect(@doc.at('a#text_0')['href'].to_s).to eq 'log.txt' }
368
368
  end
369
369
 
370
- describe "with a step that embeds a snapshot content manually" do
370
+ describe 'with a step that embeds a snapshot content manually' do
371
371
  define_steps do
372
372
  Given(/snap/) { embed('data:image/png;base64,YWJj', 'image/png') }
373
373
  end
@@ -378,10 +378,10 @@ module Cucumber
378
378
  Given snap
379
379
  FEATURE
380
380
 
381
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq "data:image/png;base64,YWJj" }
381
+ it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
382
382
  end
383
383
 
384
- describe "with a step that embeds a snapshot content" do
384
+ describe 'with a step that embeds a snapshot content' do
385
385
  define_steps do
386
386
  Given(/snap/) { embed('YWJj', 'image/png;base64') }
387
387
  end
@@ -392,10 +392,10 @@ module Cucumber
392
392
  Given snap
393
393
  FEATURE
394
394
 
395
- it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq "data:image/png;base64,YWJj" }
395
+ it { expect(@doc.css('.embed img').first.attributes['src'].to_s).to eq 'data:image/png;base64,YWJj' }
396
396
  end
397
397
 
398
- describe "with an undefined Given step then an undefined And step" do
398
+ describe 'with an undefined Given step then an undefined And step' do
399
399
  define_feature(<<-FEATURE)
400
400
  Feature:
401
401
  Scenario:
@@ -403,10 +403,10 @@ module Cucumber
403
403
  And another undefined step
404
404
  FEATURE
405
405
 
406
- it { expect(@doc.css('pre').map { |pre| /^(Given|And)/.match(pre.text)[1] }).to eq ["Given", "Given"] }
406
+ it { expect(@doc.css('pre').map { |pre| /^(Given|And)/.match(pre.text)[1] }).to eq %w(Given Given) }
407
407
  end
408
408
 
409
- describe "with an undefined When step then an undefined And step" do
409
+ describe 'with an undefined When step then an undefined And step' do
410
410
  define_feature(<<-FEATURE)
411
411
  Feature:
412
412
  Scenario:
@@ -415,10 +415,10 @@ module Cucumber
415
415
  And another undefined step
416
416
  FEATURE
417
417
 
418
- it { expect(@doc.css('pre').map { |pre| /^(Given|When|And)/.match(pre.text)[1] }).to eq ["Given", "When", "When"] }
418
+ it { expect(@doc.css('pre').map { |pre| /^(Given|When|And)/.match(pre.text)[1] }).to eq %w(Given When When) }
419
419
  end
420
420
 
421
- describe "with an passing Then step and an undefined And step" do
421
+ describe 'with an passing Then step and an undefined And step' do
422
422
  define_feature <<-FEATURE
423
423
  Feature:
424
424
  Scenario:
@@ -431,11 +431,11 @@ module Cucumber
431
431
  Given(/^this step passes$/) {}
432
432
  end
433
433
 
434
- it { expect(@doc.css('pre').map { |pre| /^(Given|Then)/.match(pre.text)[1] }).to eq ["Then"] }
434
+ it { expect(@doc.css('pre').map { |pre| /^(Given|Then)/.match(pre.text)[1] }).to eq ['Then'] }
435
435
  end
436
436
 
437
- describe "with a output from hooks" do
438
- describe "in a scenario" do
437
+ describe 'with a output from hooks' do
438
+ describe 'in a scenario' do
439
439
  define_feature <<-FEATURE
440
440
  Feature:
441
441
  Scenario:
@@ -444,26 +444,26 @@ module Cucumber
444
444
 
445
445
  define_steps do
446
446
  Before do
447
- puts "Before hook"
447
+ puts 'Before hook'
448
448
  end
449
449
  AfterStep do
450
- puts "AfterStep hook"
450
+ puts 'AfterStep hook'
451
451
  end
452
452
  After do
453
- puts "After hook"
453
+ puts 'After hook'
454
454
  end
455
455
  Given(/^this step passes$/) {}
456
456
  end
457
457
 
458
458
  it 'should have ccs nodes ".step.message" for all the hooks' do
459
459
  expect(@doc.css('.step.message').length).to eq 3
460
- expect(@doc.css('.step.message')[0].text).to eq "Before hook"
461
- expect(@doc.css('.step.message')[1].text).to eq "AfterStep hook"
462
- expect(@doc.css('.step.message')[2].text).to eq "After hook"
460
+ expect(@doc.css('.step.message')[0].text).to eq 'Before hook'
461
+ expect(@doc.css('.step.message')[1].text).to eq 'AfterStep hook'
462
+ expect(@doc.css('.step.message')[2].text).to eq 'After hook'
463
463
  end
464
464
  end
465
465
 
466
- describe "in a scenario outline" do
466
+ describe 'in a scenario outline' do
467
467
  define_feature <<-FEATURE
468
468
  Feature:
469
469
  Scenario Outline:
@@ -475,13 +475,13 @@ module Cucumber
475
475
 
476
476
  define_steps do
477
477
  Before do
478
- puts "Before hook"
478
+ puts 'Before hook'
479
479
  end
480
480
  AfterStep do
481
- puts "AfterStep hook"
481
+ puts 'AfterStep hook'
482
482
  end
483
483
  After do
484
- puts "After hook"
484
+ puts 'After hook'
485
485
  end
486
486
  Given(/^this step passes$/) {}
487
487
  end
@@ -490,7 +490,7 @@ module Cucumber
490
490
  end
491
491
  end
492
492
  end
493
- context "in --expand mode" do
493
+ context 'in --expand mode' do
494
494
  let(:options) { { expand: true } }
495
495
  before(:each) do
496
496
  @out = StringIO.new
@@ -498,7 +498,7 @@ module Cucumber
498
498
  run_defined_feature
499
499
  @doc = Nokogiri.HTML(@out.string)
500
500
  end
501
- describe "with undefined * steps in a Scenario Outline" do
501
+ describe 'with undefined * steps in a Scenario Outline' do
502
502
  define_feature <<-FEATURE
503
503
  Feature:
504
504
  Scenario Outline:
@@ -514,10 +514,10 @@ module Cucumber
514
514
  Given(/^this step passes$/) {}
515
515
  end
516
516
 
517
- it { expect(@doc.css('pre').map { |pre| /^(Given|Then|When)/.match(pre.text)[1] }).to eq ["Given", "Given"] }
517
+ it { expect(@doc.css('pre').map { |pre| /^(Given|Then|When)/.match(pre.text)[1] }).to eq %w(Given Given) }
518
518
  end
519
519
 
520
- describe "with a scenario outline and a before hook that fails" do
520
+ describe 'with a scenario outline and a before hook that fails' do
521
521
  define_steps do
522
522
  Before { raise 'eek' }
523
523
  Given(/yay/) {}
@@ -11,21 +11,21 @@ module Cucumber
11
11
  extend SpecHelperDsl
12
12
  include SpecHelper
13
13
 
14
- context "Given a single feature" do
14
+ context 'Given a single feature' do
15
15
  before(:each) do
16
16
  @out = StringIO.new
17
17
  @formatter = Json.new(actual_runtime.configuration.with_options(out_stream: @out))
18
18
  run_defined_feature
19
19
  end
20
20
 
21
- describe "with a scenario with no steps" do
21
+ describe 'with a scenario with no steps' do
22
22
  define_feature <<-FEATURE
23
23
  Feature: Banana party
24
24
 
25
25
  Scenario: Monkey eats bananas
26
26
  FEATURE
27
27
 
28
- it "outputs the json data" do
28
+ it 'outputs the json data' do
29
29
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
30
30
  [{"id": "banana-party",
31
31
  "uri": "spec.feature",
@@ -43,7 +43,7 @@ module Cucumber
43
43
  end
44
44
  end
45
45
 
46
- describe "with a scenario with an undefined step" do
46
+ describe 'with a scenario with an undefined step' do
47
47
  define_feature <<-FEATURE
48
48
  Feature: Banana party
49
49
 
@@ -51,7 +51,7 @@ module Cucumber
51
51
  Given there are bananas
52
52
  FEATURE
53
53
 
54
- it "outputs the json data" do
54
+ it 'outputs the json data' do
55
55
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
56
56
  [{"id": "banana-party",
57
57
  "uri": "spec.feature",
@@ -75,7 +75,7 @@ module Cucumber
75
75
  end
76
76
  end
77
77
 
78
- describe "with a scenario with a passed step" do
78
+ describe 'with a scenario with a passed step' do
79
79
  define_feature <<-FEATURE
80
80
  Feature: Banana party
81
81
 
@@ -87,7 +87,7 @@ module Cucumber
87
87
  Given(/^there are bananas$/) {}
88
88
  end
89
89
 
90
- it "outputs the json data" do
90
+ it 'outputs the json data' do
91
91
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
92
92
  [{"id": "banana-party",
93
93
  "uri": "spec.feature",
@@ -112,7 +112,7 @@ module Cucumber
112
112
  end
113
113
  end
114
114
 
115
- describe "with a scenario with a failed step" do
115
+ describe 'with a scenario with a failed step' do
116
116
  define_feature <<-FEATURE
117
117
  Feature: Banana party
118
118
 
@@ -121,10 +121,10 @@ module Cucumber
121
121
  FEATURE
122
122
 
123
123
  define_steps do
124
- Given(/^there are bananas$/) { raise "no bananas" }
124
+ Given(/^there are bananas$/) { raise 'no bananas' }
125
125
  end
126
126
 
127
- it "outputs the json data" do
127
+ it 'outputs the json data' do
128
128
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
129
129
  [{"id": "banana-party",
130
130
  "uri": "spec.feature",
@@ -150,7 +150,7 @@ module Cucumber
150
150
  end
151
151
  end
152
152
 
153
- describe "with a scenario with a pending step" do
153
+ describe 'with a scenario with a pending step' do
154
154
  define_feature <<-FEATURE
155
155
  Feature: Banana party
156
156
 
@@ -162,7 +162,7 @@ module Cucumber
162
162
  Given(/^there are bananas$/) { pending }
163
163
  end
164
164
 
165
- it "outputs the json data" do
165
+ it 'outputs the json data' do
166
166
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
167
167
  [{"id": "banana-party",
168
168
  "uri": "spec.feature",
@@ -188,7 +188,7 @@ module Cucumber
188
188
  end
189
189
  end
190
190
 
191
- describe "with a scenario outline with one example" do
191
+ describe 'with a scenario outline with one example' do
192
192
  define_feature <<-FEATURE
193
193
  Feature: Banana party
194
194
 
@@ -204,7 +204,7 @@ module Cucumber
204
204
  Given(/^there are bananas$/) {}
205
205
  end
206
206
 
207
- it "outputs the json data" do
207
+ it 'outputs the json data' do
208
208
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
209
209
  [{"id": "banana-party",
210
210
  "uri": "spec.feature",
@@ -229,7 +229,7 @@ module Cucumber
229
229
  end
230
230
  end
231
231
 
232
- describe "with tags in the feature file" do
232
+ describe 'with tags in the feature file' do
233
233
  define_feature <<-FEATURE
234
234
  @f
235
235
  Feature: Banana party
@@ -252,7 +252,7 @@ module Cucumber
252
252
  Given(/^there are bananas$/) {}
253
253
  end
254
254
 
255
- it "the tags are included in the json data" do
255
+ it 'the tags are included in the json data' do
256
256
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
257
257
  [{"id": "banana-party",
258
258
  "uri": "spec.feature",
@@ -302,7 +302,7 @@ module Cucumber
302
302
  end
303
303
  end
304
304
 
305
- describe "with comments in the feature file" do
305
+ describe 'with comments in the feature file' do
306
306
  define_feature <<-FEATURE
307
307
  #feature comment
308
308
  Feature: Banana party
@@ -333,7 +333,7 @@ module Cucumber
333
333
  Then(/^the monkey eats bananas$/) {}
334
334
  end
335
335
 
336
- it "the comments are included in the json data" do
336
+ it 'the comments are included in the json data' do
337
337
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
338
338
  [{"id": "banana-party",
339
339
  "uri": "spec.feature",
@@ -413,7 +413,7 @@ module Cucumber
413
413
  end
414
414
  end
415
415
 
416
- describe "with a scenario with a step with a doc string" do
416
+ describe 'with a scenario with a step with a doc string' do
417
417
  define_feature <<-FEATURE
418
418
  Feature: Banana party
419
419
 
@@ -428,7 +428,7 @@ module Cucumber
428
428
  Given(/^there are bananas$/) { |s| s }
429
429
  end
430
430
 
431
- it "includes the doc string in the json data" do
431
+ it 'includes the doc string in the json data' do
432
432
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
433
433
  [{"id": "banana-party",
434
434
  "uri": "spec.feature",
@@ -456,7 +456,7 @@ module Cucumber
456
456
  end
457
457
  end
458
458
 
459
- describe "with a scenario with a step that use puts" do
459
+ describe 'with a scenario with a step that use puts' do
460
460
  define_feature <<-FEATURE
461
461
  Feature: Banana party
462
462
 
@@ -465,10 +465,10 @@ module Cucumber
465
465
  FEATURE
466
466
 
467
467
  define_steps do
468
- Given(/^there are bananas$/) { puts "from step" }
468
+ Given(/^there are bananas$/) { puts 'from step' }
469
469
  end
470
470
 
471
- it "includes the output from the step in the json data" do
471
+ it 'includes the output from the step in the json data' do
472
472
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
473
473
  [{"id": "banana-party",
474
474
  "uri": "spec.feature",
@@ -494,7 +494,7 @@ module Cucumber
494
494
  end
495
495
  end
496
496
 
497
- describe "with a background" do
497
+ describe 'with a background' do
498
498
  define_feature <<-FEATURE
499
499
  Feature: Banana party
500
500
 
@@ -508,7 +508,7 @@ module Cucumber
508
508
  Then the monkey eats more bananas
509
509
  FEATURE
510
510
 
511
- it "includes the background in the json data each time it is executed" do
511
+ it 'includes the background in the json data each time it is executed' do
512
512
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
513
513
  [{"id": "banana-party",
514
514
  "uri": "spec.feature",
@@ -566,7 +566,7 @@ module Cucumber
566
566
  end
567
567
  end
568
568
 
569
- describe "with a scenario with a step that embeds data directly" do
569
+ describe 'with a scenario with a step that embeds data directly' do
570
570
  define_feature <<-FEATURE
571
571
  Feature: Banana party
572
572
 
@@ -575,11 +575,11 @@ module Cucumber
575
575
  FEATURE
576
576
 
577
577
  define_steps do
578
- Given(/^there are bananas$/) { data = "YWJj"
579
- embed data, "mime-type;base64" }
578
+ Given(/^there are bananas$/) { data = 'YWJj'
579
+ embed data, 'mime-type;base64' }
580
580
  end
581
581
 
582
- it "includes the data from the step in the json data" do
582
+ it 'includes the data from the step in the json data' do
583
583
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
584
584
  [{"id": "banana-party",
585
585
  "uri": "spec.feature",
@@ -606,7 +606,7 @@ module Cucumber
606
606
  end
607
607
  end
608
608
 
609
- describe "with a scenario with a step that embeds a file" do
609
+ describe 'with a scenario with a step that embeds a file' do
610
610
  define_feature <<-FEATURE
611
611
  Feature: Banana party
612
612
 
@@ -619,12 +619,12 @@ module Cucumber
619
619
  RSpec::Mocks.allow_message(File, :file?) { true }
620
620
  f1 = RSpec::Mocks::Double.new
621
621
  RSpec::Mocks.allow_message(File, :open) { |&block| block.call(f1) }
622
- RSpec::Mocks.allow_message(f1, :read) { "foo" }
622
+ RSpec::Mocks.allow_message(f1, :read) { 'foo' }
623
623
  embed('out/snapshot.jpeg', 'image/png')
624
624
  }
625
625
  end
626
626
 
627
- it "includes the file content in the json data" do
627
+ it 'includes the file content in the json data' do
628
628
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
629
629
  [{"id": "banana-party",
630
630
  "uri": "spec.feature",
@@ -651,7 +651,7 @@ module Cucumber
651
651
  end
652
652
  end
653
653
 
654
- describe "with a scenario with hooks" do
654
+ describe 'with a scenario with hooks' do
655
655
  define_feature <<-FEATURE
656
656
  Feature: Banana party
657
657
 
@@ -670,7 +670,7 @@ module Cucumber
670
670
  Given(/^there are bananas$/) {}
671
671
  end
672
672
 
673
- it "includes all hooks except the around hook in the json data" do
673
+ it 'includes all hooks except the around hook in the json data' do
674
674
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
675
675
  [{"id": "banana-party",
676
676
  "uri": "spec.feature",
@@ -716,7 +716,7 @@ module Cucumber
716
716
  end
717
717
  end
718
718
 
719
- describe "with a scenario when only an around hook is failing" do
719
+ describe 'with a scenario when only an around hook is failing' do
720
720
  define_feature <<-FEATURE
721
721
  Feature: Banana party
722
722
 
@@ -725,11 +725,11 @@ module Cucumber
725
725
  FEATURE
726
726
 
727
727
  define_steps do
728
- Around() { |scenario, block| block.call; raise RuntimeError, "error" }
728
+ Around() { |scenario, block| block.call; raise RuntimeError, 'error' }
729
729
  Given(/^there are bananas$/) {}
730
730
  end
731
731
 
732
- it "includes the around hook result in the json data" do
732
+ it 'includes the around hook result in the json data' do
733
733
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
734
734
  [{"id": "banana-party",
735
735
  "uri": "spec.feature",
@@ -759,7 +759,7 @@ module Cucumber
759
759
  end
760
760
  end
761
761
 
762
- describe "with a scenario with a step with a data table" do
762
+ describe 'with a scenario with a step with a data table' do
763
763
  define_feature <<-FEATURE
764
764
  Feature: Banana party
765
765
 
@@ -773,7 +773,7 @@ module Cucumber
773
773
  Given(/^there are bananas$/) { |s| s }
774
774
  end
775
775
 
776
- it "includes the doc string in the json data" do
776
+ it 'includes the doc string in the json data' do
777
777
  expect(load_normalised_json(@out)).to eq MultiJson.load(%{
778
778
  [{"id": "banana-party",
779
779
  "uri": "spec.feature",
@@ -812,7 +812,7 @@ module Cucumber
812
812
  json.each do |feature|
813
813
  elements = feature.fetch('elements') { [] }
814
814
  elements.each do |scenario|
815
- ['steps', 'before', 'after', 'around'].each do |type|
815
+ %w(steps before after around).each do |type|
816
816
  if scenario[type]
817
817
  scenario[type].each do |step_or_hook|
818
818
  normalise_json_step_or_hook(step_or_hook)
@@ -829,12 +829,10 @@ module Cucumber
829
829
  end
830
830
 
831
831
  def normalise_json_step_or_hook(step_or_hook)
832
- if step_or_hook['result']
833
- if step_or_hook['result']['duration']
834
- expect(step_or_hook['result']['duration']).to be >= 0
835
- step_or_hook['result']['duration'] = 1
836
- end
837
- end
832
+ return unless step_or_hook['result'] && step_or_hook['result']['duration']
833
+
834
+ expect(step_or_hook['result']['duration']).to be >= 0
835
+ step_or_hook['result']['duration'] = 1
838
836
  end
839
837
 
840
838
  end