chef 16.2.44-universal-mingw32 → 16.4.35-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 (383) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +4 -4
  3. data/Rakefile +3 -16
  4. data/chef-universal-mingw32.gemspec +2 -3
  5. data/chef.gemspec +4 -3
  6. data/lib/chef/action_collection.rb +4 -0
  7. data/lib/chef/api_client/registration.rb +2 -2
  8. data/lib/chef/application.rb +13 -1
  9. data/lib/chef/application/apply.rb +6 -5
  10. data/lib/chef/application/windows_service.rb +27 -27
  11. data/lib/chef/{whitelist.rb → attribute_allowlist.rb} +11 -11
  12. data/lib/chef/{blacklist.rb → attribute_blocklist.rb} +9 -9
  13. data/lib/chef/chef_class.rb +0 -1
  14. data/lib/chef/chef_fs/chef_fs_data_store.rb +54 -54
  15. data/lib/chef/chef_fs/data_handler/organization_data_handler.rb +1 -2
  16. data/lib/chef/chef_fs/file_system/chef_server/acl_entry.rb +10 -10
  17. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +2 -2
  18. data/lib/chef/chef_fs/file_system/chef_server/cookbooks_dir.rb +1 -5
  19. data/lib/chef/chef_fs/file_system/chef_server/organization_invites_entry.rb +8 -8
  20. data/lib/chef/chef_fs/file_system/chef_server/organization_members_entry.rb +8 -8
  21. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -0
  22. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_dir.rb +2 -2
  23. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_cookbook_entry.rb +1 -1
  24. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +18 -18
  25. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  26. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  27. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  28. data/lib/chef/client.rb +14 -14
  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 +15 -29
  32. data/lib/chef/data_bag.rb +1 -2
  33. data/lib/chef/data_collector/run_end_message.rb +11 -1
  34. data/lib/chef/deprecated.rb +8 -0
  35. data/lib/chef/digester.rb +3 -2
  36. data/lib/chef/dsl/platform_introspection.rb +9 -7
  37. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  38. data/lib/chef/environment.rb +3 -4
  39. data/lib/chef/exceptions.rb +4 -1
  40. data/lib/chef/file_access_control/windows.rb +2 -2
  41. data/lib/chef/file_content_management/deploy/mv_unix.rb +1 -1
  42. data/lib/chef/file_content_management/tempfile.rb +9 -9
  43. data/lib/chef/handler.rb +2 -0
  44. data/lib/chef/http.rb +12 -12
  45. data/lib/chef/http/authenticator.rb +3 -1
  46. data/lib/chef/json_compat.rb +1 -1
  47. data/lib/chef/knife.rb +4 -4
  48. data/lib/chef/knife/bootstrap.rb +18 -15
  49. data/lib/chef/knife/bootstrap/train_connector.rb +1 -0
  50. data/lib/chef/knife/config_get.rb +1 -0
  51. data/lib/chef/knife/config_list_profiles.rb +4 -1
  52. data/lib/chef/knife/config_use_profile.rb +15 -5
  53. data/lib/chef/knife/configure.rb +1 -1
  54. data/lib/chef/knife/cookbook_download.rb +1 -1
  55. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  56. data/lib/chef/knife/cookbook_upload.rb +29 -37
  57. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  58. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  59. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  60. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  61. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  62. data/lib/chef/knife/core/ui.rb +8 -2
  63. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  64. data/lib/chef/knife/delete.rb +15 -15
  65. data/lib/chef/knife/exec.rb +2 -2
  66. data/lib/chef/knife/rehash.rb +3 -21
  67. data/lib/chef/knife/ssh.rb +11 -7
  68. data/lib/chef/knife/xargs.rb +19 -19
  69. data/lib/chef/knife/yaml_convert.rb +1 -1
  70. data/lib/chef/log.rb +7 -2
  71. data/lib/chef/mixin/checksum.rb +0 -1
  72. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  73. data/lib/chef/mixin/deep_merge.rb +35 -6
  74. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  75. data/lib/chef/mixin/openssl_helper.rb +30 -6
  76. data/lib/chef/mixin/path_sanity.rb +5 -4
  77. data/lib/chef/mixin/shell_out.rb +4 -188
  78. data/lib/chef/mixin/template.rb +1 -0
  79. data/lib/chef/mixin/which.rb +6 -3
  80. data/lib/chef/mixins.rb +1 -0
  81. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  82. data/lib/chef/node.rb +36 -12
  83. data/lib/chef/node/attribute.rb +2 -4
  84. data/lib/chef/node_map.rb +21 -18
  85. data/lib/chef/platform/service_helpers.rb +31 -28
  86. data/lib/chef/property.rb +1 -1
  87. data/lib/chef/provider/cron/unix.rb +0 -2
  88. data/lib/chef/provider/git.rb +17 -9
  89. data/lib/chef/provider/group.rb +0 -2
  90. data/lib/chef/provider/group/suse.rb +5 -5
  91. data/lib/chef/provider/ifconfig.rb +1 -4
  92. data/lib/chef/provider/mount.rb +0 -2
  93. data/lib/chef/provider/mount/solaris.rb +0 -1
  94. data/lib/chef/provider/package.rb +0 -2
  95. data/lib/chef/provider/package/rubygems.rb +1 -1
  96. data/lib/chef/provider/package/snap.rb +3 -4
  97. data/lib/chef/provider/package/windows.rb +9 -4
  98. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  99. data/lib/chef/provider/package/zypper.rb +0 -1
  100. data/lib/chef/provider/powershell_script.rb +21 -5
  101. data/lib/chef/provider/route.rb +1 -1
  102. data/lib/chef/provider/service.rb +2 -2
  103. data/lib/chef/provider/service/arch.rb +1 -1
  104. data/lib/chef/provider/service/debian.rb +1 -1
  105. data/lib/chef/provider/service/gentoo.rb +2 -2
  106. data/lib/chef/provider/service/macosx.rb +2 -2
  107. data/lib/chef/provider/service/openbsd.rb +1 -4
  108. data/lib/chef/provider/service/redhat.rb +2 -2
  109. data/lib/chef/provider/service/upstart.rb +1 -1
  110. data/lib/chef/provider/service/windows.rb +10 -10
  111. data/lib/chef/provider/systemd_unit.rb +0 -2
  112. data/lib/chef/provider/template/content.rb +1 -0
  113. data/lib/chef/provider/user/dscl.rb +2 -2
  114. data/lib/chef/provider/user/mac.rb +9 -9
  115. data/lib/chef/provider/windows_task.rb +0 -3
  116. data/lib/chef/provider/yum_repository.rb +1 -1
  117. data/lib/chef/provider/zypper_repository.rb +1 -2
  118. data/lib/chef/providers.rb +0 -1
  119. data/lib/chef/recipe.rb +1 -1
  120. data/lib/chef/resource.rb +9 -11
  121. data/lib/chef/resource/alternatives.rb +1 -1
  122. data/lib/chef/resource/apt_repository.rb +1 -10
  123. data/lib/chef/resource/build_essential.rb +2 -2
  124. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  125. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  126. data/lib/chef/resource/chef_gem.rb +57 -21
  127. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  128. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  129. data/lib/chef/resource/cron/cron_d.rb +1 -1
  130. data/lib/chef/resource/cron_access.rb +2 -2
  131. data/lib/chef/resource/dmg_package.rb +2 -2
  132. data/lib/chef/resource/execute.rb +4 -5
  133. data/lib/chef/resource/gem_package.rb +35 -2
  134. data/lib/chef/resource/homebrew_update.rb +2 -2
  135. data/lib/chef/resource/hostname.rb +18 -18
  136. data/lib/chef/resource/launchd.rb +1 -1
  137. data/lib/chef/resource/lwrp_base.rb +1 -0
  138. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  139. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  140. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  141. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  142. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  143. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  144. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  145. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  146. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  147. data/lib/chef/resource/osx_profile.rb +227 -5
  148. data/lib/chef/resource/powershell_package_source.rb +1 -1
  149. data/lib/chef/resource/powershell_script.rb +24 -30
  150. data/lib/chef/resource/service.rb +2 -2
  151. data/lib/chef/resource/ssh_known_hosts_entry.rb +16 -1
  152. data/lib/chef/resource/sudo.rb +31 -4
  153. data/lib/chef/resource/swap_file.rb +17 -0
  154. data/lib/chef/resource/sysctl.rb +5 -5
  155. data/lib/chef/resource/timezone.rb +15 -0
  156. data/lib/chef/resource/user_ulimit.rb +1 -1
  157. data/lib/chef/resource/windows_ad_join.rb +2 -0
  158. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  159. data/lib/chef/resource/windows_auto_run.rb +2 -0
  160. data/lib/chef/resource/windows_certificate.rb +2 -0
  161. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  162. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  163. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  164. data/lib/chef/resource/windows_dns_record.rb +25 -5
  165. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  166. data/lib/chef/resource/windows_feature.rb +2 -0
  167. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  168. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  169. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  170. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  171. data/lib/chef/resource/windows_font.rb +3 -1
  172. data/lib/chef/resource/windows_pagefile.rb +4 -0
  173. data/lib/chef/resource/windows_printer.rb +17 -18
  174. data/lib/chef/resource/windows_printer_port.rb +14 -13
  175. data/lib/chef/resource/windows_security_policy.rb +52 -21
  176. data/lib/chef/resource/windows_share.rb +5 -3
  177. data/lib/chef/resource/windows_shortcut.rb +2 -0
  178. data/lib/chef/resource/windows_uac.rb +2 -0
  179. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  180. data/lib/chef/resource/windows_workgroup.rb +2 -3
  181. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  182. data/lib/chef/resource_inspector.rb +7 -1
  183. data/lib/chef/resources.rb +1 -0
  184. data/lib/chef/role.rb +3 -4
  185. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  186. data/lib/chef/run_status.rb +2 -6
  187. data/lib/chef/server_api_versions.rb +4 -0
  188. data/lib/chef/shell.rb +1 -1
  189. data/lib/chef/shell/shell_session.rb +2 -0
  190. data/lib/chef/util/backup.rb +1 -1
  191. data/lib/chef/util/diff.rb +11 -12
  192. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  193. data/lib/chef/version.rb +2 -2
  194. data/lib/chef/win32/file.rb +2 -2
  195. data/lib/chef/win32/file/version_info.rb +5 -5
  196. data/lib/chef/win32/registry.rb +1 -2
  197. data/spec/data/ssl/chef-rspec.cert +15 -15
  198. data/spec/functional/knife/configure_spec.rb +1 -1
  199. data/spec/functional/knife/ssh_spec.rb +5 -16
  200. data/spec/functional/resource/aix_service_spec.rb +9 -2
  201. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  202. data/spec/functional/resource/apt_package_spec.rb +0 -1
  203. data/spec/functional/resource/bash_spec.rb +3 -2
  204. data/spec/functional/resource/bff_spec.rb +3 -3
  205. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  206. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  207. data/spec/functional/resource/cron_spec.rb +10 -2
  208. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  209. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  210. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  211. data/spec/functional/resource/execute_spec.rb +1 -1
  212. data/spec/functional/resource/git_spec.rb +23 -1
  213. data/spec/functional/resource/group_spec.rb +21 -9
  214. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  215. data/spec/functional/resource/insserv_spec.rb +7 -7
  216. data/spec/functional/resource/link_spec.rb +22 -25
  217. data/spec/functional/resource/mount_spec.rb +9 -1
  218. data/spec/functional/resource/msu_package_spec.rb +9 -3
  219. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  220. data/spec/functional/resource/remote_file_spec.rb +7 -13
  221. data/spec/functional/resource/rpm_spec.rb +3 -3
  222. data/spec/functional/resource/timezone_spec.rb +2 -0
  223. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  224. data/spec/functional/resource/windows_font_spec.rb +49 -0
  225. data/spec/functional/resource/windows_package_spec.rb +0 -1
  226. data/spec/functional/resource/windows_path_spec.rb +4 -0
  227. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  228. data/spec/functional/resource/windows_service_spec.rb +4 -0
  229. data/spec/functional/resource/windows_task_spec.rb +4 -3
  230. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  231. data/spec/functional/resource/yum_package_spec.rb +4 -1
  232. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  233. data/spec/functional/run_lock_spec.rb +26 -25
  234. data/spec/functional/shell_spec.rb +5 -6
  235. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  236. data/spec/functional/version_spec.rb +1 -1
  237. data/spec/functional/win32/crypto_spec.rb +1 -1
  238. data/spec/functional/win32/registry_spec.rb +8 -8
  239. data/spec/functional/win32/service_manager_spec.rb +1 -1
  240. data/spec/integration/knife/common_options_spec.rb +12 -12
  241. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  242. data/spec/integration/knife/config_get_spec.rb +126 -125
  243. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  244. data/spec/integration/knife/config_use_profile_spec.rb +115 -61
  245. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  246. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  247. data/spec/integration/knife/diff_spec.rb +3 -1
  248. data/spec/integration/knife/download_spec.rb +3 -1
  249. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  250. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  251. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  252. data/spec/integration/knife/serve_spec.rb +5 -5
  253. data/spec/integration/knife/upload_spec.rb +3 -1
  254. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  255. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  256. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  257. data/spec/integration/recipes/notifies_spec.rb +1 -1
  258. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  259. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  260. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  261. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  262. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  263. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  264. data/spec/scripts/ssl-serve.rb +1 -1
  265. data/spec/spec_helper.rb +16 -10
  266. data/spec/support/chef_helpers.rb +1 -20
  267. data/spec/support/platform_helpers.rb +9 -11
  268. data/spec/support/platforms/win32/spec_service.rb +1 -1
  269. data/spec/support/shared/functional/directory_resource.rb +1 -1
  270. data/spec/support/shared/functional/execute_resource.rb +1 -1
  271. data/spec/support/shared/functional/file_resource.rb +20 -21
  272. data/spec/support/shared/functional/securable_resource.rb +1 -2
  273. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  274. data/spec/support/shared/functional/win32_service.rb +1 -1
  275. data/spec/support/shared/functional/windows_script.rb +5 -5
  276. data/spec/support/shared/integration/integration_helper.rb +22 -52
  277. data/spec/support/shared/integration/knife_support.rb +2 -9
  278. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  279. data/spec/support/shared/unit/provider/file.rb +12 -8
  280. data/spec/support/shared/unit/script_resource.rb +6 -20
  281. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  282. data/spec/unit/application/solo_spec.rb +4 -2
  283. data/spec/unit/application_spec.rb +4 -2
  284. data/spec/unit/chef_fs/config_spec.rb +2 -2
  285. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  286. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  287. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  288. data/spec/unit/client_spec.rb +4 -1
  289. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  290. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  291. data/spec/unit/data_bag_spec.rb +6 -3
  292. data/spec/unit/data_collector_spec.rb +23 -1
  293. data/spec/unit/decorator_spec.rb +23 -23
  294. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  295. data/spec/unit/environment_spec.rb +12 -8
  296. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  297. data/spec/unit/guard_interpreter_spec.rb +1 -1
  298. data/spec/unit/http/api_versions_spec.rb +20 -2
  299. data/spec/unit/json_compat_spec.rb +1 -1
  300. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  301. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  302. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  303. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  304. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  305. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  306. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  307. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  308. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  309. data/spec/unit/log/syslog_spec.rb +6 -10
  310. data/spec/unit/log/winevt_spec.rb +21 -13
  311. data/spec/unit/lwrp_spec.rb +9 -6
  312. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  313. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  314. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  315. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  316. data/spec/unit/mixin/securable_spec.rb +0 -1
  317. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  318. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  319. data/spec/unit/mixin/template_spec.rb +30 -30
  320. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  321. data/spec/unit/mixin/uris_spec.rb +1 -1
  322. data/spec/unit/mixin/which.rb +8 -0
  323. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  324. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  325. data/spec/unit/node_spec.rb +103 -16
  326. data/spec/unit/property_spec.rb +5 -5
  327. data/spec/unit/provider/batch_spec.rb +1 -1
  328. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  329. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  330. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  331. data/spec/unit/provider/execute_spec.rb +1 -8
  332. data/spec/unit/provider/git_spec.rb +3 -3
  333. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  334. data/spec/unit/provider/mdadm_spec.rb +1 -3
  335. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  336. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  337. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  338. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  339. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  340. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  341. data/spec/unit/provider/package/windows_spec.rb +30 -53
  342. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  343. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  344. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  345. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  346. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  347. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  348. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  349. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  350. data/spec/unit/provider/service/windows_spec.rb +2 -6
  351. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  352. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  353. data/spec/unit/provider/windows_env_spec.rb +5 -4
  354. data/spec/unit/provider_resolver_spec.rb +6 -6
  355. data/spec/unit/provider_spec.rb +1 -0
  356. data/spec/unit/resource/batch_spec.rb +6 -6
  357. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  358. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  359. data/spec/unit/resource/execute_spec.rb +123 -118
  360. data/spec/unit/resource/file/verification_spec.rb +2 -1
  361. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  362. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  363. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  364. data/spec/unit/resource/script_spec.rb +6 -1
  365. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  366. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  367. data/spec/unit/resource/windows_package_spec.rb +1 -0
  368. data/spec/unit/resource_reporter_spec.rb +1 -1
  369. data/spec/unit/resource_spec.rb +25 -8
  370. data/spec/unit/role_spec.rb +30 -28
  371. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  372. data/spec/unit/run_lock_spec.rb +1 -1
  373. data/spec/unit/scan_access_control_spec.rb +1 -1
  374. data/spec/unit/server_api_spec.rb +43 -16
  375. data/spec/unit/util/backup_spec.rb +1 -1
  376. data/spec/unit/util/diff_spec.rb +1 -15
  377. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  378. data/spec/unit/util/selinux_spec.rb +2 -1
  379. data/spec/unit/win32/security_spec.rb +4 -3
  380. data/tasks/rspec.rb +1 -1
  381. metadata +53 -40
  382. data/lib/chef/provider/osx_profile.rb +0 -255
  383. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -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
 
22
22
  require "chef/cookbook_uploader"
23
23
  require "timeout"
@@ -40,7 +40,6 @@ describe Chef::Knife::CookbookUpload do
40
40
  allow(cookbook_loader).to receive(:load_cookbooks).and_return(cookbook_loader)
41
41
  allow(cookbook_loader).to receive(:compile_metadata).and_return(nil)
42
42
  allow(cookbook_loader).to receive(:freeze_versions).and_return(nil)
43
- allow(cookbook_loader).to receive(:unlink!).and_return(nil)
44
43
  cookbook_loader
45
44
  end
46
45
 
@@ -60,7 +59,7 @@ describe Chef::Knife::CookbookUpload do
60
59
 
61
60
  before(:each) do
62
61
  allow(Chef::CookbookLoader).to receive(:new).and_return(cookbook_loader)
63
- allow(Chef::CookbookLoader).to receive(:copy_to_tmp_dir_from_array).and_return(cookbook_loader)
62
+ allow(Chef::CookbookLoader).to receive(:copy_to_tmp_dir_from_array).and_yield(cookbook_loader)
64
63
  end
65
64
 
66
65
  describe "with --concurrency" do
@@ -70,7 +69,6 @@ describe Chef::Knife::CookbookUpload do
70
69
  test_cookbook = Chef::CookbookVersion.new("test_cookbook", "/tmp/blah")
71
70
  allow(cookbook_loader).to receive(:each).and_yield("test_cookbook", test_cookbook)
72
71
  allow(cookbook_loader).to receive(:cookbook_names).and_return(["test_cookbook"])
73
- allow(cookbook_loader).to receive(:tmp_working_dir_path).and_return("/tmp/blah")
74
72
  expect(Chef::CookbookUploader).to receive(:new)
75
73
  .with( kind_of(Array), { force: nil, concurrency: 3 })
76
74
  .and_return(double("Chef::CookbookUploader", upload_cookbooks: true))
@@ -323,19 +321,18 @@ describe Chef::Knife::CookbookUpload do
323
321
 
324
322
  context "when cookbook path is an array" do
325
323
  it "should warn users that no cookbooks exist" do
326
- knife.config[:cookbook_path] = ["/chef-repo/cookbooks", "/home/user/cookbooks"]
327
- expect(knife.ui).to receive(:warn).with(
328
- /Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path].join(', ')}'\. Use --cookbook-path to specify the desired path\./
329
- )
324
+ cookbook_path = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
325
+ knife.config[:cookbook_path] = [cookbook_path, "/home/user/cookbooks"]
326
+ expect(knife.ui).to receive(:warn).with("Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path].join(", ")}'. Use --cookbook-path to specify the desired path.")
330
327
  knife.run
331
328
  end
332
329
  end
333
330
 
334
331
  context "when cookbook path is a string" do
335
332
  it "should warn users that no cookbooks exist" do
336
- knife.config[:cookbook_path] = "/chef-repo/cookbooks"
333
+ knife.config[:cookbook_path] = windows? ? "C:/chef-repo/cookbooks" : "/chef-repo/cookbooks"
337
334
  expect(knife.ui).to receive(:warn).with(
338
- /Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path]}'\. Use --cookbook-path to specify the desired path\./
335
+ "Could not find any cookbooks in your cookbook path: '#{knife.config[:cookbook_path]}'. Use --cookbook-path to specify the desired path."
339
336
  )
340
337
  knife.run
341
338
  end
@@ -50,7 +50,7 @@ describe Chef::Knife::SubcommandLoader::HashedCommandLoader do
50
50
 
51
51
  describe "#list_commands" do
52
52
  before do
53
- allow(File).to receive(:exists?).and_return(true)
53
+ allow(File).to receive(:exist?).and_return(true)
54
54
  end
55
55
 
56
56
  it "lists all commands by category when no argument is given" do
@@ -63,7 +63,7 @@ describe Chef::Knife::SubcommandLoader::HashedCommandLoader do
63
63
 
64
64
  context "when the plugin path is invalid" do
65
65
  before do
66
- expect(File).to receive(:exists?).with("/file/for/plugin/b").and_return(false)
66
+ expect(File).to receive(:exist?).with("/file/for/plugin/b").and_return(false)
67
67
  end
68
68
 
69
69
  it "lists all commands by category when no argument is given" do
@@ -90,7 +90,7 @@ describe Chef::Knife::SubcommandLoader::HashedCommandLoader do
90
90
  end
91
91
 
92
92
  it "loads the correct file and returns true if the command exists" do
93
- allow(File).to receive(:exists?).and_return(true)
93
+ allow(File).to receive(:exist?).and_return(true)
94
94
  expect(Kernel).to receive(:load).with("/file/for/plugin/a").and_return(true)
95
95
  expect(loader.load_command(["cool_a"])).to eq(true)
96
96
  end
@@ -148,24 +148,28 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
148
148
 
149
149
  describe "#config_content" do
150
150
  before do
151
- bootstrap_context.instance_variable_set(:@chef_config, Mash.new(config_log_level: :info,
152
- config_log_location: STDOUT,
153
- chef_server_url: "http://chef.example.com:4444",
154
- validation_client_name: "chef-validator-testing",
155
- file_cache_path: "c:/chef/cache",
156
- file_backup_path: "c:/chef/backup",
157
- cache_options: ({ path: "c:/chef/cache/checksums", skip_expires: true })))
151
+ bootstrap_context.instance_variable_set(
152
+ :@chef_config, Mash.new(
153
+ config_log_level: :info,
154
+ config_log_location: STDOUT,
155
+ chef_server_url: "http://chef.example.com:4444",
156
+ validation_client_name: "chef-validator-testing",
157
+ file_cache_path: "c:/chef/cache",
158
+ file_backup_path: "c:/chef/backup",
159
+ cache_options: ({ path: "c:/chef/cache/checksums", skip_expires: true })
160
+ )
161
+ )
158
162
  end
159
163
 
160
164
  it "generates the config file data" do
161
165
  expected = <<~EXPECTED
162
166
  echo.chef_server_url "http://chef.example.com:4444"
163
167
  echo.validation_client_name "chef-validator-testing"
164
- echo.file_cache_path "C:/chef/cache"
165
- echo.file_backup_path "C:/chef/backup"
166
- echo.cache_options ^({:path =^> "C:/chef/cache/checksums", :skip_expires =^> true}^)
168
+ echo.file_cache_path "C:\\\\chef\\\\cache"
169
+ echo.file_backup_path "C:\\\\chef\\\\backup"
170
+ echo.cache_options ^({:path =^> "C:\\\\chef\\\\cache\\\\checksums", :skip_expires =^> true}^)
167
171
  echo.# Using default node name ^(fqdn^)
168
- echo.log_level :info
172
+ echo.log_level :auto
169
173
  echo.log_location STDOUT
170
174
  EXPECTED
171
175
  expect(bootstrap_context.config_content).to eq expected
@@ -183,7 +187,12 @@ describe Chef::Knife::Core::WindowsBootstrapContext do
183
187
 
184
188
  describe "#start_chef" do
185
189
  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})
190
+ expect(bootstrap_context.start_chef).to eq(
191
+ <<~EOH
192
+ SET "PATH=%SYSTEM32%;%SystemRoot%;%SYSTEM32%\\Wbem;%SYSTEM32%\\WindowsPowerShell\\v1.0\\;C:\\ruby\\bin;C:\\opscode\\chef\\bin;C:\\opscode\\chef\\embedded\\bin;%PATH%"
193
+ chef-client -c C:\\chef\\client.rb -j C:\\chef\\first-boot.json
194
+ EOH
195
+ )
187
196
  end
188
197
  end
189
198
 
@@ -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)
@@ -108,7 +108,7 @@ describe Chef::Knife::SupermarketShare do
108
108
  expect { @knife.run }.to raise_error(SystemExit)
109
109
  end
110
110
 
111
- if File.exists?("/usr/bin/gnutar") || File.exists?("/bin/gnutar")
111
+ if File.exist?("/usr/bin/gnutar") || File.exist?("/bin/gnutar")
112
112
  it "should use gnutar to make a tarball of the cookbook" do
113
113
  expect(@knife).to receive(:shell_out!) do |args|
114
114
  expect(args.to_s).to match(/gnutar -czf/)
@@ -23,25 +23,21 @@ describe "Chef::Log::Syslog", unix_only: true do
23
23
 
24
24
  before do
25
25
  Chef::Log.init(MonoLogger.new(syslog))
26
- @old_log_level = Chef::Log.level
27
26
  Chef::Log.level = :info
28
- @old_loggers = Chef::Log.loggers
29
- Chef::Log.use_log_devices([syslog])
30
- end
31
-
32
- after do
33
- Chef::Log.level = @old_log_level
34
- Chef::Log.use_log_devices(@old_loggers)
35
27
  end
36
28
 
37
29
  it "should send message with severity info to syslog." do
38
30
  expect(syslog).to receive(:add).with(1, "*** Chef 12.4.0.dev.0 ***", nil)
39
- Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
31
+ expect {
32
+ Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
33
+ }.not_to output.to_stderr
40
34
  end
41
35
 
42
36
  it "should send message with severity warning to syslog." do
43
37
  expect(syslog).to receive(:add).with(2, "No config file found or specified on command line. Using command line options instead.", nil)
44
- Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
38
+ expect {
39
+ Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
40
+ }.not_to output.to_stderr
45
41
  end
46
42
 
47
43
  it "should fallback into send message with severity info to syslog when wrong format." do
@@ -19,32 +19,40 @@
19
19
 
20
20
  require "spec_helper"
21
21
 
22
- describe Chef::Log::WinEvt do
22
+ describe Chef::Log::WinEvt, :windows_only do
23
23
  let(:evtlog) { instance_double("Win32::EventLog") }
24
24
  let(:winevt) { Chef::Log::WinEvt.new(evtlog) }
25
25
  let(:app) { Chef::Application.new }
26
26
 
27
27
  before do
28
28
  Chef::Log.init(MonoLogger.new(winevt))
29
- @old_log_level = Chef::Log.level
30
29
  Chef::Log.level = :info
31
- @old_loggers = Chef::Log.loggers
32
- Chef::Log.use_log_devices([winevt])
33
- end
34
-
35
- after do
36
- Chef::Log.level = @old_log_level
37
- Chef::Log.use_log_devices(@old_loggers)
38
30
  end
39
31
 
40
32
  it "should send message with severity info to Windows Event Log." do
41
- expect(winevt).to receive(:add).with(1, "*** Chef 12.4.0.dev.0 ***", nil)
42
- Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
33
+ expect(evtlog).to receive(:report_event).with(
34
+ event_type: ::Win32::EventLog::INFO_TYPE,
35
+ source: Chef::Log::WinEvt::SOURCE,
36
+ event_id: Chef::Log::WinEvt::INFO_EVENT_ID,
37
+ data: ["*** Chef 12.4.0.dev.0 ***"]
38
+ )
39
+
40
+ expect {
41
+ Chef::Log.info("*** Chef 12.4.0.dev.0 ***")
42
+ }.not_to output.to_stderr
43
43
  end
44
44
 
45
45
  it "should send message with severity warning to Windows Event Log." do
46
- expect(winevt).to receive(:add).with(2, "No config file found or specified on command line. Using command line options instead.", nil)
47
- Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
46
+ expect(evtlog).to receive(:report_event).with(
47
+ event_type: ::Win32::EventLog::WARN_TYPE,
48
+ source: Chef::Log::WinEvt::SOURCE,
49
+ event_id: Chef::Log::WinEvt::WARN_EVENT_ID,
50
+ data: ["No config file found or specified on command line. Using command line options instead."]
51
+ )
52
+
53
+ expect {
54
+ Chef::Log.warn("No config file found or specified on command line. Using command line options instead.")
55
+ }.not_to output.to_stderr
48
56
  end
49
57
 
50
58
  it "should fallback into send message with severity info to Windows Event Log when wrong format." do
@@ -140,7 +140,7 @@ describe "LWRP" do
140
140
  before do
141
141
  @tmpdir = Dir.mktmpdir("lwrp_test")
142
142
  @lwrp_path = File.join(@tmpdir, "foo.rb")
143
- content = IO.read(File.expand_path("../../data/lwrp/resources/foo.rb", __FILE__))
143
+ content = IO.read(File.expand_path("../data/lwrp/resources/foo.rb", __dir__))
144
144
  IO.write(@lwrp_path, content)
145
145
  Chef::Resource::LWRPBase.build_from_file("lwrp", @lwrp_path, nil)
146
146
  @original_resource = Chef::ResourceResolver.resolve(:lwrp_foo)
@@ -152,7 +152,7 @@ describe "LWRP" do
152
152
 
153
153
  context "And the LWRP is asked to load again, this time with different code" do
154
154
  before do
155
- content = IO.read(File.expand_path("../../data/lwrp_override/resources/foo.rb", __FILE__))
155
+ content = IO.read(File.expand_path("../data/lwrp_override/resources/foo.rb", __dir__))
156
156
  IO.write(@lwrp_path, content)
157
157
  Chef::Resource::LWRPBase.build_from_file("lwrp", @lwrp_path, nil)
158
158
  end
@@ -390,11 +390,11 @@ describe "LWRP" do
390
390
  end
391
391
 
392
392
  before(:each) do
393
- Dir[File.expand_path(File.expand_path("../../data/lwrp/resources/*", __FILE__))].each do |file|
393
+ Dir[File.expand_path(File.expand_path("../data/lwrp/resources/*", __dir__))].each do |file|
394
394
  Chef::Resource::LWRPBase.build_from_file(lwrp_cookbook_name, file, run_context)
395
395
  end
396
396
 
397
- Dir[File.expand_path(File.expand_path("../../data/lwrp/providers/*", __FILE__))].each do |file|
397
+ Dir[File.expand_path(File.expand_path("../data/lwrp/providers/*", __dir__))].each do |file|
398
398
  Chef::Provider::LWRPBase.build_from_file(lwrp_cookbook_name, file, run_context)
399
399
  end
400
400
  end
@@ -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
 
@@ -18,19 +18,19 @@
18
18
 
19
19
  require "spec_helper"
20
20
 
21
- class PathSanityTestHarness
22
- include Chef::Mixin::PathSanity
21
+ class DefaultPathsTestHarness
22
+ include Chef::Mixin::DefaultPaths
23
23
  end
24
24
 
25
- describe Chef::Mixin::PathSanity do
25
+ describe Chef::Mixin::DefaultPaths do
26
26
 
27
27
  before do
28
- @sanity = PathSanityTestHarness.new
28
+ @default_paths = DefaultPathsTestHarness.new
29
29
  end
30
30
 
31
- describe "when enforcing path sanity" do
31
+ describe "when enforcing default paths" do
32
32
  before do
33
- Chef::Config[:enforce_path_sanity] = true
33
+ Chef::Config[:enforce_default_paths] = true
34
34
  @ruby_bindir = "/some/ruby/bin"
35
35
  @gem_bindir = "/some/gem/bin"
36
36
  allow(Gem).to receive(:bindir).and_return(@gem_bindir)
@@ -40,41 +40,41 @@ describe Chef::Mixin::PathSanity do
40
40
 
41
41
  it "adds all useful PATHs even if environment is an empty hash" do
42
42
  env = {}
43
- @sanity.enforce_path_sanity(env)
43
+ @default_paths.enforce_default_paths(env)
44
44
  expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
45
45
  end
46
46
 
47
47
  it "adds all useful PATHs that are not yet in PATH to PATH" do
48
48
  env = { "PATH" => "" }
49
- @sanity.enforce_path_sanity(env)
49
+ @default_paths.enforce_default_paths(env)
50
50
  expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
51
51
  end
52
52
 
53
53
  it "does not re-add paths that already exist in PATH" do
54
54
  env = { "PATH" => "/usr/bin:/sbin:/bin" }
55
- @sanity.enforce_path_sanity(env)
55
+ @default_paths.enforce_default_paths(env)
56
56
  expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/bin:/sbin:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin")
57
57
  end
58
58
 
59
59
  it "creates path with utf-8 encoding" do
60
60
  env = { "PATH" => "/usr/bin:/sbin:/bin:/b#{0x81.chr}t".force_encoding("ISO-8859-1") }
61
- @sanity.enforce_path_sanity(env)
61
+ @default_paths.enforce_default_paths(env)
62
62
  expect(env["PATH"].encoding.to_s).to eq("UTF-8")
63
63
  end
64
64
 
65
65
  it "adds the current executing Ruby's bindir and Gem bindir to the PATH" do
66
66
  env = { "PATH" => "" }
67
- @sanity.enforce_path_sanity(env)
67
+ @default_paths.enforce_default_paths(env)
68
68
  expect(env["PATH"]).to eq("#{@gem_bindir}:#{@ruby_bindir}:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin")
69
69
  end
70
70
 
71
- it "does not create entries for Ruby/Gem bindirs if they exist in SANE_PATH or PATH" do
71
+ it "does not create entries for Ruby/Gem bindirs if they exist in PATH" do
72
72
  ruby_bindir = "/usr/bin"
73
73
  gem_bindir = "/yo/gabba/gabba"
74
74
  allow(Gem).to receive(:bindir).and_return(gem_bindir)
75
75
  allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return(ruby_bindir)
76
76
  env = { "PATH" => gem_bindir }
77
- @sanity.enforce_path_sanity(env)
77
+ @default_paths.enforce_default_paths(env)
78
78
  expect(env["PATH"]).to eq("/usr/bin:/yo/gabba/gabba:/usr/local/sbin:/usr/local/bin:/usr/sbin:/sbin:/bin")
79
79
  end
80
80
 
@@ -85,7 +85,7 @@ describe Chef::Mixin::PathSanity do
85
85
  allow(RbConfig::CONFIG).to receive(:[]).with("bindir").and_return(ruby_bindir)
86
86
  allow(ChefUtils).to receive(:windows?).and_return(true)
87
87
  env = { "PATH" => 'C:\Windows\system32;C:\mr\softie' }
88
- @sanity.enforce_path_sanity(env)
88
+ @default_paths.enforce_default_paths(env)
89
89
  expect(env["PATH"]).to eq("#{gem_bindir};#{ruby_bindir};C:\\Windows\\system32;C:\\mr\\softie")
90
90
  end
91
91
  end
@@ -47,7 +47,7 @@ describe Chef::Mixin::PowershellExec, :windows_only do
47
47
  end
48
48
 
49
49
  it "raises an error if the command fails" do
50
- expect(object.powershell_exec!("$PSVersionTable")).to be_kind_of(Chef::PowerShell::CommandFailed)
50
+ expect { object.powershell_exec!("this-should-error") }.to raise_error(Chef::PowerShell::CommandFailed)
51
51
  end
52
52
  end
53
53
  end
@@ -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
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  #
3
2
  # Author:: Mark Mzyk (<mmzyk@chef.io>)
4
3
  # Copyright:: Copyright (c) Chef Software Inc.
@@ -21,10 +21,9 @@
21
21
  #
22
22
 
23
23
  require "spec_helper"
24
- require "chef/mixin/path_sanity"
24
+ require "chef/mixin/default_paths"
25
25
 
26
26
  describe Chef::Mixin::ShellOut do
27
- include ChefUtils::DSL::PathSanity
28
27
  let(:shell_out_class) { Class.new { include Chef::Mixin::ShellOut } }
29
28
  subject(:shell_out_obj) { shell_out_class.new }
30
29
 
@@ -57,38 +56,38 @@ describe Chef::Mixin::ShellOut do
57
56
  describe "and environment is an option" do
58
57
  it "should not change environment language settings when they are set to nil" do
59
58
  options = { environment: { "LC_ALL" => nil, "LANGUAGE" => nil, "LANG" => nil, env_path => nil } }
60
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
59
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
61
60
  shell_out_obj.send(method, cmd, **options)
62
61
  end
63
62
 
64
63
  it "should not change environment language settings when they are set to non-nil" do
65
64
  options = { environment: { "LC_ALL" => "en_US.UTF-8", "LANGUAGE" => "en_US.UTF-8", "LANG" => "en_US.UTF-8", env_path => "foo:bar:baz" } }
66
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
65
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
67
66
  shell_out_obj.send(method, cmd, **options)
68
67
  end
69
68
 
70
69
  it "should set environment language settings to the configured internal locale when they are not present" do
71
70
  options = { environment: { "HOME" => "/Users/morty" } }
72
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
71
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
73
72
  environment: {
74
73
  "HOME" => "/Users/morty",
75
74
  "LC_ALL" => Chef::Config[:internal_locale],
76
75
  "LANG" => Chef::Config[:internal_locale],
77
76
  "LANGUAGE" => Chef::Config[:internal_locale],
78
- env_path => sanitized_path,
77
+ env_path => shell_out_obj.default_paths,
79
78
  }).and_return(retobj)
80
79
  shell_out_obj.send(method, cmd, **options)
81
80
  end
82
81
 
83
82
  it "should not mutate the options hash when it adds language settings" do
84
83
  options = { environment: { "HOME" => "/Users/morty" } }
85
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
84
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
86
85
  environment: {
87
86
  "HOME" => "/Users/morty",
88
87
  "LC_ALL" => Chef::Config[:internal_locale],
89
88
  "LANG" => Chef::Config[:internal_locale],
90
89
  "LANGUAGE" => Chef::Config[:internal_locale],
91
- env_path => sanitized_path,
90
+ env_path => shell_out_obj.default_paths,
92
91
  }).and_return(retobj)
93
92
  shell_out_obj.send(method, cmd, **options)
94
93
  expect(options[:environment].key?("LC_ALL")).to be false
@@ -98,38 +97,38 @@ describe Chef::Mixin::ShellOut do
98
97
  describe "and env is an option" do
99
98
  it "should not change env when langauge options are set to nil" do
100
99
  options = { env: { "LC_ALL" => nil, "LANG" => nil, "LANGUAGE" => nil, env_path => nil } }
101
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
100
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
102
101
  shell_out_obj.send(method, cmd, **options)
103
102
  end
104
103
 
105
104
  it "should not change env when language options are set to non-nil" do
106
105
  options = { env: { "LC_ALL" => "de_DE.UTF-8", "LANG" => "de_DE.UTF-8", "LANGUAGE" => "de_DE.UTF-8", env_path => "foo:bar:baz" } }
107
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
106
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, **options).and_return(retobj)
108
107
  shell_out_obj.send(method, cmd, **options)
109
108
  end
110
109
 
111
110
  it "should set environment language settings to the configured internal locale when they are not present" do
112
111
  options = { env: { "HOME" => "/Users/morty" } }
113
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
112
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
114
113
  env: {
115
114
  "HOME" => "/Users/morty",
116
115
  "LC_ALL" => Chef::Config[:internal_locale],
117
116
  "LANG" => Chef::Config[:internal_locale],
118
117
  "LANGUAGE" => Chef::Config[:internal_locale],
119
- env_path => sanitized_path,
118
+ env_path => shell_out_obj.default_paths,
120
119
  }).and_return(retobj)
121
120
  shell_out_obj.send(method, cmd, **options)
122
121
  end
123
122
 
124
123
  it "should not mutate the options hash when it adds language settings" do
125
124
  options = { env: { "HOME" => "/Users/morty" } }
126
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
125
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
127
126
  env: {
128
127
  "HOME" => "/Users/morty",
129
128
  "LC_ALL" => Chef::Config[:internal_locale],
130
129
  "LANG" => Chef::Config[:internal_locale],
131
130
  "LANGUAGE" => Chef::Config[:internal_locale],
132
- env_path => sanitized_path,
131
+ env_path => shell_out_obj.default_paths,
133
132
  }).and_return(retobj)
134
133
  shell_out_obj.send(method, cmd, **options)
135
134
  expect(options[:env].key?("LC_ALL")).to be false
@@ -139,13 +138,13 @@ describe Chef::Mixin::ShellOut do
139
138
  describe "and no env/environment option is present" do
140
139
  it "should set environment language settings to the configured internal locale" do
141
140
  options = { user: "morty" }
142
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
141
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
143
142
  user: "morty",
144
143
  environment: {
145
144
  "LC_ALL" => Chef::Config[:internal_locale],
146
145
  "LANG" => Chef::Config[:internal_locale],
147
146
  "LANGUAGE" => Chef::Config[:internal_locale],
148
- env_path => sanitized_path,
147
+ env_path => shell_out_obj.default_paths,
149
148
  }).and_return(retobj)
150
149
  shell_out_obj.send(method, cmd, **options)
151
150
  end
@@ -154,12 +153,12 @@ describe Chef::Mixin::ShellOut do
154
153
 
155
154
  describe "when the last argument is not a Hash" do
156
155
  it "should set environment language settings to the configured internal locale" do
157
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
156
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd,
158
157
  environment: {
159
158
  "LC_ALL" => Chef::Config[:internal_locale],
160
159
  "LANG" => Chef::Config[:internal_locale],
161
160
  "LANGUAGE" => Chef::Config[:internal_locale],
162
- env_path => sanitized_path,
161
+ env_path => shell_out_obj.default_paths,
163
162
  }).and_return(retobj)
164
163
  shell_out_obj.send(method, cmd)
165
164
  end
@@ -173,19 +172,19 @@ describe Chef::Mixin::ShellOut do
173
172
  describe "and environment is an option" do
174
173
  it "should not change environment['LC_ALL'] when set to nil" do
175
174
  options = { environment: { "LC_ALL" => nil } }
176
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
175
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
177
176
  shell_out_obj.shell_out(cmd, **options, default_env: false)
178
177
  end
179
178
 
180
179
  it "should not change environment['LC_ALL'] when set to non-nil" do
181
180
  options = { environment: { "LC_ALL" => "en_US.UTF-8" } }
182
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
181
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
183
182
  shell_out_obj.shell_out(cmd, **options, default_env: false)
184
183
  end
185
184
 
186
185
  it "should no longer set environment['LC_ALL'] to nil when 'LC_ALL' not present" do
187
186
  options = { environment: { "HOME" => "/Users/morty" } }
188
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
187
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
189
188
  shell_out_obj.shell_out(cmd, **options, default_env: false)
190
189
  end
191
190
  end
@@ -193,19 +192,19 @@ describe Chef::Mixin::ShellOut do
193
192
  describe "and env is an option" do
194
193
  it "should not change env when set to nil" do
195
194
  options = { env: { "LC_ALL" => nil } }
196
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
195
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
197
196
  shell_out_obj.shell_out(cmd, **options, default_env: false)
198
197
  end
199
198
 
200
199
  it "should not change env when set to non-nil" do
201
200
  options = { env: { "LC_ALL" => "en_US.UTF-8" } }
202
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
201
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
203
202
  shell_out_obj.shell_out(cmd, **options, default_env: false)
204
203
  end
205
204
 
206
205
  it "should no longer set env['LC_ALL'] to nil when 'LC_ALL' not present" do
207
206
  options = { env: { "HOME" => "/Users/morty" } }
208
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
207
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
209
208
  shell_out_obj.shell_out(cmd, **options, default_env: false)
210
209
  end
211
210
  end
@@ -213,7 +212,7 @@ describe Chef::Mixin::ShellOut do
213
212
  describe "and no env/environment option is present" do
214
213
  it "should no longer add environment option and set environment['LC_ALL'] to nil" do
215
214
  options = { user: "morty" }
216
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(true)
215
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd, options).and_return(true)
217
216
  shell_out_obj.shell_out(cmd, **options, default_env: false)
218
217
  end
219
218
  end
@@ -221,7 +220,7 @@ describe Chef::Mixin::ShellOut do
221
220
 
222
221
  describe "when the last argument is not a Hash" do
223
222
  it "should no longer add environment options and set environment['LC_ALL'] to nil" do
224
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd).and_return(true)
223
+ expect(shell_out_obj).to receive(:__shell_out_command).with(cmd).and_return(true)
225
224
  shell_out_obj.shell_out(cmd, default_env: false)
226
225
  end
227
226
  end