chef 16.2.50-universal-mingw32 → 16.4.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 (377) 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/configure.rb +1 -1
  53. data/lib/chef/knife/cookbook_download.rb +1 -1
  54. data/lib/chef/knife/cookbook_metadata.rb +1 -1
  55. data/lib/chef/knife/cookbook_upload.rb +29 -37
  56. data/lib/chef/knife/core/bootstrap_context.rb +1 -1
  57. data/lib/chef/knife/core/gem_glob_loader.rb +1 -1
  58. data/lib/chef/knife/core/generic_presenter.rb +1 -1
  59. data/lib/chef/knife/core/hashed_command_loader.rb +3 -2
  60. data/lib/chef/knife/core/subcommand_loader.rb +20 -1
  61. data/lib/chef/knife/core/ui.rb +8 -2
  62. data/lib/chef/knife/core/windows_bootstrap_context.rb +33 -26
  63. data/lib/chef/knife/delete.rb +15 -15
  64. data/lib/chef/knife/exec.rb +2 -2
  65. data/lib/chef/knife/rehash.rb +3 -21
  66. data/lib/chef/knife/ssh.rb +11 -7
  67. data/lib/chef/knife/xargs.rb +19 -19
  68. data/lib/chef/knife/yaml_convert.rb +1 -1
  69. data/lib/chef/log.rb +7 -2
  70. data/lib/chef/mixin/checksum.rb +0 -1
  71. data/{spec/functional/resource/base.rb → lib/chef/mixin/chef_utils_wiring.rb} +24 -12
  72. data/lib/chef/mixin/deep_merge.rb +35 -6
  73. data/{spec/unit/log_spec.rb → lib/chef/mixin/default_paths.rb} +13 -5
  74. data/lib/chef/mixin/openssl_helper.rb +30 -6
  75. data/lib/chef/mixin/path_sanity.rb +5 -4
  76. data/lib/chef/mixin/shell_out.rb +4 -188
  77. data/lib/chef/mixin/template.rb +1 -0
  78. data/lib/chef/mixin/which.rb +6 -3
  79. data/lib/chef/mixins.rb +1 -0
  80. data/lib/chef/monkey_patches/webrick-utils.rb +10 -10
  81. data/lib/chef/node.rb +36 -12
  82. data/lib/chef/node/attribute.rb +2 -4
  83. data/lib/chef/node_map.rb +21 -18
  84. data/lib/chef/platform/service_helpers.rb +31 -28
  85. data/lib/chef/property.rb +1 -1
  86. data/lib/chef/provider/cron/unix.rb +0 -2
  87. data/lib/chef/provider/git.rb +17 -9
  88. data/lib/chef/provider/group.rb +0 -2
  89. data/lib/chef/provider/group/suse.rb +5 -5
  90. data/lib/chef/provider/ifconfig.rb +1 -4
  91. data/lib/chef/provider/mount.rb +0 -2
  92. data/lib/chef/provider/mount/solaris.rb +0 -1
  93. data/lib/chef/provider/package.rb +0 -2
  94. data/lib/chef/provider/package/rubygems.rb +1 -1
  95. data/lib/chef/provider/package/snap.rb +3 -4
  96. data/lib/chef/provider/package/windows.rb +9 -4
  97. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +9 -9
  98. data/lib/chef/provider/package/zypper.rb +0 -1
  99. data/lib/chef/provider/powershell_script.rb +21 -5
  100. data/lib/chef/provider/route.rb +1 -1
  101. data/lib/chef/provider/service.rb +2 -2
  102. data/lib/chef/provider/service/arch.rb +1 -1
  103. data/lib/chef/provider/service/debian.rb +1 -1
  104. data/lib/chef/provider/service/gentoo.rb +2 -2
  105. data/lib/chef/provider/service/macosx.rb +2 -2
  106. data/lib/chef/provider/service/openbsd.rb +1 -4
  107. data/lib/chef/provider/service/redhat.rb +2 -2
  108. data/lib/chef/provider/service/upstart.rb +1 -1
  109. data/lib/chef/provider/service/windows.rb +10 -10
  110. data/lib/chef/provider/systemd_unit.rb +0 -2
  111. data/lib/chef/provider/template/content.rb +1 -0
  112. data/lib/chef/provider/user/dscl.rb +2 -2
  113. data/lib/chef/provider/user/mac.rb +9 -9
  114. data/lib/chef/provider/windows_task.rb +0 -3
  115. data/lib/chef/provider/yum_repository.rb +1 -1
  116. data/lib/chef/provider/zypper_repository.rb +1 -2
  117. data/lib/chef/providers.rb +0 -1
  118. data/lib/chef/recipe.rb +1 -1
  119. data/lib/chef/resource.rb +9 -11
  120. data/lib/chef/resource/apt_repository.rb +1 -10
  121. data/lib/chef/resource/build_essential.rb +2 -2
  122. data/lib/chef/resource/chef_client_scheduled_task.rb +1 -1
  123. data/lib/chef/resource/chef_client_systemd_timer.rb +2 -2
  124. data/lib/chef/resource/chef_vault_secret.rb +13 -13
  125. data/lib/chef/resource/chocolatey_feature.rb +1 -2
  126. data/lib/chef/resource/cron/cron_d.rb +1 -1
  127. data/lib/chef/resource/cron_access.rb +2 -2
  128. data/lib/chef/resource/dmg_package.rb +1 -1
  129. data/lib/chef/resource/execute.rb +4 -5
  130. data/lib/chef/resource/homebrew_update.rb +2 -2
  131. data/lib/chef/resource/hostname.rb +18 -18
  132. data/lib/chef/resource/launchd.rb +1 -1
  133. data/lib/chef/resource/lwrp_base.rb +1 -0
  134. data/lib/chef/resource/macos_userdefaults.rb +176 -61
  135. data/lib/chef/resource/openssl_dhparam.rb +2 -0
  136. data/lib/chef/resource/openssl_ec_private_key.rb +2 -0
  137. data/lib/chef/resource/openssl_ec_public_key.rb +2 -0
  138. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -0
  139. data/lib/chef/resource/openssl_rsa_public_key.rb +2 -0
  140. data/lib/chef/resource/openssl_x509_certificate.rb +35 -35
  141. data/lib/chef/resource/openssl_x509_crl.rb +3 -2
  142. data/lib/chef/resource/openssl_x509_request.rb +23 -20
  143. data/lib/chef/resource/osx_profile.rb +227 -5
  144. data/lib/chef/resource/powershell_package_source.rb +1 -1
  145. data/lib/chef/resource/powershell_script.rb +24 -30
  146. data/lib/chef/resource/service.rb +2 -2
  147. data/lib/chef/resource/ssh_known_hosts_entry.rb +1 -1
  148. data/lib/chef/resource/sudo.rb +2 -2
  149. data/lib/chef/resource/sysctl.rb +5 -5
  150. data/lib/chef/resource/user_ulimit.rb +1 -1
  151. data/lib/chef/resource/windows_ad_join.rb +2 -0
  152. data/lib/chef/resource/windows_audit_policy.rb +3 -0
  153. data/lib/chef/resource/windows_auto_run.rb +2 -0
  154. data/lib/chef/resource/windows_certificate.rb +2 -0
  155. data/lib/chef/resource/windows_dfs_folder.rb +2 -0
  156. data/lib/chef/resource/windows_dfs_namespace.rb +2 -0
  157. data/lib/chef/resource/windows_dfs_server.rb +2 -0
  158. data/lib/chef/resource/windows_dns_record.rb +25 -5
  159. data/lib/chef/resource/windows_dns_zone.rb +12 -7
  160. data/lib/chef/resource/windows_feature.rb +2 -0
  161. data/lib/chef/resource/windows_feature_dism.rb +10 -0
  162. data/lib/chef/resource/windows_feature_powershell.rb +14 -2
  163. data/lib/chef/resource/windows_firewall_profile.rb +199 -0
  164. data/lib/chef/resource/windows_firewall_rule.rb +5 -3
  165. data/lib/chef/resource/windows_font.rb +3 -1
  166. data/lib/chef/resource/windows_pagefile.rb +4 -0
  167. data/lib/chef/resource/windows_printer.rb +17 -18
  168. data/lib/chef/resource/windows_printer_port.rb +14 -13
  169. data/lib/chef/resource/windows_security_policy.rb +51 -20
  170. data/lib/chef/resource/windows_share.rb +5 -3
  171. data/lib/chef/resource/windows_shortcut.rb +2 -0
  172. data/lib/chef/resource/windows_uac.rb +2 -0
  173. data/lib/chef/resource/windows_user_privilege.rb +27 -2
  174. data/lib/chef/resource/windows_workgroup.rb +2 -3
  175. data/lib/chef/resource_collection/stepable_iterator.rb +1 -2
  176. data/lib/chef/resource_inspector.rb +7 -1
  177. data/lib/chef/resources.rb +1 -0
  178. data/lib/chef/role.rb +3 -4
  179. data/lib/chef/run_context/cookbook_compiler.rb +20 -20
  180. data/lib/chef/run_status.rb +2 -6
  181. data/lib/chef/server_api_versions.rb +4 -0
  182. data/lib/chef/shell.rb +1 -1
  183. data/lib/chef/shell/shell_session.rb +2 -0
  184. data/lib/chef/util/backup.rb +1 -1
  185. data/lib/chef/util/diff.rb +11 -12
  186. data/lib/chef/util/powershell/cmdlet.rb +1 -1
  187. data/lib/chef/version.rb +2 -2
  188. data/lib/chef/win32/file.rb +2 -2
  189. data/lib/chef/win32/file/version_info.rb +5 -5
  190. data/lib/chef/win32/registry.rb +1 -2
  191. data/spec/data/ssl/chef-rspec.cert +15 -15
  192. data/spec/functional/knife/configure_spec.rb +1 -1
  193. data/spec/functional/knife/ssh_spec.rb +5 -16
  194. data/spec/functional/resource/aix_service_spec.rb +9 -2
  195. data/spec/functional/resource/aixinit_service_spec.rb +8 -9
  196. data/spec/functional/resource/apt_package_spec.rb +0 -1
  197. data/spec/functional/resource/bash_spec.rb +3 -2
  198. data/spec/functional/resource/bff_spec.rb +3 -3
  199. data/spec/functional/resource/chocolatey_package_spec.rb +4 -0
  200. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  201. data/spec/functional/resource/cron_spec.rb +10 -2
  202. data/spec/functional/resource/dnf_package_spec.rb +4 -1
  203. data/spec/functional/resource/dsc_resource_spec.rb +1 -1
  204. data/spec/functional/resource/dsc_script_spec.rb +0 -1
  205. data/spec/functional/resource/execute_spec.rb +1 -1
  206. data/spec/functional/resource/git_spec.rb +23 -1
  207. data/spec/functional/resource/group_spec.rb +21 -9
  208. data/spec/functional/resource/ifconfig_spec.rb +9 -1
  209. data/spec/functional/resource/insserv_spec.rb +7 -7
  210. data/spec/functional/resource/link_spec.rb +22 -25
  211. data/spec/functional/resource/mount_spec.rb +9 -1
  212. data/spec/functional/resource/msu_package_spec.rb +9 -3
  213. data/spec/functional/resource/powershell_script_spec.rb +8 -8
  214. data/spec/functional/resource/remote_file_spec.rb +7 -13
  215. data/spec/functional/resource/rpm_spec.rb +3 -3
  216. data/spec/functional/resource/timezone_spec.rb +2 -0
  217. data/spec/functional/resource/windows_certificate_spec.rb +3 -3
  218. data/spec/functional/resource/windows_font_spec.rb +49 -0
  219. data/spec/functional/resource/windows_package_spec.rb +0 -1
  220. data/spec/functional/resource/windows_path_spec.rb +4 -0
  221. data/spec/functional/resource/windows_security_policy_spec.rb +0 -4
  222. data/spec/functional/resource/windows_service_spec.rb +4 -0
  223. data/spec/functional/resource/windows_task_spec.rb +4 -3
  224. data/spec/functional/resource/windows_user_privilege_spec.rb +1 -2
  225. data/spec/functional/resource/yum_package_spec.rb +4 -1
  226. data/spec/functional/resource/zypper_package_spec.rb +4 -1
  227. data/spec/functional/run_lock_spec.rb +26 -25
  228. data/spec/functional/shell_spec.rb +5 -6
  229. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  230. data/spec/functional/version_spec.rb +1 -1
  231. data/spec/functional/win32/crypto_spec.rb +1 -1
  232. data/spec/functional/win32/registry_spec.rb +8 -8
  233. data/spec/functional/win32/service_manager_spec.rb +1 -1
  234. data/spec/integration/knife/common_options_spec.rb +12 -12
  235. data/spec/integration/knife/config_get_profile_spec.rb +69 -68
  236. data/spec/integration/knife/config_get_spec.rb +126 -125
  237. data/spec/integration/knife/config_list_profiles_spec.rb +181 -152
  238. data/spec/integration/knife/config_use_profile_spec.rb +110 -109
  239. data/spec/integration/knife/cookbook_upload_spec.rb +28 -1
  240. data/spec/integration/knife/data_bag_from_file_spec.rb +1 -1
  241. data/spec/integration/knife/diff_spec.rb +3 -1
  242. data/spec/integration/knife/download_spec.rb +3 -1
  243. data/spec/integration/knife/environment_from_file_spec.rb +1 -1
  244. data/spec/integration/knife/node_from_file_spec.rb +1 -1
  245. data/spec/integration/knife/role_from_file_spec.rb +1 -1
  246. data/spec/integration/knife/serve_spec.rb +5 -5
  247. data/spec/integration/knife/upload_spec.rb +3 -1
  248. data/spec/integration/recipes/accumulator_spec.rb +1 -1
  249. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +2 -2
  250. data/spec/integration/recipes/lwrp_spec.rb +1 -1
  251. data/spec/integration/recipes/notifies_spec.rb +1 -1
  252. data/spec/integration/recipes/notifying_block_spec.rb +1 -1
  253. data/spec/integration/recipes/recipe_dsl_spec.rb +5 -1
  254. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +2 -0
  255. data/spec/integration/recipes/resource_load_spec.rb +4 -2
  256. data/spec/integration/recipes/unified_mode_spec.rb +1 -1
  257. data/spec/integration/recipes/use_partial_spec.rb +1 -1
  258. data/spec/scripts/ssl-serve.rb +1 -1
  259. data/spec/spec_helper.rb +16 -10
  260. data/spec/support/chef_helpers.rb +1 -20
  261. data/spec/support/platform_helpers.rb +9 -11
  262. data/spec/support/platforms/win32/spec_service.rb +1 -1
  263. data/spec/support/shared/functional/directory_resource.rb +1 -1
  264. data/spec/support/shared/functional/execute_resource.rb +1 -1
  265. data/spec/support/shared/functional/file_resource.rb +20 -21
  266. data/spec/support/shared/functional/securable_resource.rb +1 -2
  267. data/spec/support/shared/functional/securable_resource_with_reporting.rb +0 -1
  268. data/spec/support/shared/functional/win32_service.rb +1 -1
  269. data/spec/support/shared/functional/windows_script.rb +5 -5
  270. data/spec/support/shared/integration/integration_helper.rb +22 -52
  271. data/spec/support/shared/integration/knife_support.rb +2 -9
  272. data/spec/support/shared/unit/application_dot_d.rb +0 -1
  273. data/spec/support/shared/unit/provider/file.rb +12 -8
  274. data/spec/support/shared/unit/script_resource.rb +6 -20
  275. data/spec/support/shared/unit/windows_script_resource.rb +15 -28
  276. data/spec/unit/application/solo_spec.rb +4 -2
  277. data/spec/unit/application_spec.rb +4 -2
  278. data/spec/unit/chef_fs/config_spec.rb +2 -2
  279. data/spec/unit/chef_fs/diff_spec.rb +8 -8
  280. data/spec/unit/chef_fs/file_system/operation_failed_error_spec.rb +2 -4
  281. data/spec/unit/chef_fs/{parallelizer.rb → parallelizer_spec.rb} +1 -1
  282. data/spec/unit/client_spec.rb +4 -1
  283. data/spec/unit/cookbook/gem_installer_spec.rb +2 -1
  284. data/spec/unit/cookbook/synchronizer_spec.rb +26 -24
  285. data/spec/unit/data_bag_spec.rb +6 -3
  286. data/spec/unit/data_collector_spec.rb +29 -1
  287. data/spec/unit/decorator_spec.rb +23 -23
  288. data/spec/unit/dsl/platform_introspection_spec.rb +1 -0
  289. data/spec/unit/environment_spec.rb +12 -8
  290. data/spec/unit/event_dispatch/dispatcher_spec.rb +3 -0
  291. data/spec/unit/guard_interpreter_spec.rb +1 -1
  292. data/spec/unit/http/api_versions_spec.rb +20 -2
  293. data/spec/unit/json_compat_spec.rb +1 -1
  294. data/spec/unit/knife/bootstrap_spec.rb +17 -20
  295. data/spec/unit/knife/cookbook_download_spec.rb +6 -6
  296. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +1 -1
  297. data/spec/unit/knife/cookbook_show_spec.rb +6 -7
  298. data/spec/unit/knife/cookbook_upload_spec.rb +7 -10
  299. data/spec/unit/knife/core/hashed_command_loader_spec.rb +3 -3
  300. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +21 -12
  301. data/spec/unit/knife/data_bag_edit_spec.rb +1 -1
  302. data/spec/unit/knife/supermarket_share_spec.rb +1 -1
  303. data/spec/unit/log/syslog_spec.rb +6 -10
  304. data/spec/unit/log/winevt_spec.rb +21 -13
  305. data/spec/unit/lwrp_spec.rb +9 -6
  306. data/spec/unit/mixin/{path_sanity_spec.rb → default_paths_spec.rb} +14 -14
  307. data/spec/unit/mixin/powershell_exec_spec.rb +1 -1
  308. data/spec/unit/mixin/powershell_out_spec.rb +2 -4
  309. data/spec/unit/mixin/powershell_type_coercions_spec.rb +1 -1
  310. data/spec/unit/mixin/securable_spec.rb +0 -1
  311. data/spec/unit/mixin/shell_out_spec.rb +25 -26
  312. data/spec/unit/mixin/subclass_directive_spec.rb +2 -2
  313. data/spec/unit/mixin/template_spec.rb +30 -30
  314. data/spec/unit/mixin/unformatter_spec.rb +2 -2
  315. data/spec/unit/mixin/uris_spec.rb +1 -1
  316. data/spec/unit/mixin/which.rb +8 -0
  317. data/spec/unit/mixin/windows_architecture_helper_spec.rb +4 -4
  318. data/spec/unit/node/immutable_collections_spec.rb +6 -2
  319. data/spec/unit/node_spec.rb +103 -16
  320. data/spec/unit/property_spec.rb +5 -5
  321. data/spec/unit/provider/batch_spec.rb +1 -1
  322. data/spec/unit/provider/cron/unix_spec.rb +1 -1
  323. data/spec/unit/provider/dsc_resource_spec.rb +22 -38
  324. data/spec/unit/provider/dsc_script_spec.rb +10 -10
  325. data/spec/unit/provider/execute_spec.rb +1 -8
  326. data/spec/unit/provider/git_spec.rb +3 -3
  327. data/spec/unit/provider/ifconfig_spec.rb +0 -1
  328. data/spec/unit/provider/mdadm_spec.rb +1 -3
  329. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  330. data/spec/unit/provider/package/openbsd_spec.rb +1 -1
  331. data/spec/unit/provider/package/pacman_spec.rb +17 -20
  332. data/spec/unit/provider/package/rubygems_spec.rb +5 -10
  333. data/spec/unit/provider/package/smartos_spec.rb +1 -1
  334. data/spec/unit/provider/package/windows/registry_uninstall_entry_spec.rb +3 -3
  335. data/spec/unit/provider/package/windows_spec.rb +30 -53
  336. data/spec/unit/provider/powershell_script_spec.rb +11 -4
  337. data/spec/unit/provider/remote_directory_spec.rb +9 -9
  338. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  339. data/spec/unit/provider/service/debian_service_spec.rb +1 -1
  340. data/spec/unit/provider/service/gentoo_service_spec.rb +7 -7
  341. data/spec/unit/provider/service/macosx_spec.rb +3 -3
  342. data/spec/unit/provider/service/redhat_spec.rb +3 -3
  343. data/spec/unit/provider/service/upstart_service_spec.rb +3 -3
  344. data/spec/unit/provider/service/windows_spec.rb +2 -6
  345. data/spec/unit/provider/systemd_unit_spec.rb +28 -24
  346. data/spec/unit/provider/user/dscl_spec.rb +2 -2
  347. data/spec/unit/provider/windows_env_spec.rb +5 -4
  348. data/spec/unit/provider_resolver_spec.rb +6 -6
  349. data/spec/unit/provider_spec.rb +1 -0
  350. data/spec/unit/resource/batch_spec.rb +6 -6
  351. data/spec/unit/resource/chef_client_cron_spec.rb +23 -7
  352. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +7 -4
  353. data/spec/unit/resource/execute_spec.rb +123 -118
  354. data/spec/unit/resource/file/verification_spec.rb +2 -1
  355. data/spec/unit/resource/macos_user_defaults_spec.rb +103 -2
  356. data/spec/unit/resource/osx_profile_spec.rb +233 -0
  357. data/spec/unit/resource/powershell_script_spec.rb +11 -29
  358. data/spec/unit/resource/script_spec.rb +6 -1
  359. data/spec/unit/resource/windows_feature_powershell_spec.rb +30 -4
  360. data/spec/unit/resource/windows_firewall_profile_spec.rb +77 -0
  361. data/spec/unit/resource/windows_package_spec.rb +1 -0
  362. data/spec/unit/resource_reporter_spec.rb +1 -1
  363. data/spec/unit/resource_spec.rb +25 -8
  364. data/spec/unit/role_spec.rb +30 -28
  365. data/spec/unit/run_context/cookbook_compiler_spec.rb +1 -1
  366. data/spec/unit/run_lock_spec.rb +1 -1
  367. data/spec/unit/scan_access_control_spec.rb +1 -1
  368. data/spec/unit/server_api_spec.rb +43 -16
  369. data/spec/unit/util/backup_spec.rb +1 -1
  370. data/spec/unit/util/diff_spec.rb +1 -15
  371. data/spec/unit/util/powershell/ps_credential_spec.rb +2 -2
  372. data/spec/unit/util/selinux_spec.rb +2 -1
  373. data/spec/unit/win32/security_spec.rb +4 -3
  374. data/tasks/rspec.rb +1 -1
  375. metadata +53 -40
  376. data/lib/chef/provider/osx_profile.rb +0 -255
  377. data/spec/unit/provider/osx_profile_spec.rb +0 -255
@@ -25,7 +25,7 @@ describe "knife cookbook upload", :workstation do
25
25
 
26
26
  include_context "default config options"
27
27
 
28
- let (:cb_dir) { "#{@repository_dir}/cookbooks" }
28
+ let(:cb_dir) { "#{@repository_dir}/cookbooks" }
29
29
 
30
30
  when_the_chef_server "is empty" do
31
31
  when_the_repository "has a cookbook" do
@@ -97,5 +97,32 @@ describe "knife cookbook upload", :workstation do
97
97
  expect { knife("cookbook upload x -o #{cb_dir}") }.to raise_error(Chef::Exceptions::MetadataNotValid)
98
98
  end
99
99
  end
100
+
101
+ when_the_repository "has cookbooks at multiple paths" do
102
+
103
+ let(:cb_dir_first) do
104
+ File.join(@repository_dir, "cookbooks")
105
+ .gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
106
+ end
107
+
108
+ let(:cb_dir_second) do
109
+ File.join(@repository_dir, "test_cookbooks")
110
+ .gsub(File::SEPARATOR, File::ALT_SEPARATOR || File::SEPARATOR)
111
+ end
112
+
113
+ before(:each) do
114
+ file "cookbooks/x/metadata.rb", cb_metadata("x", "1.0.0")
115
+ file "test_cookbooks/y/metadata.rb", cb_metadata("y", "1.0.0")
116
+ end
117
+
118
+ it "knife cookbook upload with -o or --cookbook-path" do
119
+ knife("cookbook upload x y -o #{cb_dir_first}#{File::PATH_SEPARATOR}#{cb_dir_second}").should_succeed stderr: <<~EOM
120
+ Uploading x [1.0.0]
121
+ Uploading y [1.0.0]
122
+ Uploaded 2 cookbooks.
123
+ EOM
124
+ end
125
+
126
+ end
100
127
  end
101
128
  end
@@ -24,7 +24,7 @@ describe "knife data bag from file", :workstation do
24
24
 
25
25
  include_context "default config options"
26
26
 
27
- let (:db_dir) { "#{@repository_dir}/data_bags" }
27
+ let(:db_dir) { "#{@repository_dir}/data_bags" }
28
28
 
29
29
  when_the_chef_server "has an empty data bag" do
30
30
  before do
@@ -318,7 +318,9 @@ describe "knife diff", :workstation do
318
318
  end
319
319
  end # without versioned cookbooks
320
320
 
321
- with_versioned_cookbooks do
321
+ context "with versioned cookbooks" do
322
+ before { Chef::Config[:versioned_cookbooks] = true }
323
+
322
324
  when_the_chef_server "has one of each thing" do
323
325
  before do
324
326
  client "x", "{}"
@@ -594,7 +594,9 @@ describe "knife download", :workstation do
594
594
  end
595
595
  end # without versioned cookbooks
596
596
 
597
- with_versioned_cookbooks do
597
+ context "with versioned cookbooks" do
598
+ before { Chef::Config[:versioned_cookbooks] = true }
599
+
598
600
  when_the_chef_server "has one of each thing" do
599
601
  before do
600
602
  client "x", {}
@@ -24,7 +24,7 @@ describe "knife environment from file", :workstation do
24
24
 
25
25
  # include_context "default config options"
26
26
 
27
- let (:env_dir) { "#{@repository_dir}/environments" }
27
+ let(:env_dir) { "#{@repository_dir}/environments" }
28
28
 
29
29
  when_the_chef_server "is empty" do
30
30
  when_the_repository "has some environments" do
@@ -24,7 +24,7 @@ describe "knife node from file", :workstation do
24
24
 
25
25
  # include_context "default config options"
26
26
 
27
- let (:node_dir) { "#{@repository_dir}/nodes" }
27
+ let(:node_dir) { "#{@repository_dir}/nodes" }
28
28
 
29
29
  when_the_chef_server "is empty" do
30
30
  when_the_repository "has some nodes" do
@@ -24,7 +24,7 @@ describe "knife role from file", :workstation do
24
24
 
25
25
  # include_context "default config options"
26
26
 
27
- let (:role_dir) { "#{@repository_dir}/roles" }
27
+ let(:role_dir) { "#{@repository_dir}/roles" }
28
28
 
29
29
  when_the_chef_server "is empty" do
30
30
  when_the_repository "has some roles" do
@@ -26,11 +26,11 @@ describe "knife serve", :workstation do
26
26
  def with_knife_serve
27
27
  exception = nil
28
28
  t = Thread.new do
29
- begin
30
- knife("serve --chef-zero-port=8890")
31
- rescue
32
- exception = $!
33
- end
29
+
30
+ knife("serve --chef-zero-port=8890")
31
+ rescue
32
+ exception = $!
33
+
34
34
  end
35
35
  begin
36
36
  Chef::Config.log_level = :debug
@@ -800,7 +800,9 @@ describe "knife upload", :workstation do
800
800
  end
801
801
  end # without versioned cookbooks
802
802
 
803
- with_versioned_cookbooks do
803
+ context "with versioned cookbooks" do
804
+ before { Chef::Config[:versioned_cookbooks] = true }
805
+
804
806
  when_the_chef_server "has one of each thing" do
805
807
 
806
808
  before do
@@ -6,7 +6,7 @@ describe "Accumulators" do
6
6
  include IntegrationSupport
7
7
  include Chef::Mixin::ShellOut
8
8
 
9
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
9
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
10
10
 
11
11
  # Invoke `chef-client` as `ruby PATH/TO/chef-client`. This ensures the
12
12
  # following constraints are satisfied:
@@ -6,7 +6,7 @@ describe "LWRPs with inline resources" do
6
6
  include IntegrationSupport
7
7
  include Chef::Mixin::ShellOut
8
8
 
9
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
9
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
10
10
 
11
11
  # Invoke `chef-client` as `ruby PATH/TO/chef-client`. This ensures the
12
12
  # following constraints are satisfied:
@@ -59,7 +59,7 @@ describe "LWRPs with inline resources" do
59
59
  end
60
60
  end
61
61
 
62
- after { File.delete(LwrpShadowedPropertyTest::PATH) if File.exists?(LwrpShadowedPropertyTest::PATH) }
62
+ after { File.delete(LwrpShadowedPropertyTest::PATH) if File.exist?(LwrpShadowedPropertyTest::PATH) }
63
63
 
64
64
  # https://github.com/chef/chef/issues/4334
65
65
  it "does not warn spuriously" do
@@ -6,7 +6,7 @@ describe "LWRPs" do
6
6
  include IntegrationSupport
7
7
  include Chef::Mixin::ShellOut
8
8
 
9
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
9
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
10
10
 
11
11
  # Invoke `chef-client` as `ruby PATH/TO/chef-client`. This ensures the
12
12
  # following constraints are satisfied:
@@ -22,7 +22,7 @@ describe "notifications" do
22
22
  include IntegrationSupport
23
23
  include Chef::Mixin::ShellOut
24
24
 
25
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
25
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
26
26
  let(:chef_client) { "bundle exec chef-client --minimal-ohai" }
27
27
 
28
28
  when_the_repository "notifies a nameless resource" do
@@ -23,7 +23,7 @@ describe "notifying_block" do
23
23
  include IntegrationSupport
24
24
  include Chef::Mixin::ShellOut
25
25
 
26
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
26
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
27
27
  let(:chef_client) { "bundle exec chef-client --minimal-ohai" }
28
28
 
29
29
  when_the_repository "notifying_block test one" do
@@ -1221,7 +1221,7 @@ describe "Recipe DSL methods" do
1221
1221
 
1222
1222
  it "utf-8 dsl names work" do
1223
1223
  recipe = converge do
1224
- Straße("blah") {}
1224
+ Straße("blah") {} # rubocop: disable Naming/AsciiIdentifiers
1225
1225
  end
1226
1226
  expect(recipe.logged_warnings).to eq ""
1227
1227
  expect(BaseThingy.created_resource).to eq(UTF8Thingy)
@@ -1233,6 +1233,10 @@ describe "Recipe DSL methods" do
1233
1233
  before { Namer.current_index += 1 }
1234
1234
 
1235
1235
  context "with an LWRP that declares actions" do
1236
+ let(:run_context) do
1237
+ Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
1238
+ end
1239
+
1236
1240
  let(:resource_class) do
1237
1241
  Class.new(Chef::Resource::LWRPBase) do
1238
1242
  provides :"recipe_dsl_spec#{Namer.current_index}"
@@ -6,6 +6,7 @@ describe "Resource::ActionClass#converge_if_changed" do
6
6
  module Namer
7
7
  extend self
8
8
  attr_accessor :current_index
9
+
9
10
  def incrementing_value
10
11
  @incrementing_value += 1
11
12
  @incrementing_value
@@ -30,6 +31,7 @@ describe "Resource::ActionClass#converge_if_changed" do
30
31
  property :state2, default: "default_state2"
31
32
  property :sensitive1, default: "default_dontprintme", sensitive: true
32
33
  attr_accessor :converged
34
+
33
35
  def initialize(*args)
34
36
  super
35
37
  @converged = 0
@@ -6,6 +6,7 @@ describe "Resource.load_current_value" do
6
6
  module Namer
7
7
  extend self
8
8
  attr_accessor :current_index
9
+
9
10
  def incrementing_value
10
11
  @incrementing_value += 1
11
12
  @incrementing_value
@@ -119,10 +120,10 @@ describe "Resource.load_current_value" do
119
120
  end
120
121
  end
121
122
 
122
- let (:subresource_name) do
123
+ let(:subresource_name) do
123
124
  :"load_current_value_subresource_dsl#{Namer.current_index}"
124
125
  end
125
- let (:subresource_class) do
126
+ let(:subresource_class) do
126
127
  r = Class.new(resource_class) do
127
128
  property :y, default: lazy { "default_y #{Namer.incrementing_value}" }
128
129
  end
@@ -194,6 +195,7 @@ describe "simple load_current_value tests" do
194
195
  let(:resource_class) do
195
196
  Class.new(Chef::Resource) do
196
197
  attr_writer :index # this is our hacky global state
198
+
197
199
  def index; @index ||= 1; end
198
200
 
199
201
  property :myindex, Integer
@@ -6,7 +6,7 @@ describe "Unified Mode" do
6
6
  include IntegrationSupport
7
7
  include Chef::Mixin::ShellOut
8
8
 
9
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
9
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
10
10
 
11
11
  let(:chef_client) { "bundle exec chef-client --minimal-ohai" }
12
12
 
@@ -22,7 +22,7 @@ describe "notifying_block" do
22
22
  include IntegrationSupport
23
23
  include Chef::Mixin::ShellOut
24
24
 
25
- let(:chef_dir) { File.expand_path("../../../../bin", __FILE__) }
25
+ let(:chef_dir) { File.expand_path("../../../bin", __dir__) }
26
26
  let(:chef_client) { "bundle exec chef-client --minimal-ohai" }
27
27
 
28
28
  when_the_repository "has a cookbook with partial resources" do
@@ -12,7 +12,7 @@ require "webrick/https"
12
12
 
13
13
  $ssl = true
14
14
 
15
- CHEF_SPEC_DATA = File.expand_path("../../data", __FILE__)
15
+ CHEF_SPEC_DATA = File.expand_path("../data", __dir__)
16
16
  cert_text = File.read(File.expand_path("ssl/chef-rspec.cert", CHEF_SPEC_DATA))
17
17
  cert = OpenSSL::X509::Certificate.new(cert_text)
18
18
  key_text = File.read(File.expand_path("ssl/chef-rspec.key", CHEF_SPEC_DATA))
@@ -24,10 +24,10 @@ module Shell
24
24
  IRB = nil unless defined? IRB
25
25
  end
26
26
 
27
- $LOAD_PATH.unshift File.expand_path("../..", __FILE__)
27
+ $LOAD_PATH.unshift File.expand_path("..", __dir__)
28
28
 
29
- $LOAD_PATH.unshift File.expand_path("../../chef-config/lib", __FILE__)
30
- $LOAD_PATH.unshift File.expand_path("../../chef-utils/lib", __FILE__)
29
+ $LOAD_PATH.unshift File.expand_path("../chef-config/lib", __dir__)
30
+ $LOAD_PATH.unshift File.expand_path("../chef-utils/lib", __dir__)
31
31
 
32
32
  require "rubygems"
33
33
  require "rspec/mocks"
@@ -68,7 +68,7 @@ end
68
68
 
69
69
  # If you want to load anything into the testing environment
70
70
  # without versioning it, add it to spec/support/local_gems.rb
71
- require "spec/support/local_gems.rb" if File.exists?(File.join(File.dirname(__FILE__), "support", "local_gems.rb"))
71
+ require "spec/support/local_gems.rb" if File.exist?(File.join(File.dirname(__FILE__), "support", "local_gems.rb"))
72
72
 
73
73
  # Explicitly require spec helpers that need to load first
74
74
  require "spec/support/platform_helpers"
@@ -116,6 +116,7 @@ RSpec.configure do |config|
116
116
  config.include(MockShellout::RSpec)
117
117
  config.filter_run focus: true
118
118
  config.filter_run_excluding external: true
119
+ config.raise_on_warning = true
119
120
 
120
121
  # Explicitly disable :should syntax
121
122
  # And set max_formatted_output_length to nil to prevent RSpec from doing truncation.
@@ -125,6 +126,7 @@ RSpec.configure do |config|
125
126
  end
126
127
  config.mock_with :rspec do |c|
127
128
  c.syntax = :expect
129
+ c.allow_message_expectations_on_nil = false
128
130
  end
129
131
 
130
132
  # Only run these tests on platforms that are also chef workstations
@@ -173,7 +175,6 @@ RSpec.configure do |config|
173
175
  config.filter_run_excluding requires_root: true unless root?
174
176
  config.filter_run_excluding requires_root_or_running_windows: true unless root? || windows?
175
177
  config.filter_run_excluding requires_unprivileged_user: true if root?
176
- config.filter_run_excluding uses_diff: true unless has_diff?
177
178
  config.filter_run_excluding openssl_gte_101: true unless openssl_gte_101?
178
179
  config.filter_run_excluding openssl_lt_101: true unless openssl_lt_101?
179
180
  config.filter_run_excluding aes_256_gcm_only: true unless aes_256_gcm?
@@ -239,6 +240,11 @@ RSpec.configure do |config|
239
240
 
240
241
  Chef::Config.reset
241
242
 
243
+ Chef::Log.setup!
244
+
245
+ Chef::Config[:log_level] = :fatal
246
+ Chef::Log.level(Chef::Config[:log_level])
247
+
242
248
  # By default, treat deprecation warnings as errors in tests.
243
249
  Chef::Config.treat_deprecation_warnings_as_errors(true)
244
250
 
@@ -291,11 +297,11 @@ RSpec.configure do |config|
291
297
 
292
298
  # Protect Rspec from accidental exit(0) causing rspec to terminate without error
293
299
  config.around(:example) do |ex|
294
- begin
295
- ex.run
296
- rescue SystemExit => e
297
- raise UnexpectedSystemExit.from(e)
298
- end
300
+
301
+ ex.run
302
+ rescue SystemExit => e
303
+ raise UnexpectedSystemExit.from(e)
304
+
299
305
  end
300
306
  end
301
307
 
@@ -18,14 +18,6 @@ CHEF_SPEC_DATA = File.expand_path(File.dirname(__FILE__) + "/../data/")
18
18
  CHEF_SPEC_ASSETS = File.expand_path(File.dirname(__FILE__) + "/../functional/assets/")
19
19
  CHEF_SPEC_BACKUP_PATH = File.join(Dir.tmpdir, "test-backup-path")
20
20
 
21
- Chef::Config[:log_level] = :fatal
22
- Chef::Config[:persistent_queue] = false
23
- Chef::Config[:file_backup_path] = CHEF_SPEC_BACKUP_PATH
24
-
25
- Chef::Log.init(StringIO.new)
26
- Chef::Log.level(Chef::Config.log_level)
27
- Chef::Config.solo(false)
28
-
29
21
  def sha256_checksum(path)
30
22
  OpenSSL::Digest.hexdigest("SHA256", File.read(path))
31
23
  end
@@ -48,22 +40,11 @@ def make_tmpname(prefix_suffix, n = nil)
48
40
  path << suffix
49
41
  end
50
42
 
51
- # NOTE:
52
- # This is a temporary fix to get tests passing on systems that have no `diff`
53
- # until we can replace shelling out to `diff` with ruby diff-lcs
54
- def has_diff?
55
- diff_cmd = Mixlib::ShellOut.new("diff -v")
56
- diff_cmd.run_command
57
- true
58
- rescue Errno::ENOENT
59
- false
60
- end
61
-
62
43
  # This is a helper to determine if the ruby in the PATH contains
63
44
  # win32/service gem. windows_service_manager tests create a windows
64
45
  # service that starts with the system ruby and requires this gem.
65
46
  def system_windows_service_gem?
66
- windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{DEV_NULL} 2>&1}
47
+ windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{File::NULL} 2>&1}
67
48
  if defined?(Bundler)
68
49
  Bundler.with_unbundled_env do
69
50
  # This returns true if the gem can be loaded
@@ -105,7 +105,7 @@ def mac_osx_1014?
105
105
  end
106
106
 
107
107
  def mac_osx?
108
- if File.exists? "/usr/bin/sw_vers"
108
+ if File.exist? "/usr/bin/sw_vers"
109
109
  result = ShellHelpers.shell_out("/usr/bin/sw_vers")
110
110
  result.stdout.each_line do |line|
111
111
  if /^ProductName:\sMac OS X.*$/.match?(line)
@@ -134,19 +134,19 @@ def unix?
134
134
  end
135
135
 
136
136
  def linux?
137
- !!(RUBY_PLATFORM =~ /linux/)
137
+ RUBY_PLATFORM.match?(/linux/)
138
138
  end
139
139
 
140
- def os_x?
141
- !!(RUBY_PLATFORM =~ /darwin/)
140
+ def macos?
141
+ RUBY_PLATFORM.match?(/darwin/)
142
142
  end
143
143
 
144
144
  def solaris?
145
- !!(RUBY_PLATFORM =~ /solaris/)
145
+ RUBY_PLATFORM.match?(/solaris/)
146
146
  end
147
147
 
148
148
  def freebsd?
149
- !!(RUBY_PLATFORM =~ /freebsd/)
149
+ RUBY_PLATFORM.match?(/freebsd/)
150
150
  end
151
151
 
152
152
  def intel_64bit?
@@ -182,7 +182,7 @@ def debian_family?
182
182
  end
183
183
 
184
184
  def aix?
185
- !!(RUBY_PLATFORM =~ /aix/)
185
+ RUBY_PLATFORM.match?(/aix/)
186
186
  end
187
187
 
188
188
  def wpar?
@@ -193,8 +193,6 @@ def supports_cloexec?
193
193
  Fcntl.const_defined?("F_SETFD") && Fcntl.const_defined?("FD_CLOEXEC")
194
194
  end
195
195
 
196
- DEV_NULL = windows? ? "NUL" : "/dev/null"
197
-
198
196
  def selinux_enabled?
199
197
  # This code is currently copied from lib/chef/util/selinux to make
200
198
  # specs independent of product.
@@ -218,8 +216,8 @@ def selinux_enabled?
218
216
  end
219
217
 
220
218
  def suse?
221
- ::File.exists?("/etc/SuSE-release") ||
222
- ( ::File.exists?("/etc/os-release") && /sles|suse/.match?(File.read("/etc/os-release")) )
219
+ ::File.exist?("/etc/SuSE-release") ||
220
+ ( ::File.exist?("/etc/os-release") && /sles|suse/.match?(File.read("/etc/os-release")) )
223
221
  end
224
222
 
225
223
  def root?