chef 16.0.287-universal-mingw32 → 16.2.73-universal-mingw32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (333) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +2 -3
  3. data/README.md +3 -3
  4. data/Rakefile +3 -2
  5. data/chef.gemspec +5 -5
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/application/apply.rb +2 -1
  9. data/lib/chef/application/base.rb +1 -1
  10. data/lib/chef/application/client.rb +1 -1
  11. data/lib/chef/application/windows_service_manager.rb +1 -1
  12. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  13. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  14. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  15. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  16. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  17. data/lib/chef/chef_fs/path_utils.rb +4 -4
  18. data/lib/chef/cookbook/chefignore.rb +1 -1
  19. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  20. data/lib/chef/cookbook/metadata.rb +2 -2
  21. data/lib/chef/cookbook_loader.rb +1 -1
  22. data/lib/chef/cookbook_manifest.rb +1 -1
  23. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  24. data/lib/chef/cookbook_version.rb +4 -4
  25. data/lib/chef/data_bag.rb +4 -4
  26. data/lib/chef/data_collector.rb +1 -1
  27. data/lib/chef/data_collector/error_handlers.rb +1 -1
  28. data/lib/chef/decorator/lazy_array.rb +2 -2
  29. data/lib/chef/deprecated.rb +4 -0
  30. data/lib/chef/digester.rb +5 -4
  31. data/lib/chef/dsl/declare_resource.rb +1 -1
  32. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  33. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  34. data/lib/chef/file_access_control.rb +1 -1
  35. data/lib/chef/file_access_control/windows.rb +2 -2
  36. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  37. data/lib/chef/formatters/base.rb +1 -1
  38. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  39. data/lib/chef/formatters/error_inspectors/node_load_error_inspector.rb +2 -2
  40. data/lib/chef/formatters/error_inspectors/registration_error_inspector.rb +7 -7
  41. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  42. data/lib/chef/http.rb +19 -4
  43. data/lib/chef/http/decompressor.rb +1 -1
  44. data/lib/chef/http/http_request.rb +1 -1
  45. data/lib/chef/http/json_output.rb +1 -1
  46. data/lib/chef/http/ssl_policies.rb +18 -0
  47. data/lib/chef/json_compat.rb +1 -1
  48. data/lib/chef/key.rb +1 -1
  49. data/lib/chef/knife.rb +2 -2
  50. data/lib/chef/knife/bootstrap.rb +20 -14
  51. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  52. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  53. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  54. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  55. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  56. data/lib/chef/knife/config_get.rb +1 -1
  57. data/lib/chef/knife/config_use_profile.rb +15 -5
  58. data/lib/chef/knife/cookbook_delete.rb +1 -1
  59. data/lib/chef/knife/cookbook_upload.rb +1 -4
  60. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  61. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  62. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  63. data/lib/chef/knife/core/node_presenter.rb +1 -1
  64. data/lib/chef/knife/core/status_presenter.rb +1 -1
  65. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  66. data/lib/chef/knife/core/windows_bootstrap_context.rb +19 -4
  67. data/lib/chef/knife/data_bag_create.rb +1 -1
  68. data/lib/chef/knife/key_create_base.rb +1 -1
  69. data/lib/chef/knife/key_edit_base.rb +1 -1
  70. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  71. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  72. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  73. data/lib/chef/knife/ssh.rb +2 -2
  74. data/lib/chef/knife/supermarket_share.rb +1 -1
  75. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  76. data/lib/chef/log.rb +1 -1
  77. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  78. data/lib/chef/mixin/checksum.rb +0 -1
  79. data/lib/chef/mixin/openssl_helper.rb +4 -4
  80. data/lib/chef/mixin/properties.rb +2 -2
  81. data/lib/chef/mixin/securable.rb +2 -2
  82. data/lib/chef/mixin/shell_out.rb +1 -1
  83. data/lib/chef/node/attribute.rb +2 -2
  84. data/lib/chef/node/immutable_collections.rb +1 -1
  85. data/lib/chef/policy_builder/policyfile.rb +1 -1
  86. data/lib/chef/powershell.rb +1 -1
  87. data/lib/chef/property.rb +2 -2
  88. data/lib/chef/provider.rb +3 -3
  89. data/lib/chef/provider/batch.rb +3 -10
  90. data/lib/chef/provider/cron.rb +2 -14
  91. data/lib/chef/provider/directory.rb +1 -1
  92. data/lib/chef/provider/execute.rb +2 -1
  93. data/lib/chef/provider/file.rb +1 -1
  94. data/lib/chef/provider/group/dscl.rb +2 -2
  95. data/lib/chef/provider/group/windows.rb +1 -1
  96. data/lib/chef/provider/ifconfig.rb +7 -7
  97. data/lib/chef/provider/launchd.rb +11 -9
  98. data/lib/chef/provider/mount/aix.rb +1 -1
  99. data/lib/chef/provider/mount/windows.rb +2 -2
  100. data/lib/chef/provider/noop.rb +1 -1
  101. data/lib/chef/provider/package/cab.rb +1 -1
  102. data/lib/chef/provider/package/chocolatey.rb +1 -1
  103. data/lib/chef/provider/package/dpkg.rb +1 -1
  104. data/lib/chef/provider/package/openbsd.rb +1 -1
  105. data/lib/chef/provider/package/portage.rb +3 -2
  106. data/lib/chef/provider/package/powershell.rb +6 -2
  107. data/lib/chef/provider/package/rubygems.rb +3 -3
  108. data/lib/chef/provider/package/snap.rb +96 -27
  109. data/lib/chef/provider/package/windows.rb +2 -2
  110. data/lib/chef/provider/package/windows/msi.rb +3 -3
  111. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  112. data/lib/chef/provider/package/yum.rb +1 -1
  113. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  114. data/lib/chef/provider/powershell_script.rb +11 -15
  115. data/lib/chef/provider/remote_directory.rb +2 -2
  116. data/lib/chef/provider/remote_file/http.rb +4 -1
  117. data/lib/chef/provider/script.rb +4 -75
  118. data/lib/chef/provider/service/arch.rb +2 -2
  119. data/lib/chef/provider/service/debian.rb +2 -2
  120. data/lib/chef/provider/service/macosx.rb +9 -0
  121. data/lib/chef/provider/service/openbsd.rb +4 -4
  122. data/lib/chef/provider/service/redhat.rb +1 -1
  123. data/lib/chef/provider/service/upstart.rb +1 -1
  124. data/lib/chef/provider/service/windows.rb +1 -1
  125. data/lib/chef/provider/subversion.rb +2 -2
  126. data/lib/chef/provider/user/aix.rb +1 -1
  127. data/lib/chef/provider/user/dscl.rb +6 -6
  128. data/lib/chef/provider/user/linux.rb +3 -3
  129. data/lib/chef/provider/user/mac.rb +15 -11
  130. data/lib/chef/provider/windows_script.rb +87 -25
  131. data/lib/chef/provider/windows_task.rb +4 -2
  132. data/lib/chef/provider/zypper_repository.rb +30 -10
  133. data/lib/chef/resource.rb +25 -14
  134. data/lib/chef/resource/alternatives.rb +1 -1
  135. data/lib/chef/resource/apt_package.rb +1 -1
  136. data/lib/chef/resource/archive_file.rb +28 -8
  137. data/lib/chef/resource/bash.rb +0 -1
  138. data/lib/chef/resource/batch.rb +4 -2
  139. data/lib/chef/resource/chef_client_scheduled_task.rb +13 -1
  140. data/lib/chef/resource/chef_gem.rb +57 -21
  141. data/lib/chef/resource/chef_handler.rb +2 -2
  142. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  143. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  144. data/lib/chef/resource/cron/cron.rb +46 -0
  145. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  146. data/lib/chef/resource/cron_access.rb +11 -3
  147. data/lib/chef/resource/csh.rb +0 -1
  148. data/lib/chef/resource/dmg_package.rb +2 -2
  149. data/lib/chef/resource/execute.rb +478 -8
  150. data/lib/chef/resource/file.rb +10 -8
  151. data/lib/chef/resource/freebsd_package.rb +1 -1
  152. data/lib/chef/resource/gem_package.rb +35 -2
  153. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  154. data/lib/chef/resource/homebrew_package.rb +30 -1
  155. data/lib/chef/resource/homebrew_update.rb +107 -0
  156. data/lib/chef/resource/hostname.rb +7 -20
  157. data/lib/chef/resource/kernel_module.rb +14 -1
  158. data/lib/chef/resource/launchd.rb +1 -1
  159. data/lib/chef/resource/locale.rb +3 -3
  160. data/lib/chef/resource/macos_userdefaults.rb +11 -6
  161. data/lib/chef/resource/mount.rb +1 -1
  162. data/lib/chef/resource/perl.rb +0 -1
  163. data/lib/chef/resource/plist.rb +23 -4
  164. data/lib/chef/resource/powershell_script.rb +4 -2
  165. data/lib/chef/resource/python.rb +0 -1
  166. data/lib/chef/resource/remote_file.rb +26 -10
  167. data/lib/chef/resource/ruby.rb +0 -1
  168. data/lib/chef/resource/scm/git.rb +1 -1
  169. data/lib/chef/resource/ssh_known_hosts_entry.rb +15 -0
  170. data/lib/chef/resource/sudo.rb +29 -2
  171. data/lib/chef/resource/swap_file.rb +17 -0
  172. data/lib/chef/resource/template.rb +1 -1
  173. data/lib/chef/resource/timezone.rb +15 -0
  174. data/lib/chef/resource/windows_ad_join.rb +30 -1
  175. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  176. data/lib/chef/resource/windows_auto_run.rb +11 -0
  177. data/lib/chef/resource/windows_certificate.rb +27 -1
  178. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  179. data/lib/chef/resource/windows_font.rb +3 -3
  180. data/lib/chef/resource/windows_package.rb +1 -1
  181. data/lib/chef/resource/windows_pagefile.rb +2 -2
  182. data/lib/chef/resource/windows_script.rb +2 -16
  183. data/lib/chef/resource/windows_security_policy.rb +47 -16
  184. data/lib/chef/resource/windows_shortcut.rb +1 -2
  185. data/lib/chef/resource/windows_task.rb +10 -10
  186. data/lib/chef/resource/windows_user_privilege.rb +70 -5
  187. data/lib/chef/resource/yum_repository.rb +9 -9
  188. data/lib/chef/resource_inspector.rb +4 -3
  189. data/lib/chef/resources.rb +4 -2
  190. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  191. data/lib/chef/search/query.rb +1 -1
  192. data/lib/chef/shell/ext.rb +1 -1
  193. data/lib/chef/util/diff.rb +2 -2
  194. data/lib/chef/util/windows/net_user.rb +1 -1
  195. data/lib/chef/util/windows/volume.rb +1 -1
  196. data/lib/chef/version.rb +1 -1
  197. data/lib/chef/win32/api.rb +2 -2
  198. data/lib/chef/win32/api/error.rb +3 -1
  199. data/lib/chef/win32/api/file.rb +1 -1
  200. data/lib/chef/win32/api/net.rb +1 -0
  201. data/lib/chef/win32/file.rb +1 -1
  202. data/lib/chef/win32/mutex.rb +1 -1
  203. data/lib/chef/win32/net.rb +1 -0
  204. data/lib/chef/win32/registry.rb +2 -2
  205. data/lib/chef/win32/security.rb +1 -1
  206. data/lib/chef/win32/security/sid.rb +4 -4
  207. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  208. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  209. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  210. data/spec/functional/knife/configure_spec.rb +1 -1
  211. data/spec/functional/resource/aix_service_spec.rb +10 -1
  212. data/spec/functional/resource/aixinit_service_spec.rb +1 -1
  213. data/spec/functional/resource/bash_spec.rb +3 -2
  214. data/spec/functional/resource/bff_spec.rb +1 -1
  215. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  216. data/spec/functional/resource/cron_spec.rb +20 -1
  217. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  218. data/spec/functional/resource/execute_spec.rb +1 -1
  219. data/spec/functional/resource/git_spec.rb +6 -6
  220. data/spec/functional/resource/group_spec.rb +9 -1
  221. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  222. data/spec/functional/resource/insserv_spec.rb +3 -2
  223. data/spec/functional/resource/launchd_spec.rb +232 -0
  224. data/spec/functional/resource/link_spec.rb +2 -5
  225. data/spec/functional/resource/mount_spec.rb +9 -1
  226. data/spec/functional/resource/msu_package_spec.rb +9 -3
  227. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  228. data/spec/functional/resource/remote_file_spec.rb +8 -8
  229. data/spec/functional/resource/rpm_spec.rb +1 -1
  230. data/spec/functional/resource/timezone_spec.rb +2 -0
  231. data/spec/functional/resource/windows_package_spec.rb +0 -1
  232. data/spec/functional/resource/windows_path_spec.rb +4 -0
  233. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  234. data/spec/functional/resource/windows_service_spec.rb +4 -0
  235. data/spec/functional/resource/windows_task_spec.rb +16 -15
  236. data/spec/functional/resource/windows_user_privilege_spec.rb +0 -1
  237. data/spec/functional/resource/yum_package_spec.rb +4 -1
  238. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  239. data/spec/functional/shell_spec.rb +0 -1
  240. data/spec/functional/win32/crypto_spec.rb +1 -1
  241. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  242. data/spec/integration/knife/cookbook_upload_spec.rb +1 -1
  243. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  245. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  246. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  247. data/spec/integration/recipes/recipe_dsl_spec.rb +4 -0
  248. data/spec/integration/recipes/resource_load_spec.rb +2 -2
  249. data/spec/support/chef_helpers.rb +1 -1
  250. data/spec/support/platform_helpers.rb +1 -1
  251. data/spec/support/platforms/win32/spec_service.rb +1 -1
  252. data/spec/support/shared/functional/execute_resource.rb +1 -1
  253. data/spec/support/shared/functional/securable_resource.rb +1 -2
  254. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  255. data/spec/support/shared/functional/windows_script.rb +3 -3
  256. data/spec/support/shared/unit/execute_resource.rb +1 -1
  257. data/spec/support/shared/unit/provider/file.rb +12 -8
  258. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  259. data/spec/unit/application/solo_spec.rb +4 -2
  260. data/spec/unit/application_spec.rb +7 -0
  261. data/spec/unit/chef_fs/config_spec.rb +2 -2
  262. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  263. data/spec/unit/client_spec.rb +4 -1
  264. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  265. data/spec/unit/data_bag_spec.rb +6 -3
  266. data/spec/unit/decorator_spec.rb +23 -23
  267. data/spec/unit/environment_spec.rb +5 -1
  268. data/spec/unit/guard_interpreter_spec.rb +1 -1
  269. data/spec/unit/http/api_versions_spec.rb +1 -1
  270. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  271. data/spec/unit/knife/bootstrap_spec.rb +3 -2
  272. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  273. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  274. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  275. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  276. data/spec/unit/lwrp_spec.rb +5 -2
  277. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  278. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  279. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  280. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  281. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  282. data/spec/unit/mixin/uris_spec.rb +1 -1
  283. data/spec/unit/mixin/user_context_spec.rb +1 -9
  284. data/spec/unit/node/attribute_spec.rb +1 -1
  285. data/spec/unit/property_spec.rb +1 -1
  286. data/spec/unit/provider/batch_spec.rb +130 -0
  287. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  288. data/spec/unit/provider/cron_spec.rb +9 -49
  289. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  290. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  291. data/spec/unit/provider/execute_spec.rb +1 -1
  292. data/spec/unit/provider/git_spec.rb +3 -3
  293. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  294. data/spec/unit/provider/launchd_spec.rb +0 -42
  295. data/spec/unit/provider/mdadm_spec.rb +1 -3
  296. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  297. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  298. data/spec/unit/provider/package/portage_spec.rb +2 -2
  299. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  300. data/spec/unit/provider/package/snap_spec.rb +1 -1
  301. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  302. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  303. data/spec/unit/provider/script_spec.rb +20 -110
  304. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  305. data/spec/unit/provider/windows_env_spec.rb +5 -4
  306. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  307. data/spec/unit/resource/archive_file_spec.rb +11 -2
  308. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  309. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  310. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  311. data/spec/unit/resource/cron_spec.rb +2 -2
  312. data/spec/unit/resource/file/verification_spec.rb +2 -1
  313. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  314. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  315. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  316. data/spec/unit/resource/timezone_spec.rb +1 -1
  317. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  318. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  319. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  320. data/spec/unit/resource/windows_task_spec.rb +1 -1
  321. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  322. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  323. data/spec/unit/resource_spec.rb +84 -1
  324. data/spec/unit/role_spec.rb +23 -21
  325. data/spec/unit/util/backup_spec.rb +1 -1
  326. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  327. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  328. data/spec/unit/util/selinux_spec.rb +2 -1
  329. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  330. data/spec/unit/win32/registry_spec.rb +1 -1
  331. metadata +37 -31
  332. data/lib/chef/resource/cron.rb +0 -157
  333. data/spec/functional/resource/base.rb +0 -28
@@ -240,20 +240,23 @@ describe Chef::DataBag do
240
240
 
241
241
  it "should raise an error if the configured data_bag_path is invalid" do
242
242
  file_dir_stub(@paths.first, false)
243
+ msg = "Data bag path '#{windows? ? "C:/var/chef" : "/var/chef"}/data_bags' not found. Please create this directory."
243
244
 
244
245
  expect do
245
246
  Chef::DataBag.load("foo")
246
- end.to raise_error Chef::Exceptions::InvalidDataBagPath, "Data bag path '/var/chef/data_bags' is invalid"
247
+ end.to raise_error Chef::Exceptions::InvalidDataBagPath, msg
247
248
  end
248
249
 
249
250
  end
250
251
 
251
252
  describe "data bag with string path" do
252
- it_should_behave_like "data bag in solo mode", "/var/chef/data_bags"
253
+ it_should_behave_like "data bag in solo mode", "#{windows? ? "C:/var/chef" : "/var/chef"}/data_bags"
253
254
  end
254
255
 
255
256
  describe "data bag with array path" do
256
- it_should_behave_like "data bag in solo mode", ["/var/chef/data_bags", "/var/chef/data_bags_2"]
257
+ it_should_behave_like "data bag in solo mode", %w{data_bags data_bags_2}.map { |data_bag|
258
+ "#{windows? ? "C:/var/chef" : "/var/chef"}/#{data_bag}"
259
+ }
257
260
  end
258
261
  end
259
262
 
@@ -18,37 +18,37 @@
18
18
 
19
19
  require "spec_helper"
20
20
 
21
- def impersonates_a(klass)
22
- it "#is_a?(#{klass}) is true" do
23
- expect(decorator.is_a?(klass)).to be true
24
- end
21
+ describe Chef::Decorator do
22
+ def self.impersonates_a(klass)
23
+ it "#is_a?(#{klass}) is true" do
24
+ expect(decorator.is_a?(klass)).to be true
25
+ end
25
26
 
26
- it "#is_a?(Chef::Decorator) is true" do
27
- expect(decorator.is_a?(Chef::Decorator)).to be true
28
- end
27
+ it "#is_a?(Chef::Decorator) is true" do
28
+ expect(decorator.is_a?(Chef::Decorator)).to be true
29
+ end
29
30
 
30
- it "#kind_of?(#{klass}) is true" do
31
- expect(decorator.is_a?(klass)).to be true
32
- end
31
+ it "#kind_of?(#{klass}) is true" do
32
+ expect(decorator.is_a?(klass)).to be true
33
+ end
33
34
 
34
- it "#kind_of?(Chef::Decorator) is true" do
35
- expect(decorator.is_a?(Chef::Decorator)).to be true
36
- end
35
+ it "#kind_of?(Chef::Decorator) is true" do
36
+ expect(decorator.is_a?(Chef::Decorator)).to be true
37
+ end
37
38
 
38
- it "#instance_of?(#{klass}) is false" do
39
- expect(decorator.instance_of?(klass)).to be false
40
- end
39
+ it "#instance_of?(#{klass}) is false" do
40
+ expect(decorator.instance_of?(klass)).to be false
41
+ end
41
42
 
42
- it "#instance_of?(Chef::Decorator) is true" do
43
- expect(decorator.instance_of?(Chef::Decorator)).to be true
44
- end
43
+ it "#instance_of?(Chef::Decorator) is true" do
44
+ expect(decorator.instance_of?(Chef::Decorator)).to be true
45
+ end
45
46
 
46
- it "#class is Chef::Decorator" do
47
- expect(decorator.class).to eql(Chef::Decorator)
47
+ it "#class is Chef::Decorator" do
48
+ expect(decorator.class).to eql(Chef::Decorator)
49
+ end
48
50
  end
49
- end
50
51
 
51
- describe Chef::Decorator do
52
52
  let(:obj) {}
53
53
  let(:decorator) { Chef::Decorator.new(obj) }
54
54
 
@@ -454,7 +454,11 @@ describe Chef::Environment do
454
454
 
455
455
  expect do
456
456
  Chef::Environment.load("foo")
457
- end.to raise_error Chef::Exceptions::InvalidEnvironmentPath, "Environment path '/var/chef/environments' is invalid"
457
+ end.to raise_error(
458
+ an_instance_of(Chef::Exceptions::InvalidEnvironmentPath).and having_attributes(
459
+ message: "Environment path '#{windows? ? "C:/var/chef/environments" : "/var/chef/environments"}' is invalid"
460
+ )
461
+ )
458
462
  end
459
463
 
460
464
  it "should raise an error if the file does not exist" do
@@ -20,7 +20,7 @@ require "spec_helper"
20
20
 
21
21
  describe Chef::GuardInterpreter do
22
22
  describe "#for_resource" do
23
- let (:resource) { Chef::Resource.new("foo") }
23
+ let(:resource) { Chef::Resource.new("foo") }
24
24
 
25
25
  it "returns a DefaultGuardInterpreter if the resource has guard_interpreter set to :default" do
26
26
  resource.guard_interpreter :default
@@ -72,7 +72,7 @@ describe Chef::HTTP::APIVersions do
72
72
  end
73
73
 
74
74
  context "with an unacceptable api version" do
75
- let (:return_value) { "406" }
75
+ let(:return_value) { "406" }
76
76
  it "resets the list of supported versions" do
77
77
  Chef::ServerAPIVersions.instance.set_versions({ "min_version" => 1, "max_version" => 3 })
78
78
  run_api_version_handler
@@ -166,4 +166,24 @@ describe "HTTP SSL Policy" do
166
166
  end
167
167
 
168
168
  end
169
+
170
+ describe Chef::HTTP::VerifyPeerSSLPolicy do
171
+
172
+ let(:ssl_policy) { Chef::HTTP::VerifyPeerSSLPolicy.new(unconfigured_http_client) }
173
+
174
+ it "sets the OpenSSL verify mode to verify_peer" do
175
+ expect(http_client.verify_mode).to eq(OpenSSL::SSL::VERIFY_PEER)
176
+ end
177
+
178
+ end
179
+
180
+ describe Chef::HTTP::VerifyNoneSSLPolicy do
181
+
182
+ let(:ssl_policy) { Chef::HTTP::VerifyNoneSSLPolicy.new(unconfigured_http_client) }
183
+
184
+ it "sets the OpenSSL verify mode to verify_peer" do
185
+ expect(http_client.verify_mode).to eq(OpenSSL::SSL::VERIFY_NONE)
186
+ end
187
+
188
+ end
169
189
  end
@@ -1729,8 +1729,8 @@ describe Chef::Knife::Bootstrap do
1729
1729
  allow(vault_handler_mock).to receive(:doing_chef_vault?).and_return false
1730
1730
  end
1731
1731
 
1732
- it "shows a message" do
1733
- expect(knife.ui).to receive(:info)
1732
+ it "shows a warning message" do
1733
+ expect(knife.ui).to receive(:warn).twice
1734
1734
  knife.register_client
1735
1735
  end
1736
1736
  end
@@ -1927,6 +1927,7 @@ describe Chef::Knife::Bootstrap do
1927
1927
  Chef::Config[:knife][:test_key_c] = "c from Chef::Config"
1928
1928
  Chef::Config[:knife][:alt_test_key_c] = "alt c from Chef::Config"
1929
1929
  knife.merge_configs
1930
+ Chef::Config[:treat_deprecation_warnings_as_errors] = false
1930
1931
  end
1931
1932
 
1932
1933
  it "returns the Chef::Config value from the cli when the CLI key is set" do
@@ -83,7 +83,7 @@ describe Chef::Knife::CookbookDownload do
83
83
  }
84
84
  end
85
85
 
86
- let (:cookbook) do
86
+ let(:cookbook) do
87
87
  cb = Chef::CookbookVersion.new("foobar")
88
88
  cb.version = "1.0.0"
89
89
  cb.manifest = manifest_data
@@ -91,7 +91,7 @@ describe Chef::Knife::CookbookDownload do
91
91
  end
92
92
 
93
93
  describe "and no version" do
94
- let (:manifest_data) { { all_files: [] } }
94
+ let(:manifest_data) { { all_files: [] } }
95
95
  it "should determine which version to download" do
96
96
  expect(@knife).to receive(:determine_version).and_return("1.0.0")
97
97
  expect(File).to receive(:exists?).with("/var/tmp/chef/foobar-1.0.0").and_return(false)
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- # rename to cookbook not coookbook
20
19
  require "spec_helper"
21
20
 
22
21
  describe Chef::Knife::CookbookShow do
@@ -28,24 +27,24 @@ describe Chef::Knife::CookbookShow do
28
27
  allow(Chef::CookbookVersion).to receive(:load).and_return(cb)
29
28
  end
30
29
 
31
- let (:knife) do
30
+ let(:knife) do
32
31
  knife = Chef::Knife::CookbookShow.new
33
32
  knife.config = {}
34
33
  knife.name_args = [ "cookbook_name" ]
35
34
  knife
36
35
  end
37
36
 
38
- let (:cb) do
37
+ let(:cb) do
39
38
  cb = Chef::CookbookVersion.new("cookbook_name")
40
39
  cb.manifest = manifest
41
40
  cb
42
41
  end
43
42
 
44
- let (:rest) { double(Chef::ServerAPI) }
43
+ let(:rest) { double(Chef::ServerAPI) }
45
44
 
46
- let (:content) { "Example recipe text" }
45
+ let(:content) { "Example recipe text" }
47
46
 
48
- let (:manifest) do
47
+ let(:manifest) do
49
48
  {
50
49
  "all_files" => [
51
50
  {
@@ -69,7 +68,7 @@ describe Chef::Knife::CookbookShow do
69
68
  end
70
69
 
71
70
  describe "with 1 argument: versions" do
72
- let (:response) do
71
+ let(:response) do
73
72
  {
74
73
  "cookbook_name" => {
75
74
  "url" => "http://url/cookbooks/cookbook_name",
@@ -181,6 +181,12 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
181
181
  end
182
182
  end
183
183
 
184
+ describe "#start_chef" do
185
+ it "returns the expected string" do
186
+ expect(bootstrap_context.start_chef).to match(%r{SET \"PATH=%SystemRoot%\\system32;%SystemRoot%;%SystemRoot%\\System32\\Wbem;%SYSTEMROOT%\\System32\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\/opscode\/chef\\bin;C:\/opscode\/chef\\embedded\\bin\;%PATH%\"\n})
187
+ end
188
+ end
189
+
184
190
  describe "msi_url" do
185
191
  context "when msi_url config option is not set" do
186
192
  let(:config) { { channel: "stable" } }
@@ -211,7 +217,7 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
211
217
  let(:custom_url) { "file://something" }
212
218
  let(:config) { { msi_url: custom_url, install: true } }
213
219
 
214
- it "returns the overriden url" do
220
+ it "returns the overridden url" do
215
221
  expect(bootstrap_context.msi_url).to eq(custom_url)
216
222
  end
217
223
 
@@ -95,7 +95,7 @@ describe Chef::Knife::DataBagEdit do
95
95
  let(:is_encrypted?) { true }
96
96
  let(:db) { Chef::DataBagItem.from_hash(enc_raw_hash) }
97
97
  # If the data bag is encrypted, it gets passed to `edit` as a hash. Otherwise, it gets passed as a DataBag
98
- let (:data_to_edit) { raw_hash }
98
+ let(:data_to_edit) { raw_hash }
99
99
 
100
100
  before(:each) do
101
101
  expect(knife).to receive(:encryption_secret_provided_ignore_encrypt_flag?).and_return(true)
@@ -653,14 +653,17 @@ describe "LWRP" do
653
653
  end
654
654
  end
655
655
 
656
- let(:recipe) do
656
+ let(:run_context) do
657
657
  cookbook_repo = File.expand_path(File.join(File.dirname(__FILE__), "..", "data", "cookbooks"))
658
658
  cookbook_loader = Chef::CookbookLoader.new(cookbook_repo)
659
659
  cookbook_loader.load_cookbooks
660
660
  cookbook_collection = Chef::CookbookCollection.new(cookbook_loader)
661
661
  node = Chef::Node.new
662
662
  events = Chef::EventDispatch::Dispatcher.new
663
- run_context = Chef::RunContext.new(node, cookbook_collection, events)
663
+ Chef::RunContext.new(node, cookbook_collection, events)
664
+ end
665
+
666
+ let(:recipe) do
664
667
  Chef::Recipe.new("hjk", "test", run_context)
665
668
  end
666
669
 
@@ -488,7 +488,7 @@ describe Chef::Mixin::OpenSSLHelper do
488
488
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
489
489
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
490
490
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
491
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
491
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
492
492
 
493
493
  @info_with_issuer = { "validity" => 365, "issuer" => @ca_cert }
494
494
  @info_without_issuer = { "validity" => 365 }
@@ -614,7 +614,7 @@ describe Chef::Mixin::OpenSSLHelper do
614
614
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
615
615
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
616
616
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
617
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
617
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
618
618
 
619
619
  @info = { "validity" => 8, "issuer" => @ca_cert }
620
620
  end
@@ -684,7 +684,7 @@ describe Chef::Mixin::OpenSSLHelper do
684
684
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
685
685
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
686
686
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
687
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
687
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
688
688
 
689
689
  @info = { "validity" => 8, "issuer" => @ca_cert }
690
690
 
@@ -765,7 +765,7 @@ describe Chef::Mixin::OpenSSLHelper do
765
765
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
766
766
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
767
767
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
768
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
768
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
769
769
 
770
770
  @info = { "validity" => 8, "issuer" => @ca_cert }
771
771
 
@@ -30,8 +30,7 @@ describe Chef::Mixin::PowershellOut, :windows_only do
30
30
  it "runs a command and returns the shell_out object" do
31
31
  ret = double("Mixlib::ShellOut")
32
32
  expect(object).to receive(:shell_out).with(
33
- "powershell.exe #{flags} -Command \"Get-Process\"",
34
- {}
33
+ "powershell.exe #{flags} -Command \"Get-Process\""
35
34
  ).and_return(ret)
36
35
  expect(object.powershell_out("Get-Process")).to eql(ret)
37
36
  end
@@ -62,8 +61,7 @@ describe Chef::Mixin::PowershellOut, :windows_only do
62
61
  it "runs a command and returns the shell_out object" do
63
62
  mixlib_shellout = double("Mixlib::ShellOut")
64
63
  expect(object).to receive(:shell_out).with(
65
- "powershell.exe #{flags} -Command \"Get-Process\"",
66
- {}
64
+ "powershell.exe #{flags} -Command \"Get-Process\""
67
65
  ).and_return(mixlib_shellout)
68
66
  expect(mixlib_shellout).to receive(:error!)
69
67
  expect(object.powershell_out!("Get-Process")).to eql(mixlib_shellout)
@@ -25,7 +25,7 @@ class Chef::PSTypeTester
25
25
  end
26
26
 
27
27
  describe Chef::Mixin::PowershellTypeCoercions do
28
- let (:test_class) { Chef::PSTypeTester.new }
28
+ let(:test_class) { Chef::PSTypeTester.new }
29
29
 
30
30
  describe "#translate_type" do
31
31
  it "single quotes a string" do
@@ -31,9 +31,9 @@ class ChildWithoutDirective < SubclassDirectiveParent
31
31
  end
32
32
 
33
33
  describe Chef::Mixin::Uris do
34
- let (:child) { SubclassDirectiveChild.new }
34
+ let(:child) { SubclassDirectiveChild.new }
35
35
 
36
- let (:other_child) { ChildWithoutDirective.new }
36
+ let(:other_child) { ChildWithoutDirective.new }
37
37
 
38
38
  it "the child instance has the directive set" do
39
39
  expect(child.behave_differently?).to be true
@@ -27,8 +27,8 @@ class Chef::UnformatterTest
27
27
  end
28
28
 
29
29
  describe Chef::Mixin::Unformatter do
30
- let (:unformatter) { Chef::UnformatterTest.new }
31
- let (:message) { "Test Message" }
30
+ let(:unformatter) { Chef::UnformatterTest.new }
31
+ let(:message) { "Test Message" }
32
32
 
33
33
  describe "#write" do
34
34
  context "with a timestamp" do
@@ -24,7 +24,7 @@ class Chef::UrisTest
24
24
  end
25
25
 
26
26
  describe Chef::Mixin::Uris do
27
- let (:uris) { Chef::UrisTest.new }
27
+ let(:uris) { Chef::UrisTest.new }
28
28
 
29
29
  describe "#uri_scheme?" do
30
30
  it "matches 'scheme://foo.com'" do
@@ -77,17 +77,9 @@ describe "a class that mixes in user_context" do
77
77
  end
78
78
 
79
79
  context "when the block raises an exception" do
80
- class UserContextTestException < RuntimeError
81
- end
82
- let(:block_parameter) { Proc.new { raise UserContextTextException } }
83
-
84
- it "raises the exception raised by the block" do
85
- expect { instance_with_user_context.with_context("kamilah", nil, "chef4life", &block_parameter) }.not_to raise_error(UserContextTestException)
86
- end
87
-
88
80
  it "closes the logon session so resources are not leaked" do
89
81
  expect(logon_session).to receive(:close)
90
- expect { instance_with_user_context.with_context("kamilah", nil, "chef4life", &block_parameter) }.not_to raise_error(UserContextTestException)
82
+ expect { instance_with_user_context.with_context("kamilah", nil, "chef4life") { 1 / 0 } }.to raise_error(ZeroDivisionError)
91
83
  end
92
84
  end
93
85
  end
@@ -382,7 +382,7 @@ describe Chef::Node::Attribute do
382
382
  expect(@attributes["command"]["ps"]).to eq("ps -ef")
383
383
  end
384
384
 
385
- it "should return default data if it is not overriden or in attribute data" do
385
+ it "should return default data if it is not overridden or in attribute data" do
386
386
  expect(@attributes["music"]["mastodon"]).to eq("rocks")
387
387
  end
388
388
 
@@ -121,7 +121,7 @@ describe "Chef::Resource.property" do
121
121
 
122
122
  context "deprecated properties" do
123
123
  it "does not create a deprecation warning on definition" do
124
- expect { resource_class.class_eval { property :x, String, deprecated: 10 } }.not_to raise_error Chef::Exceptions::DeprecatedFeatureError
124
+ expect { resource_class.class_eval { property :x, String, deprecated: 10 } }.not_to raise_error
125
125
  end
126
126
 
127
127
  with_property ":x, deprecated: 'a deprecated property'" do
@@ -0,0 +1,130 @@
1
+ #
2
+ # Author:: Adam Jacob (adam@chef.io)
3
+ # Copyright:: Copyright 2009-2016, Opscode
4
+ # License:: Apache License, Version 2.0
5
+ #
6
+ # Licensed under the Apache License, Version 2.0 (the "License");
7
+ # you may not use this file except in compliance with the License.
8
+ # You may obtain a copy of the License at
9
+ #
10
+ # http://www.apache.org/licenses/LICENSE-2.0
11
+ #
12
+ # Unless required by applicable law or agreed to in writing, software
13
+ # distributed under the License is distributed on an "AS IS" BASIS,
14
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ # See the License for the specific language governing permissions and
16
+ # limitations under the License.
17
+ #
18
+
19
+ require "spec_helper"
20
+
21
+ describe Chef::Provider::Batch do
22
+ let(:node) do
23
+ node = Chef::Node.new
24
+ node.default["kernel"] = {}
25
+ node.default["kernel"][:machine] = :x86_64.to_s
26
+ node
27
+ end
28
+
29
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
30
+
31
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
32
+
33
+ let(:new_resource) do
34
+ new_resource = Chef::Resource::Batch.new("cmd.exe and conquer")
35
+ new_resource.code %q{echo "hello"}
36
+ new_resource
37
+ end
38
+
39
+ let(:provider) { Chef::Provider::Batch.new(new_resource, run_context) }
40
+
41
+ context "#grant_alternate_user_read_access" do
42
+ before do
43
+ allow(ChefUtils).to receive(:windows?).and_return(true)
44
+ stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_READ", 1)
45
+ stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE", 4)
46
+ stub_const("Chef::ReservedNames::Win32::Security", Class.new)
47
+ stub_const("Chef::ReservedNames::Win32::Security::SecurableObject", Class.new)
48
+ stub_const("Chef::ReservedNames::Win32::Security::SID", Class.new)
49
+ stub_const("Chef::ReservedNames::Win32::Security::ACE", Class.new)
50
+ stub_const("Chef::ReservedNames::Win32::Security::ACL", Class.new)
51
+
52
+ provider.singleton_class.send(:public, :grant_alternate_user_read_access)
53
+ end
54
+
55
+ context "when an alternate user is not specified" do
56
+ it "does not attempt to set the script file's security descriptor" do
57
+ expect(provider).to receive(:grant_alternate_user_read_access)
58
+ expect(Chef::ReservedNames::Win32::Security::SecurableObject).not_to receive(:new)
59
+ provider.grant_alternate_user_read_access("a fake path")
60
+ end
61
+ end
62
+
63
+ context "when an alternate user is specified" do
64
+ let(:security_descriptor) { instance_double("Chef::ReservedNames::Win32::Security::SecurityDescriptor", dacl: []) }
65
+ let(:securable_object) { instance_double("Chef::ReservedNames::Win32::Security::SecurableObject", :security_descriptor => security_descriptor, :dacl= => nil) }
66
+
67
+ it "sets the script file's security descriptor" do
68
+ new_resource.user("toor")
69
+ expect(Chef::ReservedNames::Win32::Security::SecurableObject).to receive(:new).and_return(securable_object)
70
+ expect(Chef::ReservedNames::Win32::Security::SID).to receive(:from_account).and_return(nil)
71
+ expect(Chef::ReservedNames::Win32::Security::ACE).to receive(:access_allowed).and_return(nil)
72
+ expect(Chef::ReservedNames::Win32::Security::ACL).to receive(:create).and_return(nil)
73
+ expect(securable_object).to receive(:dacl=)
74
+ provider.grant_alternate_user_read_access("a fake path")
75
+ end
76
+ end
77
+ end
78
+
79
+ describe "#with_temp_script_file" do
80
+ before do
81
+ provider.singleton_class.send(:public, :with_temp_script_file)
82
+ provider.singleton_class.send(:public, :script_file_path)
83
+ end
84
+
85
+ it "should put the contents of the script in the temp file" do
86
+ temp_file_contents = nil
87
+
88
+ provider.with_temp_script_file do
89
+ temp_file_contents = File.read(provider.script_file_path)
90
+ end
91
+
92
+ expect(temp_file_contents.strip).to eq(%q{echo "hello"})
93
+ end
94
+ end
95
+
96
+ describe "#command" do
97
+ let(:basepath) { "C:\\Windows\\system32\\" }
98
+ let(:interpreter) { File.join(basepath, "cmd.exe") }
99
+
100
+ before do
101
+ allow(provider).to receive(:basepath).and_return(basepath)
102
+ provider.singleton_class.send(:public, :with_temp_script_file)
103
+ provider.singleton_class.send(:public, :script_file_path)
104
+ end
105
+
106
+ it 'should set the command to "interpreter" "tempfile"' do
107
+ command = nil
108
+ script_file_path = nil
109
+ provider.with_temp_script_file do
110
+ command = provider.command
111
+ script_file_path = provider.script_file_path
112
+ end
113
+
114
+ expect(command).to eq(%Q{"#{interpreter}" /c "#{script_file_path}"})
115
+ end
116
+
117
+ it "should set the command to 'interpreter flags tempfile'" do
118
+ new_resource.flags "/f"
119
+
120
+ command = nil
121
+ script_file_path = nil
122
+ provider.with_temp_script_file do
123
+ command = provider.command
124
+ script_file_path = provider.script_file_path
125
+ end
126
+
127
+ expect(command).to eq(%Q{"#{interpreter}" /f /c "#{script_file_path}"})
128
+ end
129
+ end
130
+ end