chef 16.1.0-universal-mingw32 → 16.3.38-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 (424) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +6 -7
  3. data/README.md +3 -3
  4. data/Rakefile +4 -3
  5. data/chef-universal-mingw32.gemspec +2 -2
  6. data/chef.gemspec +7 -6
  7. data/distro/powershell/chef/chef.psm1 +3 -3
  8. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  9. data/lib/chef/application.rb +12 -0
  10. data/lib/chef/application/apply.rb +2 -1
  11. data/lib/chef/application/base.rb +1 -1
  12. data/lib/chef/application/client.rb +1 -1
  13. data/lib/chef/application/windows_service_manager.rb +1 -1
  14. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  15. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  16. data/lib/chef/chef_fs/data_handler/data_bag_item_data_handler.rb +1 -1
  17. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  19. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  20. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  23. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +2 -2
  24. data/lib/chef/chef_fs/path_utils.rb +4 -4
  25. data/lib/chef/client.rb +3 -3
  26. data/lib/chef/cookbook/chefignore.rb +1 -1
  27. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  28. data/lib/chef/cookbook/metadata.rb +2 -2
  29. data/lib/chef/cookbook/remote_file_vendor.rb +1 -3
  30. data/lib/chef/cookbook/syntax_check.rb +1 -2
  31. data/lib/chef/cookbook_loader.rb +16 -30
  32. data/lib/chef/cookbook_manifest.rb +1 -1
  33. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  34. data/lib/chef/cookbook_version.rb +4 -4
  35. data/lib/chef/data_bag.rb +5 -6
  36. data/lib/chef/data_collector.rb +1 -1
  37. data/lib/chef/data_collector/error_handlers.rb +1 -1
  38. data/lib/chef/decorator/lazy_array.rb +2 -2
  39. data/lib/chef/deprecated.rb +12 -0
  40. data/lib/chef/digester.rb +5 -4
  41. data/lib/chef/dsl/declare_resource.rb +1 -1
  42. data/lib/chef/dsl/platform_introspection.rb +2 -0
  43. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  44. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  45. data/lib/chef/environment.rb +1 -2
  46. data/lib/chef/exceptions.rb +3 -0
  47. data/lib/chef/file_access_control.rb +1 -1
  48. data/lib/chef/file_access_control/windows.rb +2 -2
  49. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  50. data/lib/chef/formatters/base.rb +1 -1
  51. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +1 -1
  52. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +3 -3
  53. data/lib/chef/http.rb +19 -4
  54. data/lib/chef/http/authenticator.rb +1 -1
  55. data/lib/chef/http/decompressor.rb +1 -1
  56. data/lib/chef/http/http_request.rb +1 -1
  57. data/lib/chef/http/json_output.rb +1 -1
  58. data/lib/chef/http/ssl_policies.rb +18 -0
  59. data/lib/chef/json_compat.rb +1 -1
  60. data/lib/chef/key.rb +1 -1
  61. data/lib/chef/knife.rb +6 -6
  62. data/lib/chef/knife/bootstrap.rb +24 -24
  63. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +1 -1
  64. data/lib/chef/knife/bootstrap/client_builder.rb +1 -1
  65. data/lib/chef/knife/bootstrap/templates/chef-full.erb +9 -9
  66. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +3 -1
  67. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  68. data/lib/chef/knife/client_bulk_delete.rb +1 -1
  69. data/lib/chef/knife/config_get.rb +2 -1
  70. data/lib/chef/knife/config_list_profiles.rb +4 -1
  71. data/lib/chef/knife/config_use_profile.rb +15 -5
  72. data/lib/chef/knife/configure.rb +1 -1
  73. data/lib/chef/knife/cookbook_delete.rb +1 -1
  74. data/lib/chef/knife/cookbook_upload.rb +6 -14
  75. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  76. data/lib/chef/knife/core/cookbook_scm_repo.rb +1 -1
  77. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  78. data/lib/chef/knife/core/hashed_command_loader.rb +2 -1
  79. data/lib/chef/knife/core/node_presenter.rb +1 -1
  80. data/lib/chef/knife/core/status_presenter.rb +1 -1
  81. data/lib/chef/knife/core/subcommand_loader.rb +21 -2
  82. data/lib/chef/knife/core/ui.rb +8 -2
  83. data/lib/chef/knife/core/windows_bootstrap_context.rb +18 -4
  84. data/lib/chef/knife/data_bag_create.rb +1 -1
  85. data/lib/chef/knife/key_create_base.rb +1 -1
  86. data/lib/chef/knife/key_edit_base.rb +1 -1
  87. data/lib/chef/knife/node_bulk_delete.rb +1 -1
  88. data/lib/chef/knife/node_run_list_remove.rb +1 -1
  89. data/lib/chef/knife/rehash.rb +3 -21
  90. data/lib/chef/knife/role_bulk_delete.rb +1 -1
  91. data/lib/chef/knife/ssh.rb +7 -3
  92. data/lib/chef/knife/supermarket_share.rb +1 -1
  93. data/lib/chef/knife/supermarket_unshare.rb +1 -1
  94. data/lib/chef/log.rb +8 -3
  95. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  96. data/lib/chef/mixin/checksum.rb +0 -1
  97. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  98. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  99. data/lib/chef/mixin/openssl_helper.rb +31 -9
  100. data/lib/chef/mixin/path_sanity.rb +5 -4
  101. data/lib/chef/mixin/properties.rb +2 -2
  102. data/lib/chef/mixin/securable.rb +2 -2
  103. data/lib/chef/mixin/shell_out.rb +4 -188
  104. data/lib/chef/mixin/template.rb +1 -0
  105. data/lib/chef/mixin/which.rb +6 -3
  106. data/lib/chef/mixins.rb +1 -0
  107. data/lib/chef/node.rb +36 -12
  108. data/lib/chef/node/attribute.rb +2 -2
  109. data/lib/chef/node/immutable_collections.rb +1 -1
  110. data/lib/chef/node_map.rb +21 -18
  111. data/lib/chef/platform/service_helpers.rb +31 -28
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +1 -1
  114. data/lib/chef/property.rb +2 -2
  115. data/lib/chef/provider.rb +3 -3
  116. data/lib/chef/provider/batch.rb +3 -10
  117. data/lib/chef/provider/cron.rb +2 -14
  118. data/lib/chef/provider/directory.rb +1 -1
  119. data/lib/chef/provider/execute.rb +2 -1
  120. data/lib/chef/provider/file.rb +1 -1
  121. data/lib/chef/provider/git.rb +12 -4
  122. data/lib/chef/provider/group/dscl.rb +2 -2
  123. data/lib/chef/provider/group/windows.rb +1 -1
  124. data/lib/chef/provider/ifconfig.rb +7 -7
  125. data/lib/chef/provider/mount/aix.rb +1 -1
  126. data/lib/chef/provider/mount/solaris.rb +0 -1
  127. data/lib/chef/provider/mount/windows.rb +2 -2
  128. data/lib/chef/provider/noop.rb +1 -1
  129. data/lib/chef/provider/package/chocolatey.rb +1 -1
  130. data/lib/chef/provider/package/dpkg.rb +1 -1
  131. data/lib/chef/provider/package/openbsd.rb +1 -1
  132. data/lib/chef/provider/package/portage.rb +3 -2
  133. data/lib/chef/provider/package/powershell.rb +6 -2
  134. data/lib/chef/provider/package/rubygems.rb +3 -3
  135. data/lib/chef/provider/package/snap.rb +97 -29
  136. data/lib/chef/provider/package/windows.rb +11 -6
  137. data/lib/chef/provider/package/windows/msi.rb +3 -3
  138. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +1 -1
  139. data/lib/chef/provider/package/yum.rb +1 -1
  140. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  141. data/lib/chef/provider/package/zypper.rb +0 -1
  142. data/lib/chef/provider/powershell_script.rb +10 -14
  143. data/lib/chef/provider/remote_directory.rb +2 -2
  144. data/lib/chef/provider/remote_file/http.rb +4 -1
  145. data/lib/chef/provider/script.rb +4 -75
  146. data/lib/chef/provider/service.rb +2 -2
  147. data/lib/chef/provider/service/arch.rb +2 -2
  148. data/lib/chef/provider/service/debian.rb +2 -2
  149. data/lib/chef/provider/service/openbsd.rb +4 -4
  150. data/lib/chef/provider/service/redhat.rb +1 -1
  151. data/lib/chef/provider/service/upstart.rb +1 -1
  152. data/lib/chef/provider/service/windows.rb +1 -1
  153. data/lib/chef/provider/subversion.rb +2 -2
  154. data/lib/chef/provider/user/aix.rb +1 -1
  155. data/lib/chef/provider/user/dscl.rb +6 -6
  156. data/lib/chef/provider/user/linux.rb +3 -3
  157. data/lib/chef/provider/user/mac.rb +15 -11
  158. data/lib/chef/provider/windows_script.rb +87 -25
  159. data/lib/chef/provider/windows_task.rb +4 -2
  160. data/lib/chef/provider/yum_repository.rb +1 -1
  161. data/lib/chef/provider/zypper_repository.rb +31 -11
  162. data/lib/chef/resource.rb +27 -14
  163. data/lib/chef/resource/alternatives.rb +1 -1
  164. data/lib/chef/resource/apt_package.rb +1 -1
  165. data/lib/chef/resource/archive_file.rb +28 -8
  166. data/lib/chef/resource/bash.rb +0 -1
  167. data/lib/chef/resource/batch.rb +4 -2
  168. data/lib/chef/resource/build_essential.rb +2 -2
  169. data/lib/chef/resource/chef_client_scheduled_task.rb +14 -2
  170. data/lib/chef/resource/chef_gem.rb +57 -21
  171. data/lib/chef/resource/chef_handler.rb +2 -2
  172. data/lib/chef/resource/chef_vault_secret.rb +1 -1
  173. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  174. data/lib/chef/resource/cron/_cron_shared.rb +98 -0
  175. data/lib/chef/resource/cron/cron.rb +46 -0
  176. data/lib/chef/resource/{cron_d.rb → cron/cron_d.rb} +7 -87
  177. data/lib/chef/resource/cron_access.rb +13 -5
  178. data/lib/chef/resource/csh.rb +0 -1
  179. data/lib/chef/resource/dmg_package.rb +2 -2
  180. data/lib/chef/resource/execute.rb +480 -10
  181. data/lib/chef/resource/file.rb +10 -8
  182. data/lib/chef/resource/freebsd_package.rb +1 -1
  183. data/lib/chef/resource/gem_package.rb +35 -2
  184. data/lib/chef/resource/helpers/cron_validations.rb +6 -3
  185. data/lib/chef/resource/homebrew_package.rb +30 -1
  186. data/lib/chef/resource/homebrew_update.rb +107 -0
  187. data/lib/chef/resource/hostname.rb +7 -20
  188. data/lib/chef/resource/kernel_module.rb +14 -1
  189. data/lib/chef/resource/launchd.rb +1 -1
  190. data/lib/chef/resource/locale.rb +3 -3
  191. data/lib/chef/resource/lwrp_base.rb +1 -0
  192. data/lib/chef/resource/macos_userdefaults.rb +176 -56
  193. data/lib/chef/resource/mount.rb +1 -1
  194. data/lib/chef/resource/openssl_x509_certificate.rb +11 -14
  195. data/lib/chef/resource/openssl_x509_crl.rb +1 -2
  196. data/lib/chef/resource/perl.rb +0 -1
  197. data/lib/chef/resource/plist.rb +23 -4
  198. data/lib/chef/resource/powershell_script.rb +4 -2
  199. data/lib/chef/resource/python.rb +0 -1
  200. data/lib/chef/resource/remote_file.rb +26 -10
  201. data/lib/chef/resource/ruby.rb +0 -1
  202. data/lib/chef/resource/scm/git.rb +1 -1
  203. data/lib/chef/resource/service.rb +2 -2
  204. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  205. data/lib/chef/resource/sudo.rb +30 -3
  206. data/lib/chef/resource/swap_file.rb +17 -0
  207. data/lib/chef/resource/template.rb +1 -1
  208. data/lib/chef/resource/timezone.rb +15 -0
  209. data/lib/chef/resource/user_ulimit.rb +1 -1
  210. data/lib/chef/resource/windows_ad_join.rb +30 -1
  211. data/lib/chef/resource/windows_audit_policy.rb +227 -0
  212. data/lib/chef/resource/windows_auto_run.rb +11 -0
  213. data/lib/chef/resource/windows_certificate.rb +27 -1
  214. data/lib/chef/resource/windows_dfs_server.rb +1 -1
  215. data/lib/chef/resource/windows_dns_record.rb +17 -0
  216. data/lib/chef/resource/windows_firewall_profile.rb +197 -0
  217. data/lib/chef/resource/windows_font.rb +3 -3
  218. data/lib/chef/resource/windows_package.rb +1 -1
  219. data/lib/chef/resource/windows_pagefile.rb +2 -2
  220. data/lib/chef/resource/windows_script.rb +2 -16
  221. data/lib/chef/resource/windows_security_policy.rb +67 -36
  222. data/lib/chef/resource/windows_shortcut.rb +1 -2
  223. data/lib/chef/resource/windows_task.rb +10 -10
  224. data/lib/chef/resource/windows_user_privilege.rb +33 -10
  225. data/lib/chef/resource/yum_repository.rb +9 -9
  226. data/lib/chef/resource_inspector.rb +11 -4
  227. data/lib/chef/resources.rb +5 -2
  228. data/lib/chef/role.rb +1 -2
  229. data/lib/chef/run_context/cookbook_compiler.rb +1 -1
  230. data/lib/chef/search/query.rb +1 -1
  231. data/lib/chef/shell/ext.rb +1 -1
  232. data/lib/chef/shell/shell_session.rb +2 -0
  233. data/lib/chef/util/diff.rb +2 -3
  234. data/lib/chef/util/windows/net_user.rb +1 -1
  235. data/lib/chef/util/windows/volume.rb +1 -1
  236. data/lib/chef/version.rb +2 -2
  237. data/lib/chef/win32/api.rb +2 -2
  238. data/lib/chef/win32/api/error.rb +3 -1
  239. data/lib/chef/win32/api/file.rb +1 -1
  240. data/lib/chef/win32/api/net.rb +1 -0
  241. data/lib/chef/win32/file.rb +1 -1
  242. data/lib/chef/win32/mutex.rb +1 -1
  243. data/lib/chef/win32/net.rb +1 -0
  244. data/lib/chef/win32/registry.rb +3 -4
  245. data/lib/chef/win32/security.rb +1 -1
  246. data/lib/chef/win32/security/sid.rb +4 -4
  247. data/spec/data/lwrp/providers/buck_passer.rb +1 -1
  248. data/spec/data/lwrp/providers/buck_passer_2.rb +1 -1
  249. data/spec/data/lwrp/providers/embedded_resource_accesses_providers_scope.rb +1 -1
  250. data/spec/functional/knife/configure_spec.rb +1 -1
  251. data/spec/functional/knife/ssh_spec.rb +5 -16
  252. data/spec/functional/resource/aix_service_spec.rb +9 -2
  253. data/spec/functional/resource/aixinit_service_spec.rb +1 -2
  254. data/spec/functional/resource/apt_package_spec.rb +0 -1
  255. data/spec/functional/resource/bash_spec.rb +3 -2
  256. data/spec/functional/resource/bff_spec.rb +1 -1
  257. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  258. data/spec/functional/resource/cron_spec.rb +20 -2
  259. data/spec/functional/resource/dnf_package_spec.rb +6 -3
  260. data/spec/functional/resource/execute_spec.rb +1 -1
  261. data/spec/functional/resource/git_spec.rb +29 -7
  262. data/spec/functional/resource/group_spec.rb +15 -3
  263. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  264. data/spec/functional/resource/insserv_spec.rb +3 -3
  265. data/spec/functional/resource/link_spec.rb +2 -5
  266. data/spec/functional/resource/mount_spec.rb +9 -1
  267. data/spec/functional/resource/msu_package_spec.rb +9 -3
  268. data/spec/functional/resource/powershell_script_spec.rb +4 -4
  269. data/spec/functional/resource/remote_file_spec.rb +9 -15
  270. data/spec/functional/resource/rpm_spec.rb +1 -1
  271. data/spec/functional/resource/timezone_spec.rb +2 -0
  272. data/spec/functional/resource/windows_package_spec.rb +0 -1
  273. data/spec/functional/resource/windows_path_spec.rb +4 -0
  274. data/spec/functional/resource/windows_security_policy_spec.rb +0 -1
  275. data/spec/functional/resource/windows_service_spec.rb +4 -0
  276. data/spec/functional/resource/windows_task_spec.rb +16 -15
  277. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  278. data/spec/functional/resource/yum_package_spec.rb +4 -1
  279. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  280. data/spec/functional/run_lock_spec.rb +2 -1
  281. data/spec/functional/shell_spec.rb +5 -6
  282. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  283. data/spec/functional/version_spec.rb +1 -1
  284. data/spec/functional/win32/crypto_spec.rb +1 -1
  285. data/spec/integration/knife/config_list_profiles_spec.rb +30 -2
  286. data/spec/integration/knife/config_use_profile_spec.rb +55 -2
  287. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  288. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  289. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  290. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  291. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  292. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  293. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +1 -1
  294. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  295. data/spec/integration/recipes/notifies_spec.rb +1 -1
  296. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  297. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  298. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  299. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  300. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  301. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  302. data/spec/scripts/ssl-serve.rb +1 -1
  303. data/spec/spec_helper.rb +10 -4
  304. data/spec/support/chef_helpers.rb +2 -21
  305. data/spec/support/platform_helpers.rb +1 -3
  306. data/spec/support/platforms/win32/spec_service.rb +1 -1
  307. data/spec/support/shared/functional/execute_resource.rb +1 -1
  308. data/spec/support/shared/functional/file_resource.rb +0 -1
  309. data/spec/support/shared/functional/securable_resource.rb +1 -2
  310. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  311. data/spec/support/shared/functional/windows_script.rb +3 -3
  312. data/spec/support/shared/integration/knife_support.rb +2 -9
  313. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  314. data/spec/support/shared/unit/execute_resource.rb +1 -1
  315. data/spec/support/shared/unit/provider/file.rb +12 -8
  316. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  317. data/spec/unit/application/solo_spec.rb +4 -2
  318. data/spec/unit/application_spec.rb +11 -2
  319. data/spec/unit/chef_fs/config_spec.rb +2 -2
  320. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  321. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  322. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  323. data/spec/unit/client_spec.rb +4 -1
  324. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  325. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  326. data/spec/unit/data_bag_spec.rb +6 -3
  327. data/spec/unit/data_collector_spec.rb +1 -1
  328. data/spec/unit/decorator_spec.rb +23 -23
  329. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  330. data/spec/unit/environment_spec.rb +5 -1
  331. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  332. data/spec/unit/guard_interpreter_spec.rb +1 -1
  333. data/spec/unit/http/api_versions_spec.rb +1 -1
  334. data/spec/unit/http/ssl_policies_spec.rb +20 -0
  335. data/spec/unit/json_compat_spec.rb +1 -1
  336. data/spec/unit/knife/bootstrap_spec.rb +5 -8
  337. data/spec/unit/knife/cookbook_download_spec.rb +2 -2
  338. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  339. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  340. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +7 -1
  341. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  342. data/spec/unit/log/syslog_spec.rb +6 -10
  343. data/spec/unit/log/winevt_spec.rb +21 -13
  344. data/spec/unit/lwrp_spec.rb +9 -6
  345. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  346. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  347. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  348. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  349. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  350. data/spec/unit/mixin/securable_spec.rb +0 -1
  351. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  352. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  353. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  354. data/spec/unit/mixin/uris_spec.rb +1 -1
  355. data/spec/unit/mixin/user_context_spec.rb +1 -9
  356. data/spec/unit/mixin/which.rb +8 -0
  357. data/spec/unit/node/attribute_spec.rb +1 -1
  358. data/spec/unit/node_spec.rb +98 -11
  359. data/spec/unit/property_spec.rb +6 -6
  360. data/spec/unit/provider/batch_spec.rb +130 -0
  361. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  362. data/spec/unit/provider/cron_spec.rb +9 -49
  363. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  364. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  365. data/spec/unit/provider/execute_spec.rb +1 -8
  366. data/spec/unit/provider/git_spec.rb +3 -3
  367. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  368. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  369. data/spec/unit/provider/mdadm_spec.rb +1 -3
  370. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  371. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  372. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  373. data/spec/unit/provider/package/portage_spec.rb +2 -2
  374. data/spec/unit/provider/package/powershell_spec.rb +96 -87
  375. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  376. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  377. data/spec/unit/provider/package/snap_spec.rb +1 -1
  378. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  379. data/spec/unit/provider/package/windows_spec.rb +30 -53
  380. data/spec/unit/provider/powershell_script_spec.rb +3 -45
  381. data/spec/unit/provider/script_spec.rb +20 -110
  382. data/spec/unit/provider/service/redhat_spec.rb +1 -1
  383. data/spec/unit/provider/service/windows_spec.rb +2 -6
  384. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  385. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  386. data/spec/unit/provider/windows_env_spec.rb +5 -4
  387. data/spec/unit/provider/zypper_repository_spec.rb +60 -10
  388. data/spec/unit/provider_spec.rb +1 -0
  389. data/spec/unit/resource/archive_file_spec.rb +11 -2
  390. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  391. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +17 -7
  392. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  393. data/spec/unit/resource/cron_spec.rb +2 -2
  394. data/spec/unit/resource/execute_spec.rb +10 -0
  395. data/spec/unit/resource/file/verification_spec.rb +2 -1
  396. data/spec/unit/resource/helpers/cron_validations_spec.rb +5 -1
  397. data/spec/unit/resource/homebrew_update_spec.rb +30 -0
  398. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  399. data/spec/unit/resource/powershell_script_spec.rb +10 -15
  400. data/spec/unit/resource/timezone_spec.rb +1 -1
  401. data/spec/unit/resource/windows_audit_policy_spec.rb +64 -0
  402. data/spec/unit/resource/windows_dns_record_spec.rb +3 -3
  403. data/spec/unit/resource/windows_dns_zone_spec.rb +2 -2
  404. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  405. data/spec/unit/resource/windows_package_spec.rb +1 -0
  406. data/spec/unit/resource/windows_task_spec.rb +1 -1
  407. data/spec/unit/resource/windows_uac_spec.rb +2 -2
  408. data/spec/unit/resource/yum_repository_spec.rb +21 -21
  409. data/spec/unit/resource_reporter_spec.rb +1 -1
  410. data/spec/unit/resource_spec.rb +84 -1
  411. data/spec/unit/role_spec.rb +23 -21
  412. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  413. data/spec/unit/run_lock_spec.rb +1 -1
  414. data/spec/unit/scan_access_control_spec.rb +1 -1
  415. data/spec/unit/util/backup_spec.rb +1 -1
  416. data/spec/unit/util/diff_spec.rb +1 -15
  417. data/spec/unit/util/dsc/configuration_generator_spec.rb +1 -1
  418. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  419. data/spec/unit/util/selinux_spec.rb +2 -1
  420. data/spec/unit/util/threaded_job_queue_spec.rb +9 -0
  421. data/spec/unit/win32/registry_spec.rb +1 -1
  422. data/spec/unit/win32/security_spec.rb +4 -3
  423. metadata +68 -40
  424. data/lib/chef/resource/cron.rb +0 -157
@@ -106,30 +106,25 @@ describe Chef::Provider::Package::Rubygems::CurrentGemEnvironment do
106
106
  context "new default rubygems behavior" do
107
107
  before do
108
108
  Chef::Config[:rubygems_cache_enabled] = false
109
+
110
+ dep_installer = Gem::DependencyInstaller.new
111
+ expect(dep_installer).not_to receive(:find_gems_with_sources)
112
+ allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
109
113
  end
110
114
 
111
115
  it "finds a matching gem candidate version on rubygems 2.0.0+" do
112
116
  dep = Gem::Dependency.new("rspec", ">= 0")
113
- dep_installer = Gem::DependencyInstaller.new
114
- allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
115
- expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
116
117
  expect(@gem_env.candidate_version_from_remote(dep)).to be_kind_of(Gem::Version)
117
118
  end
118
119
 
119
120
  it "gives the candidate version as nil if none is found" do
120
121
  dep = Gem::Dependency.new("lksdjflksdjflsdkfj", ">= 0")
121
- dep_installer = Gem::DependencyInstaller.new
122
- allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
123
- expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
124
122
  expect(@gem_env.candidate_version_from_remote(dep)).to be_nil
125
123
  end
126
124
 
127
125
  it "finds a matching gem from a specific gemserver when explicit sources are given (to a server that doesn't respond to api requests)" do
128
126
  dep = Gem::Dependency.new("rspec", ">= 0")
129
- dep_installer = Gem::DependencyInstaller.new
130
- allow(@gem_env).to receive(:dependency_installer).and_return(dep_installer)
131
- expect(dep_installer).not_to receive(:find_gems_with_sources).with(dep).and_call_original
132
- expect(@gem_env.candidate_version_from_remote(dep, "http://production.cf.rubygems.org")).to be_kind_of(Gem::Version)
127
+ expect(@gem_env.candidate_version_from_remote(dep, "https://rubygems.org")).to be_kind_of(Gem::Version)
133
128
  end
134
129
  end
135
130
 
@@ -17,7 +17,7 @@
17
17
  # limitations under the License.
18
18
  #
19
19
 
20
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
20
+ require "spec_helper"
21
21
  require "ostruct"
22
22
 
23
23
  describe Chef::Provider::Package::SmartOS, "load_current_resource" do
@@ -169,7 +169,7 @@ describe Chef::Provider::Package::Snap do
169
169
 
170
170
  it "does not throw an error if installed version not found" do
171
171
  provider.load_current_resource
172
- expect(provider.get_current_versions).to eq([nil])
172
+ expect(provider.get_current_versions).to eq([])
173
173
  end
174
174
  end
175
175
  end
@@ -8,7 +8,7 @@ describe Chef::Provider::Package::Windows::RegistryUninstallEntry do
8
8
 
9
9
  describe "when QuietUninstallString key not present" do
10
10
  let(:quiet_uninstall_string) { nil }
11
- let (:quiet_uninstall_string_key) { Chef::Provider::Package::Windows::RegistryUninstallEntry.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry).uninstall_string }
11
+ let(:quiet_uninstall_string_key) { Chef::Provider::Package::Windows::RegistryUninstallEntry.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry).uninstall_string }
12
12
  it "returns UninstallString key value" do
13
13
  expect(quiet_uninstall_string_key).to eql "UninstallStringPath"
14
14
  end
@@ -16,14 +16,14 @@ describe Chef::Provider::Package::Windows::RegistryUninstallEntry do
16
16
 
17
17
  describe "when QuietUninstallString key present" do
18
18
  let(:quiet_uninstall_string) { "QuietUninstallString" }
19
- let (:quiet_uninstall_string_key) { Chef::Provider::Package::Windows::RegistryUninstallEntry.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry).uninstall_string }
19
+ let(:quiet_uninstall_string_key) { Chef::Provider::Package::Windows::RegistryUninstallEntry.quiet_uninstall_string_key?(quiet_uninstall_string, hkey, key, entry).uninstall_string }
20
20
  it "returns QuietUninstallString key value" do
21
21
  expect(quiet_uninstall_string_key).to eql "QuietUninstallStringPath"
22
22
  end
23
23
  end
24
24
 
25
25
  describe ".find_entries", :windows_only do
26
- let (:registry_uninstall_entry) { Chef::Provider::Package::Windows::RegistryUninstallEntry }
26
+ let(:registry_uninstall_entry) { Chef::Provider::Package::Windows::RegistryUninstallEntry }
27
27
  before(:each) do
28
28
  allow_any_instance_of(::Win32::Registry).to receive(:open).and_return("::Win32::Registry::HKEY_CURRENT_USER")
29
29
  end
@@ -42,7 +42,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
42
42
  let(:cache_path) { 'c:\\cache\\' }
43
43
 
44
44
  before(:each) do
45
- allow(::File).to receive(:exist?).with(provider.new_resource.source).and_return(true)
45
+ allow(::File).to receive(:exist?).with(new_resource.source).and_return(true)
46
46
  end
47
47
 
48
48
  describe "load_current_resource" do
@@ -66,20 +66,22 @@ describe Chef::Provider::Package::Windows, :windows_only do
66
66
 
67
67
  it "sets the version to be installed" do
68
68
  provider.load_current_resource
69
- expect(provider.new_resource.version).to eql("2.0")
69
+ expect(new_resource.version).to eql("2.0")
70
70
  end
71
71
  end
72
72
 
73
- context "when the source is a uri" do
74
- let(:resource_source) { "https://foo.bar/calculator.msi" }
75
-
76
- context "when the source has not been downloaded" do
73
+ context "when the source is not present it loads from cache" do
74
+ context "when the package is not installed" do
77
75
  before(:each) do
78
- allow(provider).to receive(:downloadable_file_missing?).and_return(true)
76
+ allow(provider).to receive(:uri_scheme?).and_return(false)
77
+ allow(provider.package_provider).to receive(:get_product_property).and_return(nil)
78
+ allow(provider.package_provider).to receive(:get_installed_version).and_return(nil)
79
+ allow(provider.package_provider).to receive(:package_version).and_return(nil)
79
80
  end
80
- it "sets the current version to unknown" do
81
+
82
+ it "sets the current version nil" do
81
83
  provider.load_current_resource
82
- expect(provider.current_resource.version).to eql("unknown")
84
+ expect(provider.current_resource.version).to eql(nil)
83
85
  end
84
86
  end
85
87
 
@@ -233,9 +235,9 @@ describe Chef::Provider::Package::Windows, :windows_only do
233
235
  end
234
236
  end
235
237
 
236
- it "returns @installer_type if it is set" do
237
- provider.new_resource.installer_type(:downeaster)
238
- expect(provider.installer_type).to eql(:downeaster)
238
+ it "returns the resource's installer_type if it is set" do
239
+ new_resource.installer_type(:nsis)
240
+ expect(provider.installer_type).to eql(:nsis)
239
241
  end
240
242
 
241
243
  it "sets installer_type to inno if the source contains inno" do
@@ -275,7 +277,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
275
277
 
276
278
  it "raises an error" do
277
279
  allow(::Kernel).to receive(:open).and_yield(StringIO.new(""))
278
- provider.new_resource.installer_type(nil)
280
+ new_resource.installer_type(nil)
279
281
  expect { provider.installer_type }.to raise_error(Chef::Exceptions::CannotDetermineWindowsInstallerType)
280
282
  end
281
283
  end
@@ -312,7 +314,10 @@ describe Chef::Provider::Package::Windows, :windows_only do
312
314
  let(:resource_source) { "https://foo.bar/calculator.exe" }
313
315
 
314
316
  it "downloads the http resource" do
315
- allow(File).to receive(:exist?).with('c:\cache\calculator.exe').and_return(false)
317
+ allow(provider).to receive(:uri_scheme?).and_return(true)
318
+ allow(provider).to receive(:installer_type).and_return(nil)
319
+ allow(File).to receive(:exist?).with("https\\foo.bar\\calculator.exe").and_return(false)
320
+ allow(provider).to receive(:compile_and_converge_action)
316
321
  expect(provider).to receive(:download_source_file)
317
322
  provider.run_action(:install)
318
323
  end
@@ -400,7 +405,7 @@ describe Chef::Provider::Package::Windows, :windows_only do
400
405
  let(:resource_source) { "C:/a_missing_file.exe" }
401
406
  let(:installer_type) { nil }
402
407
  before do
403
- allow(::File).to receive(:exist?).with(provider.new_resource.source).and_return(false)
408
+ allow(::File).to receive(:exist?).with(new_resource.source).and_return(false)
404
409
  provider.load_current_resource
405
410
  end
406
411
 
@@ -414,51 +419,23 @@ describe Chef::Provider::Package::Windows, :windows_only do
414
419
  Chef::Config[:why_run] = false
415
420
  end
416
421
  end
417
- end
418
422
 
419
- shared_context "valid checksum" do
420
- context "checksum is valid" do
421
- before do
422
- allow(provider).to receive(:checksum).and_return("jiie00u3bbs92vsbhvgvklb2lasgh20ah")
423
- end
423
+ it "does not raise an error with a valid checksum" do
424
+ expect(Chef::Digester).to receive(:checksum_for_file).with(new_resource.source).and_return("abcdef1234567890")
425
+ expect(provider).to receive(:install_package)
424
426
 
425
- it "does not raise the checksum mismatch exception" do
426
- expect { provider.send(:validate_content!) }.to_not raise_error
427
- end
428
- end
429
- end
430
-
431
- shared_context "invalid checksum" do
432
- context "checksum is invalid" do
433
- before do
434
- allow(provider).to receive(:checksum).and_return("kiie30u3bbs92vsbhvgvklb2lasgh20ah")
435
- end
427
+ new_resource.checksum("abcdef1234567890")
436
428
 
437
- it "raises the checksum mismatch exception" do
438
- expect { provider.send(:validate_content!) }.to raise_error(
439
- Chef::Exceptions::ChecksumMismatch
440
- )
441
- end
429
+ provider.run_action(:install)
442
430
  end
443
- end
444
431
 
445
- describe "validate_content!" do
446
- before(:each) do
447
- new_resource.checksum("jiie00u3bbs92vsbhvgvklb2lasgh20ah")
448
- end
449
-
450
- context "checksum is in lowercase" do
451
- include_context "valid checksum"
452
- include_context "invalid checksum"
453
- end
432
+ it "raises an error with an invalid checksum" do
433
+ expect(Chef::Digester).to receive(:checksum_for_file).with(new_resource.source).and_return("abcdef1234567890")
434
+ expect(provider).not_to receive(:install_package)
454
435
 
455
- context "checksum is in uppercase" do
456
- before do
457
- new_resource.checksum = new_resource.checksum.upcase
458
- end
436
+ new_resource.checksum("ffffffffffffffff")
459
437
 
460
- include_context "valid checksum"
461
- include_context "invalid checksum"
438
+ expect { provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package)
462
439
  end
463
440
  end
464
441
  end
@@ -18,34 +18,12 @@
18
18
 
19
19
  require "spec_helper"
20
20
  describe Chef::Provider::PowershellScript, "action_run" do
21
-
22
- let(:powershell_version) { nil }
23
- let(:node) do
24
- node = Chef::Node.new
25
- node.default["kernel"] = {}
26
- node.default["kernel"][:machine] = :x86_64.to_s
27
- unless powershell_version.nil?
28
- node.default[:languages] = { powershell: { version: powershell_version } }
29
- end
30
- node
31
- end
32
-
33
- # code block is mandatory for the powershell provider
34
- let(:code) { "" }
35
-
36
21
  let(:events) { Chef::EventDispatch::Dispatcher.new }
37
22
 
38
- let(:run_context) { run_context = Chef::RunContext.new(node, {}, events) }
23
+ let(:run_context) { Chef::RunContext.new(Chef::Node.new, {}, events) }
39
24
 
40
25
  let(:new_resource) do
41
- new_resource = Chef::Resource::PowershellScript.new("run some powershell code", run_context)
42
- new_resource.code code
43
- new_resource
44
- end
45
-
46
- def set_user_defined_flag
47
- new_resource.flags "-ExecutionPolicy RemoteSigned"
48
- provider
26
+ Chef::Resource::PowershellScript.new("run some powershell code", run_context)
49
27
  end
50
28
 
51
29
  let(:provider) do
@@ -54,32 +32,12 @@ describe Chef::Provider::PowershellScript, "action_run" do
54
32
 
55
33
  context "when setting interpreter flags" do
56
34
  before(:each) do
57
- allow(provider).to receive(:is_forced_32bit).and_return(false)
58
- os_info_double = double("os_info")
59
- allow(provider.run_context.node["kernel"]).to receive(:[]).with("os_info").and_return(os_info_double)
60
- allow(os_info_double).to receive(:[]).with("system_directory").and_return("C:\\Windows\\system32")
35
+ allow(provider).to receive(:basepath).and_return("C:\\Windows\\system32")
61
36
  end
62
37
 
63
38
  it "sets the -File flag as the last flag" do
64
39
  flags = provider.command.split(" ").keep_if { |flag| flag =~ /^-/ }
65
40
  expect(flags.pop).to eq("-File")
66
41
  end
67
-
68
- let(:execution_policy_flag) do
69
- provider_flags = provider.flags.split(" ")
70
- # Last occurance of "executionpolicy"
71
- execution_policy_index = provider_flags.map(&:downcase).rindex("-executionpolicy")
72
-
73
- execution_policy_index ? provider_flags[execution_policy_index + 1] : nil
74
- end
75
-
76
- it "sets default -ExecutionPolicy flag to 'Bypass'" do
77
- expect(execution_policy_flag).to eq("Bypass")
78
- end
79
-
80
- it "sets user defined -ExecutionPolicy flag to 'RemoteSigned'" do
81
- set_user_defined_flag
82
- expect(execution_policy_flag).to eq("RemoteSigned")
83
- end
84
42
  end
85
43
  end
@@ -34,124 +34,34 @@ describe Chef::Provider::Script, "action_run" do
34
34
 
35
35
  let(:provider) { Chef::Provider::Script.new(new_resource, run_context) }
36
36
 
37
- let(:tempfile) { Tempfile.open("rspec-provider-script") }
38
-
39
- before(:each) do
40
- allow(provider).to receive(:shell_out!).and_return(true)
41
- allow(provider).to receive(:script_file).and_return(tempfile)
42
- end
43
-
44
- context "#script_file" do
45
- it "creates a temporary file to store the script" do
46
- allow(provider).to receive(:script_file).and_call_original
47
- expect(provider.script_file).to be_an_instance_of(Tempfile)
37
+ describe "#command" do
38
+ it "is only the intepreter in quotes by default" do
39
+ expect(provider.command.strip).to eq(%q{"perl"})
48
40
  end
49
- end
50
41
 
51
- context "#unlink_script_file" do
52
- it "unlinks the tempfile" do
53
- tempfile_path = tempfile.path
54
- provider.unlink_script_file
55
- expect(File.exist?(tempfile_path)).to be false
42
+ it "is the interpreter in quotes with the flags when flags are used" do
43
+ new_resource.flags "-f"
44
+ expect(provider.command).to eq(%q{"perl" -f})
56
45
  end
57
46
  end
58
47
 
59
- context "when configuring the script file's security" do
60
- context "when not running on Windows" do
61
- before do
62
- allow(ChefUtils).to receive(:windows?).and_return(false)
63
- end
64
- context "#set_owner_and_group" do
65
- it "sets the owner and group for the script file" do
66
- new_resource.user "toor"
67
- new_resource.group "wheel"
68
- expect(FileUtils).to receive(:chown).with("toor", "wheel", tempfile.path)
69
- provider.set_owner_and_group
70
- end
71
- end
72
- end
73
-
74
- context "when running on Windows" do
75
- before do
76
- allow(ChefUtils).to receive(:windows?).and_return(true)
77
- expect(new_resource.user).to eq(nil)
78
- stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_READ", 1)
79
- stub_const("Chef::ReservedNames::Win32::API::Security::GENERIC_EXECUTE", 4)
80
- stub_const("Chef::ReservedNames::Win32::Security", Class.new)
81
- stub_const("Chef::ReservedNames::Win32::Security::SecurableObject", Class.new)
82
- stub_const("Chef::ReservedNames::Win32::Security::SID", Class.new)
83
- stub_const("Chef::ReservedNames::Win32::Security::ACE", Class.new)
84
- stub_const("Chef::ReservedNames::Win32::Security::ACL", Class.new)
85
- end
86
-
87
- context "when an alternate user is not specified" do
88
- it "does not attempt to set the script file's security descriptor" do
89
- expect(provider).to receive(:grant_alternate_user_read_access)
90
- expect(Chef::ReservedNames::Win32::Security::SecurableObject).not_to receive(:new)
91
- provider.set_owner_and_group
92
- end
93
- end
94
-
95
- context "when an alternate user is specified" do
96
- let(:security_descriptor) { instance_double("Chef::ReservedNames::Win32::Security::SecurityDescriptor", dacl: []) }
97
- let(:securable_object) { instance_double("Chef::ReservedNames::Win32::Security::SecurableObject", :security_descriptor => security_descriptor, :dacl= => nil) }
98
- it "sets the script file's security descriptor" do
99
- new_resource.user("toor")
100
- expect(Chef::ReservedNames::Win32::Security::SecurableObject).to receive(:new).and_return(securable_object)
101
- expect(Chef::ReservedNames::Win32::Security::SID).to receive(:from_account).and_return(nil)
102
- expect(Chef::ReservedNames::Win32::Security::ACE).to receive(:access_allowed).and_return(nil)
103
- expect(Chef::ReservedNames::Win32::Security::ACL).to receive(:create).and_return(nil)
104
- expect(securable_object).to receive(:dacl=)
105
- provider.set_owner_and_group
106
- end
107
- end
108
- end
109
- end
110
-
111
- context "with the script file set to the correct owner and group" do
48
+ describe "#action_run" do
112
49
  before do
113
- allow(provider).to receive(:set_owner_and_group)
50
+ allow(provider).to receive(:stream_to_stdout?).and_return(false)
114
51
  end
115
52
 
116
- describe "when writing the script to the file" do
117
- it "should put the contents of the script in the temp file" do
118
- allow(provider).to receive(:unlink_script_file) # stub to avoid remove
119
- provider.action_run
120
- expect(IO.read(tempfile.path)).to eq("$| = 1; print 'i like beans'\n")
121
- provider.unlink_script_file
122
- end
123
-
124
- it "closes before executing the script and unlinks it when finished" do
125
- tempfile_path = tempfile.path
126
- provider.action_run
127
- expect(tempfile).to be_closed
128
- expect(File.exist?(tempfile_path)).to be false
129
- end
130
- end
131
-
132
- describe "when running the script" do
133
- let (:default_opts) do
134
- { timeout: 3600, returns: 0, default_env: false, log_level: :info, log_tag: "script[run some perl code]" }
135
- end
136
-
137
- before do
138
- allow(STDOUT).to receive(:tty?).and_return(false)
139
- end
140
-
141
- it 'should set the command to "interpreter" "tempfile"' do
142
- expect(provider.command).to eq(%Q{"perl" "#{tempfile.path}"})
143
- end
144
-
145
- it "should call shell_out! with the command" do
146
- expect(provider).to receive(:shell_out!).with(provider.command, default_opts).and_return(true)
147
- provider.action_run
148
- end
149
-
150
- it "should set the command to 'interpreter flags tempfile'" do
151
- new_resource.flags "-f"
152
- expect(provider.command).to eq(%Q{"perl" -f "#{tempfile.path}"})
153
- end
53
+ it "should call shell_out! with the command and correct options" do
54
+ opts = {
55
+ timeout: 3600,
56
+ returns: 0,
57
+ default_env: false,
58
+ log_level: :info,
59
+ log_tag: "script[run some perl code]",
60
+ input: "$| = 1; print 'i like beans'",
61
+ }
62
+
63
+ expect(provider).to receive(:shell_out!).with(provider.command, opts).and_return(true)
64
+ provider.action_run
154
65
  end
155
66
  end
156
-
157
67
  end
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require File.expand_path(File.join(File.dirname(__FILE__), "..", "..", "..", "spec_helper"))
19
+ require "spec_helper"
20
20
  require "ostruct"
21
21
 
22
22
  shared_examples_for "define_resource_requirements_common" do