chef 16.18.30 → 17.10.163

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 (881) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +24 -33
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/chef-universal-mingw32.gemspec +3 -3
  6. data/chef.gemspec +25 -30
  7. data/lib/chef/action_collection.rb +6 -26
  8. data/lib/chef/api_client.rb +1 -1
  9. data/lib/chef/application/base.rb +28 -3
  10. data/lib/chef/application/exit_code.rb +7 -21
  11. data/lib/chef/application.rb +3 -1
  12. data/lib/chef/applications.rb +0 -1
  13. data/lib/chef/chef_fs/command_line.rb +5 -2
  14. data/lib/chef/chef_fs/file_pattern.rb +3 -3
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  18. data/lib/chef/chef_fs/file_system.rb +9 -10
  19. data/lib/chef/chef_fs/path_utils.rb +1 -1
  20. data/lib/chef/client.rb +10 -20
  21. data/lib/chef/compliance/default_attributes.rb +20 -7
  22. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  23. data/lib/chef/compliance/input.rb +115 -0
  24. data/lib/chef/compliance/input_collection.rb +139 -0
  25. data/lib/chef/compliance/profile.rb +122 -0
  26. data/lib/chef/compliance/profile_collection.rb +109 -0
  27. data/lib/chef/compliance/reporter/automate.rb +18 -8
  28. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  29. data/lib/chef/compliance/reporter/cli.rb +77 -0
  30. data/lib/chef/compliance/reporter/compliance_enforcer.rb +5 -1
  31. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  32. data/lib/chef/compliance/runner.rb +177 -37
  33. data/lib/chef/compliance/waiver.rb +115 -0
  34. data/lib/chef/compliance/waiver_collection.rb +143 -0
  35. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  36. data/lib/chef/cookbook/synchronizer.rb +3 -5
  37. data/lib/chef/cookbook/syntax_check.rb +1 -1
  38. data/lib/chef/cookbook_loader.rb +2 -4
  39. data/lib/chef/cookbook_uploader.rb +1 -2
  40. data/lib/chef/cookbook_version.rb +1 -1
  41. data/lib/chef/data_bag_item.rb +11 -2
  42. data/lib/chef/data_collector.rb +0 -1
  43. data/lib/chef/delayed_evaluator.rb +4 -0
  44. data/lib/chef/deprecated.rb +6 -2
  45. data/lib/chef/dsl/chef_vault.rb +6 -6
  46. data/lib/chef/{knife/group_list.rb → dsl/compliance.rb} +11 -16
  47. data/lib/chef/dsl/declare_resource.rb +5 -10
  48. data/lib/chef/{knife/client_show.rb → dsl/reader_helpers.rb} +24 -21
  49. data/lib/chef/dsl/reboot_pending.rb +2 -3
  50. data/lib/chef/dsl/recipe.rb +4 -2
  51. data/lib/chef/{knife/data_bag_list.rb → dsl/render_helpers.rb} +19 -17
  52. data/lib/chef/dsl/secret.rb +170 -0
  53. data/lib/chef/dsl/toml.rb +116 -0
  54. data/lib/chef/dsl/universal.rb +7 -0
  55. data/lib/chef/dsl.rb +1 -0
  56. data/lib/chef/event_dispatch/base.rb +46 -3
  57. data/lib/chef/exceptions.rb +30 -0
  58. data/lib/chef/formatters/doc.rb +62 -14
  59. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  60. data/lib/chef/formatters/minimal.rb +6 -5
  61. data/lib/chef/group.rb +75 -0
  62. data/lib/chef/handler/slow_report.rb +66 -0
  63. data/lib/chef/handler.rb +46 -8
  64. data/lib/chef/http/basic_client.rb +15 -7
  65. data/lib/chef/http/ssl_policies.rb +3 -3
  66. data/lib/chef/http.rb +7 -3
  67. data/lib/chef/json_compat.rb +1 -1
  68. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  69. data/lib/chef/mixin/homebrew_user.rb +15 -5
  70. data/lib/chef/mixin/openssl_helper.rb +17 -13
  71. data/lib/chef/mixin/powershell_exec.rb +27 -7
  72. data/lib/chef/mixin/properties.rb +6 -0
  73. data/lib/chef/mixin/why_run.rb +8 -2
  74. data/lib/chef/node/attribute.rb +6 -4
  75. data/lib/chef/node/immutable_collections.rb +13 -0
  76. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  77. data/lib/chef/node.rb +1 -1
  78. data/lib/chef/org.rb +3 -2
  79. data/lib/chef/platform/query_helpers.rb +2 -2
  80. data/lib/chef/policy_builder/expand_node_object.rb +1 -2
  81. data/lib/chef/policy_builder/policyfile.rb +84 -46
  82. data/lib/chef/powershell.rb +8 -6
  83. data/lib/chef/property.rb +18 -0
  84. data/lib/chef/provider/cron.rb +7 -4
  85. data/lib/chef/provider/directory.rb +8 -8
  86. data/lib/chef/provider/execute.rb +3 -2
  87. data/lib/chef/provider/file.rb +5 -3
  88. data/lib/chef/provider/git.rb +6 -8
  89. data/lib/chef/provider/group/groupadd.rb +3 -3
  90. data/lib/chef/provider/group/groupmod.rb +3 -3
  91. data/lib/chef/provider/group/pw.rb +3 -3
  92. data/lib/chef/provider/ifconfig/debian.rb +1 -1
  93. data/lib/chef/provider/ifconfig.rb +7 -7
  94. data/lib/chef/provider/launchd.rb +6 -6
  95. data/lib/chef/provider/link.rb +5 -5
  96. data/lib/chef/provider/lwrp_base.rb +1 -1
  97. data/lib/chef/provider/mount/aix.rb +3 -3
  98. data/lib/chef/provider/mount/linux.rb +16 -2
  99. data/lib/chef/provider/mount/mount.rb +6 -6
  100. data/lib/chef/provider/mount/windows.rb +1 -1
  101. data/lib/chef/provider/mount.rb +5 -5
  102. data/lib/chef/provider/package/apt.rb +27 -1
  103. data/lib/chef/provider/package/chocolatey.rb +14 -1
  104. data/lib/chef/provider/package/deb.rb +3 -3
  105. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  106. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  107. data/lib/chef/provider/package/dnf.rb +1 -1
  108. data/lib/chef/provider/package/habitat.rb +168 -0
  109. data/lib/chef/provider/package/portage.rb +2 -2
  110. data/lib/chef/provider/package/powershell.rb +13 -10
  111. data/lib/chef/provider/package/rubygems.rb +15 -21
  112. data/lib/chef/provider/package/windows.rb +2 -4
  113. data/lib/chef/provider/package/yum/python_helper.rb +109 -35
  114. data/lib/chef/provider/package/yum/yum_helper.py +42 -60
  115. data/lib/chef/provider/package/yum.rb +40 -16
  116. data/lib/chef/provider/package/zypper.rb +7 -0
  117. data/lib/chef/provider/package.rb +80 -49
  118. data/lib/chef/provider/registry_key.rb +4 -3
  119. data/lib/chef/provider/remote_file/http.rb +1 -1
  120. data/lib/chef/provider/route.rb +2 -2
  121. data/lib/chef/provider/service/aixinit.rb +1 -1
  122. data/lib/chef/provider/service/debian.rb +1 -1
  123. data/lib/chef/provider/service/freebsd.rb +15 -21
  124. data/lib/chef/provider/service/macosx.rb +4 -4
  125. data/lib/chef/provider/service/systemd.rb +43 -14
  126. data/lib/chef/provider/service/upstart.rb +2 -13
  127. data/lib/chef/provider/service/windows.rb +16 -16
  128. data/lib/chef/provider/service.rb +6 -6
  129. data/lib/chef/provider/subversion.rb +18 -20
  130. data/lib/chef/provider/support/yum_repo.erb +1 -1
  131. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  132. data/lib/chef/provider/systemd_unit.rb +53 -26
  133. data/lib/chef/provider/template/content.rb +2 -6
  134. data/lib/chef/provider/template.rb +1 -1
  135. data/lib/chef/provider/user/dscl.rb +1 -1
  136. data/lib/chef/provider/user/mac.rb +23 -26
  137. data/lib/chef/provider/user/pw.rb +1 -1
  138. data/lib/chef/provider/user/windows.rb +3 -3
  139. data/lib/chef/provider/user.rb +7 -3
  140. data/lib/chef/provider/windows_script.rb +1 -1
  141. data/lib/chef/provider/yum_repository.rb +27 -43
  142. data/lib/chef/provider/zypper_repository.rb +31 -35
  143. data/lib/chef/provider.rb +32 -4
  144. data/lib/chef/provider_resolver.rb +8 -2
  145. data/lib/chef/providers.rb +1 -2
  146. data/lib/chef/pwsh.rb +3 -2
  147. data/lib/chef/resource/alternatives.rb +6 -6
  148. data/lib/chef/resource/apt_package.rb +3 -3
  149. data/lib/chef/resource/apt_preference.rb +2 -2
  150. data/lib/chef/resource/apt_repository.rb +6 -6
  151. data/lib/chef/resource/apt_update.rb +5 -4
  152. data/lib/chef/resource/archive_file.rb +19 -17
  153. data/lib/chef/resource/breakpoint.rb +1 -1
  154. data/lib/chef/resource/build_essential.rb +2 -6
  155. data/lib/chef/resource/chef_client_config.rb +38 -6
  156. data/lib/chef/resource/chef_client_cron.rb +5 -5
  157. data/lib/chef/resource/chef_client_launchd.rb +7 -7
  158. data/lib/chef/resource/chef_client_scheduled_task.rb +61 -18
  159. data/lib/chef/resource/chef_client_systemd_timer.rb +6 -6
  160. data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
  161. data/lib/chef/resource/chef_handler.rb +3 -7
  162. data/lib/chef/resource/chef_sleep.rb +1 -1
  163. data/lib/chef/resource/chef_vault_secret.rb +5 -10
  164. data/lib/chef/resource/chocolatey_config.rb +16 -20
  165. data/lib/chef/resource/chocolatey_feature.rb +3 -7
  166. data/lib/chef/resource/chocolatey_package.rb +3 -3
  167. data/lib/chef/resource/chocolatey_source.rb +28 -12
  168. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  169. data/lib/chef/resource/cron/cron.rb +75 -1
  170. data/lib/chef/resource/cron/cron_d.rb +5 -6
  171. data/lib/chef/resource/cron_access.rb +2 -4
  172. data/lib/chef/resource/directory.rb +1 -1
  173. data/lib/chef/resource/dmg_package.rb +6 -10
  174. data/lib/chef/resource/dnf_package.rb +4 -6
  175. data/lib/chef/resource/dpkg_package.rb +6 -1
  176. data/lib/chef/resource/dsc_resource.rb +1 -1
  177. data/lib/chef/resource/execute.rb +14 -12
  178. data/lib/chef/resource/file/verification/json.rb +50 -0
  179. data/lib/chef/resource/{user/dscl_user.rb → file/verification/yaml.rb} +26 -9
  180. data/lib/chef/resource/file.rb +1 -1
  181. data/lib/chef/resource/gem_package.rb +2 -1
  182. data/lib/chef/resource/group.rb +6 -6
  183. data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
  184. data/lib/chef/resource/habitat/habitat_package.rb +129 -0
  185. data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
  186. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
  187. data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
  188. data/lib/chef/resource/habitat_config.rb +107 -0
  189. data/lib/chef/resource/habitat_install.rb +247 -0
  190. data/lib/chef/resource/habitat_service.rb +451 -0
  191. data/lib/chef/resource/habitat_user_toml.rb +92 -0
  192. data/lib/chef/resource/homebrew_cask.rb +10 -10
  193. data/lib/chef/resource/homebrew_package.rb +1 -1
  194. data/lib/chef/resource/homebrew_tap.rb +9 -16
  195. data/lib/chef/resource/homebrew_update.rb +2 -2
  196. data/lib/chef/resource/hostname.rb +68 -22
  197. data/lib/chef/resource/http_request.rb +1 -1
  198. data/lib/chef/resource/inspec_input.rb +127 -0
  199. data/lib/chef/resource/inspec_waiver.rb +184 -0
  200. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  201. data/lib/chef/resource/kernel_module.rb +32 -18
  202. data/lib/chef/resource/launchd.rb +5 -8
  203. data/lib/chef/resource/locale.rb +7 -5
  204. data/lib/chef/resource/lwrp_base.rb +20 -1
  205. data/lib/chef/resource/macos_userdefaults.rb +54 -144
  206. data/lib/chef/resource/mdadm.rb +53 -7
  207. data/lib/chef/resource/mount.rb +2 -1
  208. data/lib/chef/resource/ohai_hint.rb +2 -6
  209. data/lib/chef/resource/openbsd_package.rb +17 -0
  210. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  211. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  212. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  213. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  214. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  215. data/lib/chef/resource/openssl_x509_certificate.rb +4 -7
  216. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  217. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  218. data/lib/chef/resource/osx_profile.rb +3 -3
  219. data/lib/chef/resource/plist.rb +8 -8
  220. data/lib/chef/resource/powershell_package_source.rb +235 -73
  221. data/lib/chef/resource/powershell_script.rb +1 -1
  222. data/lib/chef/resource/reboot.rb +38 -9
  223. data/lib/chef/resource/registry_key.rb +36 -48
  224. data/lib/chef/resource/remote_directory.rb +2 -2
  225. data/lib/chef/resource/remote_file.rb +103 -7
  226. data/lib/chef/resource/rhsm_errata.rb +16 -3
  227. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  228. data/lib/chef/resource/rhsm_register.rb +42 -3
  229. data/lib/chef/resource/rhsm_repo.rb +17 -6
  230. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  231. data/lib/chef/resource/ruby_block.rb +100 -0
  232. data/lib/chef/resource/scm/git.rb +1 -1
  233. data/lib/chef/resource/scm/subversion.rb +1 -1
  234. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  235. data/lib/chef/resource/sudo.rb +8 -12
  236. data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
  237. data/lib/chef/resource/support/client.erb +11 -1
  238. data/lib/chef/resource/support/sup.toml.erb +179 -0
  239. data/lib/chef/resource/swap_file.rb +2 -6
  240. data/lib/chef/resource/sysctl.rb +2 -6
  241. data/lib/chef/resource/systemd_unit.rb +2 -2
  242. data/lib/chef/resource/template.rb +1 -1
  243. data/lib/chef/resource/timezone.rb +3 -5
  244. data/lib/chef/resource/user/mac_user.rb +1 -1
  245. data/lib/chef/resource/user_ulimit.rb +2 -2
  246. data/lib/chef/resource/windows_ad_join.rb +2 -6
  247. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  248. data/lib/chef/resource/windows_auto_run.rb +3 -6
  249. data/lib/chef/resource/windows_certificate.rb +235 -90
  250. data/lib/chef/resource/windows_defender.rb +163 -0
  251. data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
  252. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  253. data/lib/chef/resource/windows_dfs_namespace.rb +4 -8
  254. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  255. data/lib/chef/resource/windows_dns_record.rb +2 -6
  256. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  257. data/lib/chef/resource/windows_env.rb +6 -5
  258. data/lib/chef/resource/windows_feature.rb +3 -9
  259. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  260. data/lib/chef/resource/windows_feature_powershell.rb +11 -12
  261. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  262. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  263. data/lib/chef/resource/windows_font.rb +3 -5
  264. data/lib/chef/resource/windows_pagefile.rb +111 -69
  265. data/lib/chef/resource/windows_path.rb +4 -4
  266. data/lib/chef/resource/windows_printer.rb +80 -61
  267. data/lib/chef/resource/windows_printer_port.rb +49 -66
  268. data/lib/chef/resource/windows_security_policy.rb +10 -10
  269. data/lib/chef/resource/windows_share.rb +14 -21
  270. data/lib/chef/resource/windows_shortcut.rb +4 -6
  271. data/lib/chef/resource/windows_task.rb +44 -17
  272. data/lib/chef/resource/windows_uac.rb +3 -5
  273. data/lib/chef/resource/windows_update_settings.rb +259 -0
  274. data/lib/chef/resource/windows_workgroup.rb +3 -4
  275. data/lib/chef/resource/yum_package.rb +11 -15
  276. data/lib/chef/resource/zypper_package.rb +4 -4
  277. data/lib/chef/resource/zypper_repository.rb +28 -8
  278. data/lib/chef/resource.rb +24 -27
  279. data/lib/chef/resource_builder.rb +8 -2
  280. data/lib/chef/resource_inspector.rb +6 -2
  281. data/lib/chef/resource_reporter.rb +1 -2
  282. data/lib/chef/resources.rb +15 -2
  283. data/lib/chef/run_context/cookbook_compiler.rb +112 -28
  284. data/lib/chef/run_context.rb +47 -1
  285. data/lib/chef/run_lock.rb +2 -2
  286. data/lib/chef/runner.rb +1 -1
  287. data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
  288. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
  289. data/lib/chef/secret_fetcher/azure_key_vault.rb +134 -0
  290. data/lib/chef/secret_fetcher/base.rb +76 -0
  291. data/lib/chef/secret_fetcher/example.rb +46 -0
  292. data/lib/chef/secret_fetcher/hashi_vault.rb +134 -0
  293. data/lib/chef/secret_fetcher.rb +60 -0
  294. data/lib/chef/user.rb +0 -1
  295. data/lib/chef/user_v1.rb +3 -4
  296. data/lib/chef/util/dsc/configuration_generator.rb +2 -1
  297. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  298. data/lib/chef/version.rb +1 -1
  299. data/lib/chef/win32/api.rb +1 -1
  300. data/lib/chef/win32/registry.rb +4 -2
  301. data/spec/data/archive_file/test_archive.tar.gz +0 -0
  302. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  303. data/spec/data/lwrp/resources/bar.rb +2 -0
  304. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  305. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  306. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  307. data/spec/data/lwrp/resources/foo.rb +2 -0
  308. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  309. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  310. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  311. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  312. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  313. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  314. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  315. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  316. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  317. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  318. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  319. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  320. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  321. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  322. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  323. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  324. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  325. data/spec/data/trusted_certs/example.crt +29 -20
  326. data/spec/data/trusted_certs/example_no_cn.crt +30 -34
  327. data/spec/data/trusted_certs/opscode.pem +33 -54
  328. data/spec/functional/assets/yumrepo/repodata/01a3b-filelists.sqlite.bz2 +0 -0
  329. data/spec/functional/assets/yumrepo/repodata/401dc-filelists.xml.gz +0 -0
  330. data/spec/functional/assets/yumrepo/repodata/5dc1e-primary.sqlite.bz2 +0 -0
  331. data/spec/functional/assets/yumrepo/repodata/6bf96-other.xml.gz +0 -0
  332. data/spec/functional/assets/yumrepo/repodata/7c365-other.sqlite.bz2 +0 -0
  333. data/spec/functional/assets/yumrepo/repodata/dabe2-primary.xml.gz +0 -0
  334. data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
  335. data/spec/functional/dsl/registry_helper_spec.rb +2 -2
  336. data/spec/functional/mixin/from_file_spec.rb +1 -1
  337. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  338. data/spec/functional/resource/apt_package_spec.rb +1 -1
  339. data/spec/functional/resource/archive_file_spec.rb +88 -0
  340. data/spec/functional/resource/chocolatey_package_spec.rb +41 -20
  341. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  342. data/spec/functional/resource/dnf_package_spec.rb +997 -645
  343. data/spec/functional/resource/dpkg_package_spec.rb +16 -0
  344. data/spec/functional/resource/dsc_script_spec.rb +5 -5
  345. data/spec/functional/resource/group_spec.rb +39 -19
  346. data/spec/functional/resource/link_spec.rb +1 -1
  347. data/spec/functional/resource/macos_userdefaults_spec.rb +139 -0
  348. data/spec/functional/resource/powershell_package_source_spec.rb +5 -6
  349. data/spec/functional/resource/registry_spec.rb +89 -89
  350. data/spec/functional/resource/remote_file_spec.rb +1 -1
  351. data/spec/functional/resource/template_spec.rb +1 -1
  352. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  353. data/spec/functional/resource/windows_certificate_spec.rb +122 -37
  354. data/spec/functional/resource/windows_env_spec.rb +2 -2
  355. data/spec/functional/resource/windows_font_spec.rb +1 -2
  356. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  357. data/spec/functional/resource/windows_pagefile_spec.rb +125 -0
  358. data/spec/functional/resource/yum_package_spec.rb +1197 -451
  359. data/spec/functional/resource/zypper_package_spec.rb +17 -0
  360. data/spec/functional/shell_spec.rb +1 -0
  361. data/spec/functional/version_spec.rb +1 -1
  362. data/spec/functional/win32/registry_spec.rb +12 -9
  363. data/spec/integration/client/client_spec.rb +37 -23
  364. data/spec/integration/client/exit_code_spec.rb +1 -1
  365. data/spec/integration/client/fips_spec.rb +9 -1
  366. data/spec/integration/client/ipv6_spec.rb +1 -1
  367. data/spec/integration/client/open_ssl_spec.rb +20 -0
  368. data/spec/integration/compliance/compliance_spec.rb +62 -1
  369. data/spec/integration/ohai/ohai_spec.rb +7 -6
  370. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  371. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  372. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  373. data/spec/integration/recipes/notifies_spec.rb +15 -1
  374. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  375. data/spec/integration/recipes/recipe_dsl_spec.rb +10 -10
  376. data/spec/integration/recipes/resource_action_spec.rb +6 -6
  377. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  378. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  379. data/spec/spec_helper.rb +20 -18
  380. data/spec/support/chef_helpers.rb +1 -17
  381. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  382. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  383. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  384. data/spec/support/matchers/leak.rb +7 -9
  385. data/spec/support/platform_helpers.rb +14 -13
  386. data/spec/support/ruby_installer.rb +51 -0
  387. data/spec/support/shared/functional/execute_resource.rb +1 -1
  388. data/spec/support/shared/functional/file_resource.rb +2 -2
  389. data/spec/support/shared/functional/http.rb +9 -9
  390. data/spec/support/shared/integration/integration_helper.rb +0 -1
  391. data/spec/support/shared/unit/provider/file.rb +3 -9
  392. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +1 -1
  393. data/spec/support/shared/unit/script_resource.rb +2 -2
  394. data/spec/unit/application/base_spec.rb +40 -0
  395. data/spec/unit/application/solo_spec.rb +2 -2
  396. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  397. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  398. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  399. data/spec/unit/client_spec.rb +0 -16
  400. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  401. data/spec/unit/compliance/input_spec.rb +104 -0
  402. data/spec/unit/compliance/profile_spec.rb +120 -0
  403. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  404. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +21 -1
  405. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +4 -3
  406. data/spec/unit/compliance/runner_spec.rb +137 -6
  407. data/spec/unit/compliance/waiver_spec.rb +104 -0
  408. data/spec/unit/data_bag_item_spec.rb +1 -6
  409. data/spec/unit/dsl/reboot_pending_spec.rb +3 -3
  410. data/spec/unit/dsl/registry_helper_spec.rb +7 -7
  411. data/spec/unit/dsl/render_helpers_spec.rb +102 -0
  412. data/spec/unit/dsl/secret_spec.rb +175 -0
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/formatters/doc_spec.rb +1 -1
  415. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
  416. data/spec/unit/handler_spec.rb +8 -2
  417. data/spec/unit/http/basic_client_spec.rb +30 -0
  418. data/spec/unit/http_spec.rb +8 -2
  419. data/spec/unit/lwrp_spec.rb +3 -3
  420. data/spec/unit/mixin/default_paths_spec.rb +1 -1
  421. data/spec/unit/mixin/homebrew_user_spec.rb +30 -7
  422. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  423. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  424. data/spec/unit/mixin/powershell_exec_spec.rb +9 -9
  425. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  426. data/spec/unit/mixin/securable_spec.rb +3 -3
  427. data/spec/unit/mixin/why_run_spec.rb +53 -0
  428. data/spec/unit/node/attribute_spec.rb +1 -1
  429. data/spec/unit/node_spec.rb +78 -0
  430. data/spec/unit/org_group_spec.rb +45 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  432. data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
  433. data/spec/unit/policy_builder/policyfile_spec.rb +133 -55
  434. data/spec/unit/property_spec.rb +23 -22
  435. data/spec/unit/provider/apt_update_spec.rb +3 -1
  436. data/spec/unit/provider/cron_spec.rb +46 -1
  437. data/spec/unit/provider/dsc_script_spec.rb +8 -8
  438. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  439. data/spec/unit/provider/group/groupadd_spec.rb +1 -0
  440. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  441. data/spec/unit/provider/group/pw_spec.rb +2 -2
  442. data/spec/unit/provider/group/usermod_spec.rb +4 -4
  443. data/spec/unit/provider/group_spec.rb +1 -1
  444. data/spec/unit/provider/ifconfig/aix_spec.rb +14 -14
  445. data/spec/unit/provider/ifconfig/debian_spec.rb +1 -1
  446. data/spec/unit/provider/ifconfig/redhat_spec.rb +1 -1
  447. data/spec/unit/provider/ifconfig_spec.rb +5 -3
  448. data/spec/unit/provider/link_spec.rb +14 -8
  449. data/spec/unit/provider/mount/aix_spec.rb +1 -1
  450. data/spec/unit/provider/mount/linux_spec.rb +16 -3
  451. data/spec/unit/provider/package/apt_spec.rb +84 -18
  452. data/spec/unit/provider/package/bff_spec.rb +1 -0
  453. data/spec/unit/provider/package/chocolatey_spec.rb +20 -3
  454. data/spec/unit/provider/package/deb_spec.rb +3 -3
  455. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  456. data/spec/unit/provider/package/powershell_spec.rb +114 -114
  457. data/spec/unit/provider/package/rubygems_spec.rb +27 -36
  458. data/spec/unit/provider/package/solaris_spec.rb +1 -0
  459. data/spec/unit/provider/package/windows_spec.rb +1 -1
  460. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  461. data/spec/unit/provider/registry_key_spec.rb +4 -4
  462. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +3 -3
  463. data/spec/unit/provider/remote_file/http_spec.rb +10 -0
  464. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  465. data/spec/unit/provider/service/debian_service_spec.rb +2 -0
  466. data/spec/unit/provider/service/gentoo_service_spec.rb +3 -2
  467. data/spec/unit/provider/service/macosx_spec.rb +3 -2
  468. data/spec/unit/provider/service/redhat_spec.rb +4 -1
  469. data/spec/unit/provider/service/simple_service_spec.rb +6 -4
  470. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  471. data/spec/unit/provider/service/upstart_service_spec.rb +3 -32
  472. data/spec/unit/provider/service/windows_spec.rb +7 -7
  473. data/spec/unit/provider/subversion_spec.rb +6 -6
  474. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  475. data/spec/unit/provider/template_spec.rb +2 -2
  476. data/spec/unit/provider/user/linux_spec.rb +55 -0
  477. data/spec/unit/provider/user/solaris_spec.rb +1 -1
  478. data/spec/unit/provider/user_spec.rb +2 -0
  479. data/spec/unit/provider/windows_env_spec.rb +1 -1
  480. data/spec/unit/provider/zypper_repository_spec.rb +6 -13
  481. data/spec/unit/provider_spec.rb +23 -8
  482. data/spec/unit/resource/archive_file_spec.rb +400 -2
  483. data/spec/unit/resource/chef_client_config_spec.rb +8 -0
  484. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +69 -0
  485. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
  486. data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
  487. data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
  488. data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
  489. data/spec/unit/resource/conditional_spec.rb +4 -4
  490. data/spec/unit/resource/dpkg_package_spec.rb +12 -0
  491. data/spec/unit/resource/file/verification/json_spec.rb +72 -0
  492. data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
  493. data/spec/unit/resource/inspec_input_spec.rb +300 -0
  494. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  495. data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
  496. data/spec/unit/resource/kernel_module_spec.rb +2 -1
  497. data/spec/unit/resource/macos_user_defaults_spec.rb +36 -96
  498. data/spec/unit/resource/powershell_package_source_spec.rb +63 -62
  499. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  500. data/spec/unit/resource/registry_key_spec.rb +10 -10
  501. data/spec/unit/resource/rhsm_register_spec.rb +42 -0
  502. data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
  503. data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
  504. data/spec/unit/resource/windows_defender_spec.rb +71 -0
  505. data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
  506. data/spec/unit/resource/windows_firewall_rule_spec.rb +14 -9
  507. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  508. data/spec/unit/resource/windows_task_spec.rb +4 -4
  509. data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
  510. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  511. data/spec/unit/resource_reporter_spec.rb +2 -2
  512. data/spec/unit/resource_spec.rb +56 -23
  513. data/spec/unit/run_context_spec.rb +16 -0
  514. data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
  515. data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
  516. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +149 -0
  517. data/spec/unit/secret_fetcher/hashi_vault_spec.rb +126 -0
  518. data/spec/unit/secret_fetcher_spec.rb +82 -0
  519. data/spec/unit/user_spec.rb +1 -1
  520. data/spec/unit/user_v1_spec.rb +6 -4
  521. data/spec/unit/util/backup_spec.rb +1 -1
  522. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +2 -2
  523. data/spec/unit/win32/registry_spec.rb +3 -3
  524. data/tasks/rspec.rb +10 -6
  525. metadata +181 -532
  526. data/bin/knife +0 -24
  527. data/lib/chef/application/knife.rb +0 -234
  528. data/lib/chef/application/windows_service.rb +0 -338
  529. data/lib/chef/application/windows_service_manager.rb +0 -205
  530. data/lib/chef/chef_fs/knife.rb +0 -160
  531. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  532. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  533. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  534. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  535. data/lib/chef/knife/acl_add.rb +0 -57
  536. data/lib/chef/knife/acl_base.rb +0 -183
  537. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  538. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  539. data/lib/chef/knife/acl_remove.rb +0 -62
  540. data/lib/chef/knife/acl_show.rb +0 -56
  541. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  542. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  543. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  544. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  545. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  546. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  547. data/lib/chef/knife/bootstrap.rb +0 -1192
  548. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  549. data/lib/chef/knife/client_create.rb +0 -101
  550. data/lib/chef/knife/client_delete.rb +0 -62
  551. data/lib/chef/knife/client_edit.rb +0 -52
  552. data/lib/chef/knife/client_key_create.rb +0 -73
  553. data/lib/chef/knife/client_key_delete.rb +0 -80
  554. data/lib/chef/knife/client_key_edit.rb +0 -83
  555. data/lib/chef/knife/client_key_list.rb +0 -73
  556. data/lib/chef/knife/client_key_show.rb +0 -80
  557. data/lib/chef/knife/client_list.rb +0 -41
  558. data/lib/chef/knife/client_reregister.rb +0 -58
  559. data/lib/chef/knife/config_get.rb +0 -39
  560. data/lib/chef/knife/config_get_profile.rb +0 -37
  561. data/lib/chef/knife/config_list.rb +0 -139
  562. data/lib/chef/knife/config_list_profiles.rb +0 -37
  563. data/lib/chef/knife/config_show.rb +0 -127
  564. data/lib/chef/knife/config_use.rb +0 -61
  565. data/lib/chef/knife/config_use_profile.rb +0 -47
  566. data/lib/chef/knife/configure.rb +0 -150
  567. data/lib/chef/knife/configure_client.rb +0 -48
  568. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  569. data/lib/chef/knife/cookbook_delete.rb +0 -151
  570. data/lib/chef/knife/cookbook_download.rb +0 -142
  571. data/lib/chef/knife/cookbook_list.rb +0 -47
  572. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  573. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  574. data/lib/chef/knife/cookbook_show.rb +0 -98
  575. data/lib/chef/knife/cookbook_upload.rb +0 -292
  576. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  577. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  578. data/lib/chef/knife/core/formatting_options.rb +0 -49
  579. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  580. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  581. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  582. data/lib/chef/knife/core/node_editor.rb +0 -130
  583. data/lib/chef/knife/core/node_presenter.rb +0 -133
  584. data/lib/chef/knife/core/object_loader.rb +0 -115
  585. data/lib/chef/knife/core/status_presenter.rb +0 -147
  586. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  587. data/lib/chef/knife/core/text_formatter.rb +0 -85
  588. data/lib/chef/knife/core/ui.rb +0 -338
  589. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  590. data/lib/chef/knife/data_bag_create.rb +0 -81
  591. data/lib/chef/knife/data_bag_delete.rb +0 -49
  592. data/lib/chef/knife/data_bag_edit.rb +0 -74
  593. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  594. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  595. data/lib/chef/knife/data_bag_show.rb +0 -69
  596. data/lib/chef/knife/delete.rb +0 -125
  597. data/lib/chef/knife/deps.rb +0 -156
  598. data/lib/chef/knife/diff.rb +0 -83
  599. data/lib/chef/knife/download.rb +0 -84
  600. data/lib/chef/knife/edit.rb +0 -88
  601. data/lib/chef/knife/environment_compare.rb +0 -128
  602. data/lib/chef/knife/environment_create.rb +0 -52
  603. data/lib/chef/knife/environment_delete.rb +0 -44
  604. data/lib/chef/knife/environment_edit.rb +0 -44
  605. data/lib/chef/knife/environment_from_file.rb +0 -84
  606. data/lib/chef/knife/environment_list.rb +0 -41
  607. data/lib/chef/knife/environment_show.rb +0 -47
  608. data/lib/chef/knife/exec.rb +0 -99
  609. data/lib/chef/knife/group_add.rb +0 -55
  610. data/lib/chef/knife/group_create.rb +0 -49
  611. data/lib/chef/knife/group_destroy.rb +0 -53
  612. data/lib/chef/knife/group_remove.rb +0 -56
  613. data/lib/chef/knife/group_show.rb +0 -49
  614. data/lib/chef/knife/key_create.rb +0 -112
  615. data/lib/chef/knife/key_create_base.rb +0 -50
  616. data/lib/chef/knife/key_delete.rb +0 -55
  617. data/lib/chef/knife/key_edit.rb +0 -118
  618. data/lib/chef/knife/key_edit_base.rb +0 -55
  619. data/lib/chef/knife/key_list.rb +0 -90
  620. data/lib/chef/knife/key_list_base.rb +0 -45
  621. data/lib/chef/knife/key_show.rb +0 -53
  622. data/lib/chef/knife/list.rb +0 -177
  623. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  624. data/lib/chef/knife/node_create.rb +0 -47
  625. data/lib/chef/knife/node_delete.rb +0 -46
  626. data/lib/chef/knife/node_edit.rb +0 -70
  627. data/lib/chef/knife/node_environment_set.rb +0 -53
  628. data/lib/chef/knife/node_from_file.rb +0 -51
  629. data/lib/chef/knife/node_list.rb +0 -44
  630. data/lib/chef/knife/node_policy_set.rb +0 -79
  631. data/lib/chef/knife/node_run_list_add.rb +0 -104
  632. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  633. data/lib/chef/knife/node_run_list_set.rb +0 -66
  634. data/lib/chef/knife/node_show.rb +0 -63
  635. data/lib/chef/knife/null.rb +0 -12
  636. data/lib/chef/knife/raw.rb +0 -123
  637. data/lib/chef/knife/rehash.rb +0 -50
  638. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  639. data/lib/chef/knife/role_create.rb +0 -53
  640. data/lib/chef/knife/role_delete.rb +0 -46
  641. data/lib/chef/knife/role_edit.rb +0 -45
  642. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  643. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  644. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  645. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  646. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  647. data/lib/chef/knife/role_from_file.rb +0 -51
  648. data/lib/chef/knife/role_list.rb +0 -42
  649. data/lib/chef/knife/role_run_list_add.rb +0 -87
  650. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  651. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  652. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  653. data/lib/chef/knife/role_run_list_set.rb +0 -69
  654. data/lib/chef/knife/role_show.rb +0 -48
  655. data/lib/chef/knife/search.rb +0 -194
  656. data/lib/chef/knife/serve.rb +0 -65
  657. data/lib/chef/knife/show.rb +0 -72
  658. data/lib/chef/knife/ssh.rb +0 -645
  659. data/lib/chef/knife/ssl_check.rb +0 -284
  660. data/lib/chef/knife/ssl_fetch.rb +0 -161
  661. data/lib/chef/knife/status.rb +0 -95
  662. data/lib/chef/knife/supermarket_download.rb +0 -121
  663. data/lib/chef/knife/supermarket_install.rb +0 -192
  664. data/lib/chef/knife/supermarket_list.rb +0 -76
  665. data/lib/chef/knife/supermarket_search.rb +0 -53
  666. data/lib/chef/knife/supermarket_share.rb +0 -166
  667. data/lib/chef/knife/supermarket_show.rb +0 -66
  668. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  669. data/lib/chef/knife/tag_create.rb +0 -52
  670. data/lib/chef/knife/tag_delete.rb +0 -60
  671. data/lib/chef/knife/tag_list.rb +0 -47
  672. data/lib/chef/knife/upload.rb +0 -86
  673. data/lib/chef/knife/user_create.rb +0 -107
  674. data/lib/chef/knife/user_delete.rb +0 -44
  675. data/lib/chef/knife/user_dissociate.rb +0 -42
  676. data/lib/chef/knife/user_edit.rb +0 -52
  677. data/lib/chef/knife/user_invite_add.rb +0 -43
  678. data/lib/chef/knife/user_invite_list.rb +0 -34
  679. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  680. data/lib/chef/knife/user_key_create.rb +0 -73
  681. data/lib/chef/knife/user_key_delete.rb +0 -80
  682. data/lib/chef/knife/user_key_edit.rb +0 -83
  683. data/lib/chef/knife/user_key_list.rb +0 -73
  684. data/lib/chef/knife/user_key_show.rb +0 -80
  685. data/lib/chef/knife/user_list.rb +0 -42
  686. data/lib/chef/knife/user_reregister.rb +0 -59
  687. data/lib/chef/knife/user_show.rb +0 -48
  688. data/lib/chef/knife/xargs.rb +0 -282
  689. data/lib/chef/knife/yaml_convert.rb +0 -91
  690. data/lib/chef/knife.rb +0 -665
  691. data/lib/chef/provider/group/suse.rb +0 -82
  692. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  693. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  694. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  695. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  696. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  697. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  698. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  699. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  700. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  701. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  702. data/spec/functional/knife/configure_spec.rb +0 -33
  703. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  704. data/spec/functional/knife/exec_spec.rb +0 -55
  705. data/spec/functional/knife/rehash_spec.rb +0 -39
  706. data/spec/functional/knife/smoke_test.rb +0 -42
  707. data/spec/functional/knife/ssh_spec.rb +0 -352
  708. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  709. data/spec/functional/resource/windows_service_spec.rb +0 -105
  710. data/spec/functional/win32/service_manager_spec.rb +0 -220
  711. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  712. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  713. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  714. data/spec/integration/knife/chefignore_spec.rb +0 -301
  715. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  716. data/spec/integration/knife/client_create_spec.rb +0 -70
  717. data/spec/integration/knife/client_delete_spec.rb +0 -64
  718. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  719. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  720. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  721. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  722. data/spec/integration/knife/client_list_spec.rb +0 -49
  723. data/spec/integration/knife/client_show_spec.rb +0 -37
  724. data/spec/integration/knife/common_options_spec.rb +0 -174
  725. data/spec/integration/knife/config_list_spec.rb +0 -220
  726. data/spec/integration/knife/config_show_spec.rb +0 -192
  727. data/spec/integration/knife/config_use_spec.rb +0 -198
  728. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  729. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  730. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  731. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  732. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  733. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  734. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  735. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  736. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  737. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  738. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  739. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  740. data/spec/integration/knife/delete_spec.rb +0 -1018
  741. data/spec/integration/knife/deps_spec.rb +0 -703
  742. data/spec/integration/knife/diff_spec.rb +0 -605
  743. data/spec/integration/knife/download_spec.rb +0 -1336
  744. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  745. data/spec/integration/knife/environment_create_spec.rb +0 -41
  746. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  747. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  748. data/spec/integration/knife/environment_list_spec.rb +0 -42
  749. data/spec/integration/knife/environment_show_spec.rb +0 -77
  750. data/spec/integration/knife/list_spec.rb +0 -1060
  751. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  752. data/spec/integration/knife/node_create_spec.rb +0 -47
  753. data/spec/integration/knife/node_delete_spec.rb +0 -48
  754. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  755. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  756. data/spec/integration/knife/node_list_spec.rb +0 -45
  757. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  758. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  759. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  760. data/spec/integration/knife/node_show_spec.rb +0 -36
  761. data/spec/integration/knife/raw_spec.rb +0 -297
  762. data/spec/integration/knife/redirection_spec.rb +0 -64
  763. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  764. data/spec/integration/knife/role_create_spec.rb +0 -41
  765. data/spec/integration/knife/role_delete_spec.rb +0 -48
  766. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  767. data/spec/integration/knife/role_list_spec.rb +0 -45
  768. data/spec/integration/knife/role_show_spec.rb +0 -51
  769. data/spec/integration/knife/search_node_spec.rb +0 -40
  770. data/spec/integration/knife/serve_spec.rb +0 -92
  771. data/spec/integration/knife/show_spec.rb +0 -197
  772. data/spec/integration/knife/upload_spec.rb +0 -1616
  773. data/spec/support/shared/functional/win32_service.rb +0 -57
  774. data/spec/unit/application/knife_spec.rb +0 -241
  775. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  776. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  777. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  778. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  779. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  780. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  781. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  782. data/spec/unit/knife/client_create_spec.rb +0 -169
  783. data/spec/unit/knife/client_delete_spec.rb +0 -99
  784. data/spec/unit/knife/client_edit_spec.rb +0 -53
  785. data/spec/unit/knife/client_list_spec.rb +0 -34
  786. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  787. data/spec/unit/knife/client_show_spec.rb +0 -52
  788. data/spec/unit/knife/configure_client_spec.rb +0 -81
  789. data/spec/unit/knife/configure_spec.rb +0 -190
  790. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  791. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  792. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  793. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  794. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  795. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  796. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  797. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  798. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  799. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  800. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  801. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  802. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  803. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  804. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  805. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  806. data/spec/unit/knife/core/ui_spec.rb +0 -656
  807. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  808. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  809. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  810. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  811. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  812. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  813. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  814. data/spec/unit/knife/environment_create_spec.rb +0 -91
  815. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  816. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  817. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  818. data/spec/unit/knife/environment_list_spec.rb +0 -54
  819. data/spec/unit/knife/environment_show_spec.rb +0 -52
  820. data/spec/unit/knife/key_create_spec.rb +0 -223
  821. data/spec/unit/knife/key_delete_spec.rb +0 -133
  822. data/spec/unit/knife/key_edit_spec.rb +0 -264
  823. data/spec/unit/knife/key_helper.rb +0 -74
  824. data/spec/unit/knife/key_list_spec.rb +0 -216
  825. data/spec/unit/knife/key_show_spec.rb +0 -126
  826. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  827. data/spec/unit/knife/node_delete_spec.rb +0 -77
  828. data/spec/unit/knife/node_edit_spec.rb +0 -116
  829. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  830. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  831. data/spec/unit/knife/node_list_spec.rb +0 -62
  832. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  833. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  834. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  835. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  836. data/spec/unit/knife/node_show_spec.rb +0 -65
  837. data/spec/unit/knife/raw_spec.rb +0 -43
  838. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  839. data/spec/unit/knife/role_create_spec.rb +0 -80
  840. data/spec/unit/knife/role_delete_spec.rb +0 -67
  841. data/spec/unit/knife/role_edit_spec.rb +0 -77
  842. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  843. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  844. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  845. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  846. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  847. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  848. data/spec/unit/knife/role_list_spec.rb +0 -54
  849. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  850. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  851. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  852. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  853. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  854. data/spec/unit/knife/role_show_spec.rb +0 -59
  855. data/spec/unit/knife/ssh_spec.rb +0 -403
  856. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  857. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  858. data/spec/unit/knife/status_spec.rb +0 -112
  859. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  860. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  861. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  862. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  863. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  864. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  865. data/spec/unit/knife/tag_create_spec.rb +0 -23
  866. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  867. data/spec/unit/knife/tag_list_spec.rb +0 -23
  868. data/spec/unit/knife/user_create_spec.rb +0 -184
  869. data/spec/unit/knife/user_delete_spec.rb +0 -46
  870. data/spec/unit/knife/user_edit_spec.rb +0 -48
  871. data/spec/unit/knife/user_list_spec.rb +0 -36
  872. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  873. data/spec/unit/knife/user_show_spec.rb +0 -46
  874. data/spec/unit/knife_spec.rb +0 -634
  875. data/spec/unit/provider/group/suse_spec.rb +0 -90
  876. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  877. data/spec/unit/windows_service_spec.rb +0 -118
  878. /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.nupkg → test-A.1.0.0.nupkg} +0 -0
  879. /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.nupkg → test-A.1.5.0.nupkg} +0 -0
  880. /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.nupkg → test-A.2.0.0.nupkg} +0 -0
  881. /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.nupkg → test-B.1.0.0.nupkg} +0 -0
@@ -9,7 +9,7 @@ class NoActionJackson < Chef::Resource
9
9
  @foo
10
10
  end
11
11
 
12
- class <<self
12
+ class << self
13
13
  attr_accessor :action_was
14
14
  end
15
15
  end
@@ -17,7 +17,7 @@ end
17
17
  class WeirdActionJackson < Chef::Resource
18
18
  provides :weird_action_jackson
19
19
 
20
- class <<self
20
+ class << self
21
21
  attr_accessor :action_was
22
22
  end
23
23
 
@@ -176,7 +176,7 @@ module ResourceActionSpec
176
176
  @blarghle
177
177
  end
178
178
 
179
- class <<self
179
+ class << self
180
180
  attr_accessor :ran_action
181
181
  attr_accessor :succeeded
182
182
  attr_accessor :ruby_block_converged
@@ -284,7 +284,7 @@ module ResourceActionSpec
284
284
  @bar = "#{value}alope" if value
285
285
  @bar
286
286
  end
287
- class <<self
287
+ class << self
288
288
  attr_accessor :load_current_resource_ran
289
289
  attr_accessor :jackalope_ran
290
290
  end
@@ -354,8 +354,8 @@ module ResourceActionSpec
354
354
  end
355
355
 
356
356
  it "allows overridden action to have a description separate from the action defined in the base resource" do
357
- expect(ActionJackson.action_description(:test1)).to eql "Original description"
358
- expect(ActionJackalope.action_description(:test1)).to eql "An old action with a new description"
357
+ expect(ActionJackson.new("ActionJackson", nil).action_description(:test1)).to eql "Original description"
358
+ expect(ActionJackalope.new("ActionJackalope", nil).action_description(:test1)).to eql "An old action with a new description"
359
359
  end
360
360
 
361
361
  it "non-overridden actions run and can access overridden and non-overridden variables (but not necessarily new ones)" do
@@ -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", __dir__) }
9
+ let(:chef_dir) { File.expand_path("../../..", __dir__) }
10
10
 
11
11
  let(:chef_client) { "bundle exec chef-client --minimal-ohai" }
12
12
 
@@ -874,4 +874,74 @@ describe "Unified Mode" do
874
874
  result.error!
875
875
  end
876
876
  end
877
+
878
+ when_the_repository "has a resource that uses edit_resource to create a subresource" do
879
+ before do
880
+ directory "cookbooks/x" do
881
+ file "recipes/default.rb", <<~EOM
882
+ my_resource "doit"
883
+ EOM
884
+
885
+ file "resources/my_resource.rb", <<~EOM
886
+ unified_mode true
887
+ provides :my_resource
888
+
889
+ action :doit do
890
+ edit_resource(:log, "name") do
891
+ message "GOOD"
892
+ level :warn
893
+ end
894
+ end
895
+ EOM
896
+ end
897
+ end
898
+
899
+ it "recipes should still have a compile/converge mode" do
900
+ file "config/client.rb", <<~EOM
901
+ local_mode true
902
+ cookbook_path "#{path_to("cookbooks")}"
903
+ log_level :warn
904
+ EOM
905
+
906
+ result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
907
+ # in recipe mode we should still run normally with a compile/converge mode
908
+ expect(result.stdout).to include("GOOD")
909
+ result.error!
910
+ end
911
+ end
912
+
913
+ when_the_repository "has a resource that uses find_resource to create a subresource" do
914
+ before do
915
+ directory "cookbooks/x" do
916
+ file "recipes/default.rb", <<~EOM
917
+ my_resource "doit"
918
+ EOM
919
+
920
+ file "resources/my_resource.rb", <<~EOM
921
+ unified_mode true
922
+ provides :my_resource
923
+
924
+ action :doit do
925
+ find_resource(:log, "name") do
926
+ message "GOOD"
927
+ level :warn
928
+ end
929
+ end
930
+ EOM
931
+ end
932
+ end
933
+
934
+ it "recipes should still have a compile/converge mode" do
935
+ file "config/client.rb", <<~EOM
936
+ local_mode true
937
+ cookbook_path "#{path_to("cookbooks")}"
938
+ log_level :warn
939
+ EOM
940
+
941
+ result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" --no-color -F doc -o 'x::default'", cwd: chef_dir)
942
+ # in recipe mode we should still run normally with a compile/converge mode
943
+ expect(result.stdout).to include("GOOD")
944
+ result.error!
945
+ end
946
+ end
877
947
  end
@@ -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", __dir__) }
25
+ let(:chef_dir) { File.expand_path("../../..", __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
@@ -37,6 +37,7 @@ describe "notifying_block" do
37
37
  end
38
38
  EOM
39
39
  file "resources/thing.rb", <<-EOM
40
+ unified_mode true
40
41
  provides :thing
41
42
  use "shared_properties"
42
43
  action_class do
@@ -80,6 +81,8 @@ describe "notifying_block" do
80
81
  EOM
81
82
  # this tests relative pathing, including the underscore and including the trailing .rb all work
82
83
  file "resources/thing.rb", <<-EOM
84
+ unified_mode true
85
+
83
86
  provides :thing
84
87
  use "../partials/_shared_properties.rb"
85
88
  action_class do
data/spec/spec_helper.rb CHANGED
@@ -24,6 +24,9 @@ module Shell
24
24
  IRB = nil unless defined? IRB
25
25
  end
26
26
 
27
+ # show the deprecation warnings
28
+ Warning[:deprecated] = true
29
+
27
30
  $LOAD_PATH.unshift File.expand_path("..", __dir__)
28
31
 
29
32
  $LOAD_PATH.unshift File.expand_path("../chef-config/lib", __dir__)
@@ -35,12 +38,6 @@ require "rexml/document"
35
38
  require "webmock/rspec"
36
39
 
37
40
  require "chef"
38
- require "chef/knife"
39
-
40
- Dir["lib/chef/knife/**/*.rb"]
41
- .map { |f| f.gsub("lib/", "") }
42
- .map { |f| f.gsub(/\.rb$/, "") }
43
- .each { |f| require f }
44
41
 
45
42
  require "chef/resource_resolver"
46
43
  require "chef/provider_resolver"
@@ -71,6 +68,7 @@ end
71
68
  require "spec/support/local_gems" if File.exist?(File.join(File.dirname(__FILE__), "support", "local_gems.rb"))
72
69
 
73
70
  # Explicitly require spec helpers that need to load first
71
+ require "spec/support/ruby_installer"
74
72
  require "spec/support/platform_helpers"
75
73
  require "spec/support/shared/unit/mock_shellout"
76
74
 
@@ -80,8 +78,9 @@ require "spec/support/recipe_dsl_helper"
80
78
  # Excludes support/platforms by default
81
79
  # Do not change the gsub.
82
80
  Dir["spec/support/**/*.rb"]
83
- .reject { |f| f =~ %r{^spec/support/platforms} }
84
- .reject { |f| f =~ %r{^spec/support/pedant} }
81
+ .grep_v(%r{^spec/support/platforms})
82
+ .grep_v(%r{^spec/support/pedant})
83
+ .grep_v(%r{^spec/support/shared/integration/knife_support})
85
84
  .map { |f| f.gsub(/.rb$/, "") }
86
85
  .map { |f| f.gsub(%r{spec/}, "") }
87
86
  .each { |f| require f }
@@ -139,16 +138,13 @@ RSpec.configure do |config|
139
138
 
140
139
  config.filter_run_excluding skip_buildkite: true if ENV["BUILDKITE"]
141
140
 
142
- config.filter_run_excluding fips_mode: !fips_mode_build? unless opensuse?
143
- # RubyDistros OpenSUSE docker images have a broken fips
144
- config.filter_run_excluding :fips_mode if opensuse?
141
+ config.filter_run_excluding fips_mode: !fips_mode_build?
145
142
 
143
+ config.filter_run_excluding not_supported_on_freebsd_gte_12_3: true if freebsd_gte_12_3?
146
144
  config.filter_run_excluding windows_only: true unless windows?
147
145
  config.filter_run_excluding not_supported_on_windows: true if windows?
148
146
  config.filter_run_excluding not_supported_on_macos: true if macos?
149
147
  config.filter_run_excluding macos_only: true unless macos?
150
- config.filter_run_excluding macos_1013: true unless macos_1013?
151
- config.filter_run_excluding macos_gte_1014: true unless macos_gte_1014?
152
148
  config.filter_run_excluding not_macos_gte_11: true if macos_gte_11?
153
149
  config.filter_run_excluding not_supported_on_aix: true if aix?
154
150
  config.filter_run_excluding not_supported_on_solaris: true if solaris?
@@ -164,16 +160,14 @@ RSpec.configure do |config|
164
160
  config.filter_run_excluding windows_powershell_no_dsc_only: true if windows_powershell_dsc?
165
161
  config.filter_run_excluding windows_domain_joined_only: true unless windows_domain_joined?
166
162
  config.filter_run_excluding windows_not_domain_joined_only: true if windows_domain_joined?
167
- # We think this line was causing rspec tests to not run on the Jenkins windows
168
- # testers. If we ever fix it we should restore it.
169
- # config.filter_run_excluding :windows_service_requires_assign_token => true if !STDOUT.isatty && !windows_user_right?("SeAssignPrimaryTokenPrivilege")
170
- config.filter_run_excluding windows_service_requires_assign_token: true
163
+ config.filter_run_excluding windows_service_requires_assign_token: true if !STDOUT.isatty && !windows_user_right?("SeAssignPrimaryTokenPrivilege")
171
164
  config.filter_run_excluding solaris_only: true unless solaris?
172
- config.filter_run_excluding system_windows_service_gem_only: true unless system_windows_service_gem?
173
165
  config.filter_run_excluding unix_only: true unless unix?
174
166
  config.filter_run_excluding linux_only: true unless linux?
175
167
  config.filter_run_excluding aix_only: true unless aix?
176
168
  config.filter_run_excluding suse_only: true unless suse?
169
+ # These aren't valid on verify pipeline because the docker container brings its own OpenSSL
170
+ config.filter_run_excluding openssl_version_check: true if ENV["BUILDKITE_PIPELINE_SLUG"] =~ /verify/
177
171
  config.filter_run_excluding opensuse: true unless opensuse?
178
172
  config.filter_run_excluding debian_family_only: true unless debian_family?
179
173
  config.filter_run_excluding supports_cloexec: true unless supports_cloexec?
@@ -243,6 +237,14 @@ RSpec.configure do |config|
243
237
 
244
238
  Chef.reset!
245
239
 
240
+ # Hack warning:
241
+ #
242
+ # Something across gem_installer_spec and mixlib_cli specs are polluting gem state so that the 'unmockening' test in rubygems_spec fails.
243
+ # This works around that until we can understand root cause.
244
+ #
245
+ # To explore the minimal test case around that and see more detailed notes, see branch `mp/broken-gems`
246
+ Gem.clear_paths
247
+
246
248
  Chef::ChefFS::FileSystemCache.instance.reset!
247
249
 
248
250
  Chef::Config.reset
@@ -40,26 +40,10 @@ def make_tmpname(prefix_suffix, n = nil)
40
40
  path << suffix
41
41
  end
42
42
 
43
- # This is a helper to determine if the ruby in the PATH contains
44
- # win32/service gem. windows_service_manager tests create a windows
45
- # service that starts with the system ruby and requires this gem.
46
- def system_windows_service_gem?
47
- windows_service_gem_check_command = %{ruby -r "win32/daemon" -e ":noop" > #{File::NULL} 2>&1}
48
- if defined?(Bundler)
49
- Bundler.with_unbundled_env do
50
- # This returns true if the gem can be loaded
51
- system(windows_service_gem_check_command)
52
- end
53
- else
54
- # This returns true if the gem can be loaded
55
- system(windows_service_gem_check_command)
56
- end
57
- end
58
-
59
43
  # This is a helper to canonicalize paths that we're using in the file
60
44
  # tests.
61
45
  def canonicalize_path(path)
62
- windows? ? path.tr("/", '\\') : path
46
+ windows? ? path.tr("/", "\\") : path
63
47
  end
64
48
 
65
49
  # Makes a temp directory with a canonical path on any platform.
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "chef/knife"
20
19
  require "chef/json_compat"
21
20
 
22
21
  class Chef
@@ -15,7 +15,6 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require "chef/knife"
19
18
  require "chef/json_compat"
20
19
 
21
20
  class Chef
@@ -16,7 +16,6 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require "chef/knife"
20
19
  require "chef/json_compat"
21
20
 
22
21
  class Chef
@@ -59,15 +59,13 @@ module Matchers
59
59
  end
60
60
 
61
61
  def profiler
62
- @profiler ||= begin
63
- if ChefUtils.windows?
64
- require File.join(__dir__, "..", "platforms", "prof", "win32")
65
- RSpec::Prof::Win32::Profiler.new
66
- else
67
- require File.join(__dir__, "..", "prof", "gc")
68
- RSpec::Prof::GC::Profiler.new
69
- end
70
- end
62
+ @profiler ||= if ChefUtils.windows?
63
+ require File.join(__dir__, "..", "platforms", "prof", "win32")
64
+ RSpec::Prof::Win32::Profiler.new
65
+ else
66
+ require File.join(__dir__, "..", "prof", "gc")
67
+ RSpec::Prof::GC::Profiler.new
68
+ end
71
69
  end
72
70
 
73
71
  end
@@ -2,6 +2,7 @@ require "fcntl"
2
2
  require "chef/mixin/shell_out"
3
3
  require "ohai/mixin/http_helper"
4
4
  require "ohai/mixin/gce_metadata"
5
+ require "spec/support/chef_helpers"
5
6
 
6
7
  class ShellHelpers
7
8
  extend Chef::Mixin::ShellOut
@@ -92,14 +93,6 @@ def windows_user_right?(right)
92
93
  Chef::ReservedNames::Win32::Security.get_account_right(ENV["USERNAME"]).include?(right)
93
94
  end
94
95
 
95
- def macos_1013?
96
- macos? && Gem::Requirement.new("~> 10.13.0").satisfied_by?(Gem::Version.new(ohai[:platform_version]))
97
- end
98
-
99
- def macos_gte_1014?
100
- macos? && Gem::Requirement.new(">= 10.14").satisfied_by?(Gem::Version.new(ohai[:platform_version]))
101
- end
102
-
103
96
  # detects if the hardware is 64-bit (evaluates to true in "WOW64" mode in a 32-bit app on a 64-bit system)
104
97
  def windows64?
105
98
  windows? && ( ENV["PROCESSOR_ARCHITECTURE"] == "AMD64" || ENV["PROCESSOR_ARCHITEW6432"] == "AMD64" )
@@ -134,6 +127,10 @@ def freebsd?
134
127
  RUBY_PLATFORM.include?("freebsd")
135
128
  end
136
129
 
130
+ def freebsd_gte_12_3?
131
+ RUBY_PLATFORM.include?("freebsd") && !!(ohai[:platform_version].to_f >= 12.3)
132
+ end
133
+
137
134
  def intel_64bit?
138
135
  !!(ohai[:kernel][:machine] == "x86_64")
139
136
  end
@@ -170,12 +167,16 @@ def aix?
170
167
  RUBY_PLATFORM.include?("aix")
171
168
  end
172
169
 
170
+ def amazon_linux?
171
+ ohai[:platform_family] == "amazon"
172
+ end
173
+
173
174
  def wpar?
174
175
  !((ohai[:virtualization] || {})[:wpar_no].nil?)
175
176
  end
176
177
 
177
178
  def supports_cloexec?
178
- Fcntl.const_defined?("F_SETFD") && Fcntl.const_defined?("FD_CLOEXEC")
179
+ Fcntl.const_defined?(:F_SETFD) && Fcntl.const_defined?(:FD_CLOEXEC)
179
180
  end
180
181
 
181
182
  def selinux_enabled?
@@ -222,14 +223,14 @@ def aes_256_gcm?
222
223
  OpenSSL::Cipher.ciphers.include?("aes-256-gcm")
223
224
  end
224
225
 
225
- def fips?
226
- ENV["CHEF_FIPS"] == "1"
227
- end
228
-
229
226
  def fips_mode_build?
230
227
  OpenSSL::OPENSSL_FIPS
231
228
  end
232
229
 
230
+ def fips?
231
+ ENV["CHEF_FIPS"] == "1"
232
+ end
233
+
233
234
  class HttpHelper
234
235
  extend Ohai::Mixin::HttpHelper
235
236
  def self.logger
@@ -0,0 +1,51 @@
1
+ #
2
+ # Copyright:: Copyright (c) Chef Software Inc.
3
+ # License:: Apache License, Version 2.0
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ def add_libarchive_dll_directory
18
+ require "ruby_installer"
19
+ libarchive_paths = Dir.glob("{#{Gem.dir},C:/hab}/**/libarchive.dll").map { |f| File.expand_path(f) }
20
+ if libarchive_paths.empty?
21
+ $stderr.puts <<~EOL
22
+ !!!!
23
+ We couldn't find a libarchive.dll in #{Gem.dir} or C:/hab
24
+
25
+ If this is running in a CI/CD environment, this may end up causing failures
26
+ in the tests for archive_file. If this is not running in a CI/CD
27
+ environment then it may be safe to ignore this. That is especially true if
28
+ you're not using the Ruby Installer as your Ruby runtime.
29
+ !!!!
30
+ EOL
31
+ return
32
+ end
33
+
34
+ $stderr.puts "\nFound the following libarchive paths:\n\n#{libarchive_paths.map { |f| "- #{f}\n" }.join}\n\n"
35
+ libarchive_path = libarchive_paths.first
36
+ libarchive_dir = File.dirname(libarchive_path)
37
+
38
+ if defined?(RubyInstaller::Build) && RubyInstaller::Build.methods.include?(:add_dll_directory)
39
+ $stderr.puts "Adding #{libarchive_dir} as a DLL load path using RubyInstaller::Build#add_dll_directory"
40
+ RubyInstaller::Build.add_dll_directory(libarchive_dir)
41
+ elsif defined?(RubyInstaller::Runtime) && RubyInstaller::Runtime.methods.include?(:add_dll_directory)
42
+ $stderr.puts "Adding #{libarchive_dir} as a DLL load path using RubyInstaller::Runtime#add_dll_directory"
43
+ RubyInstaller::Runtime.add_dll_directory(libarchive_dir)
44
+ else
45
+ $stderr.puts "Unable to find the right namespace to call #add_dll_directory! Please raise an issue on [GitHub](https://github.com/chef/chef/issues/new/choose)."
46
+ end
47
+ rescue LoadError
48
+ $stderr.puts "Failed to load ruby_installer. Assuming Ruby Installer is not being used."
49
+ end
50
+
51
+ add_libarchive_dll_directory if RUBY_PLATFORM.match?(/mswin|mingw32|windows/)
@@ -58,7 +58,7 @@ shared_context "a command that can be executed as an alternate user" do
58
58
  include Chef::Mixin::ShellOut
59
59
 
60
60
  before do
61
- shell_out!("icacls \"#{script_output_dir.tr("/", '\\')}\" /grant \"authenticated users:(F)\"")
61
+ shell_out!("icacls \"#{script_output_dir.tr("/", "\\")}\" /grant \"authenticated users:(F)\"")
62
62
  end
63
63
 
64
64
  after do
@@ -157,7 +157,7 @@ shared_examples_for "a file with the wrong content" do
157
157
 
158
158
  context "when running :create action" do
159
159
  let(:provider) { resource.provider_for_action(:create) }
160
- let(:reporter_messages) { provider.instance_variable_get("@converge_actions").actions[0][0] }
160
+ let(:reporter_messages) { provider.instance_variable_get(:@converge_actions).actions[0][0] }
161
161
 
162
162
  before do
163
163
  provider.run_action
@@ -391,7 +391,7 @@ shared_examples_for "a configured file resource" do
391
391
  end
392
392
 
393
393
  def binread(file)
394
- content = File.open(file, "rb", &:read)
394
+ content = File.binread(file)
395
395
  content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
396
396
  content
397
397
  end
@@ -30,7 +30,7 @@ module ChefHTTPShared
30
30
  end
31
31
 
32
32
  def binread(file)
33
- content = File.open(file, "rb", &:read)
33
+ content = File.binread(file)
34
34
  content.force_encoding(Encoding::BINARY) if "".respond_to?(:force_encoding)
35
35
  content
36
36
  end
@@ -51,19 +51,19 @@ module ChefHTTPShared
51
51
  # just a normal file
52
52
  # (expected_content should be uncompressed)
53
53
  @api.get("/nyan_cat.png", 200) do
54
- File.open(nyan_uncompressed_filename, "rb", &:read)
54
+ File.binread(nyan_uncompressed_filename)
55
55
  end
56
56
 
57
57
  # this ends in .gz, we do not uncompress it and drop it on the filesystem as a .gz file (the internet often lies)
58
58
  # (expected_content should be compressed)
59
59
  @api.get("/nyan_cat.png.gz", 200, nil, { "Content-Type" => "application/gzip", "Content-Encoding" => "gzip" } ) do
60
- File.open(nyan_compressed_filename, "rb", &:read)
60
+ File.binread(nyan_compressed_filename)
61
61
  end
62
62
 
63
63
  # this is an uncompressed file that was compressed by some mod_gzip-ish webserver thingy, so we will expand it
64
64
  # (expected_content should be uncompressed)
65
65
  @api.get("/nyan_cat_compressed.png", 200, nil, { "Content-Type" => "application/gzip", "Content-Encoding" => "gzip" } ) do
66
- File.open(nyan_compressed_filename, "rb", &:read)
66
+ File.binread(nyan_compressed_filename)
67
67
  end
68
68
 
69
69
  #
@@ -75,7 +75,7 @@ module ChefHTTPShared
75
75
  {
76
76
  "Content-Length" => nyan_uncompressed_size.to_s,
77
77
  }) do
78
- File.open(nyan_uncompressed_filename, "rb", &:read)
78
+ File.binread(nyan_uncompressed_filename)
79
79
  end
80
80
 
81
81
  # (expected_content should be uncompressed)
@@ -85,7 +85,7 @@ module ChefHTTPShared
85
85
  "Content-Type" => "application/gzip",
86
86
  "Content-Encoding" => "gzip",
87
87
  }) do
88
- File.open(nyan_compressed_filename, "rb", &:read)
88
+ File.binread(nyan_compressed_filename)
89
89
  end
90
90
 
91
91
  #
@@ -97,7 +97,7 @@ module ChefHTTPShared
97
97
  {
98
98
  "Content-Length" => (nyan_uncompressed_size + 1).to_s,
99
99
  }) do
100
- File.open(nyan_uncompressed_filename, "rb", &:read)
100
+ File.binread(nyan_uncompressed_filename)
101
101
  end
102
102
 
103
103
  # (expected_content should be uncompressed)
@@ -107,7 +107,7 @@ module ChefHTTPShared
107
107
  "Content-Type" => "application/gzip",
108
108
  "Content-Encoding" => "gzip",
109
109
  }) do
110
- File.open(nyan_compressed_filename, "rb", &:read)
110
+ File.binread(nyan_compressed_filename)
111
111
  end
112
112
 
113
113
  #
@@ -120,7 +120,7 @@ module ChefHTTPShared
120
120
  "Content-Length" => (nyan_uncompressed_size + 1).to_s,
121
121
  "Transfer-Encoding" => "anything",
122
122
  }) do
123
- File.open(nyan_uncompressed_filename, "rb", &:read)
123
+ File.binread(nyan_uncompressed_filename)
124
124
  end
125
125
 
126
126
  #
@@ -22,7 +22,6 @@ require "fileutils"
22
22
  require "chef/config"
23
23
  require "chef/json_compat"
24
24
  require "chef/server_api"
25
- require "support/shared/integration/knife_support"
26
25
  require "cheffish/rspec/chef_run_support"
27
26
 
28
27
  module Cheffish
@@ -36,14 +36,13 @@ end
36
36
 
37
37
  # forwards-vs-reverse slashes on windows sucks
38
38
  def windows_path
39
- windows? ? normalized_path.tr('\\', "/") : normalized_path
39
+ windows? ? normalized_path.tr("\\", "/") : normalized_path
40
40
  end
41
41
 
42
42
  # this is all getting a bit stupid, CHEF-4802 cut to remove all this
43
43
  def setup_normal_file
44
44
  [ resource_path, normalized_path, windows_path].each do |path|
45
45
  allow(File).to receive(:file?).with(path).and_return(true)
46
- allow(File).to receive(:exists?).with(path).and_return(true)
47
46
  allow(File).to receive(:exist?).with(path).and_return(true)
48
47
  allow(File).to receive(:directory?).with(path).and_return(false)
49
48
  allow(File).to receive(:writable?).with(path).and_return(true)
@@ -57,7 +56,6 @@ def setup_missing_file
57
56
  [ resource_path, normalized_path, windows_path].each do |path|
58
57
  allow(File).to receive(:file?).with(path).and_return(false)
59
58
  allow(File).to receive(:realpath?).with(path).and_return(resource_path)
60
- allow(File).to receive(:exists?).with(path).and_return(false)
61
59
  allow(File).to receive(:exist?).with(path).and_return(false)
62
60
  allow(File).to receive(:directory?).with(path).and_return(false)
63
61
  allow(File).to receive(:writable?).with(path).and_return(false)
@@ -70,7 +68,6 @@ def setup_symlink
70
68
  [ resource_path, normalized_path, windows_path].each do |path|
71
69
  allow(File).to receive(:file?).with(path).and_return(true)
72
70
  allow(File).to receive(:realpath?).with(path).and_return(normalized_path)
73
- allow(File).to receive(:exists?).with(path).and_return(true)
74
71
  allow(File).to receive(:exist?).with(path).and_return(true)
75
72
  allow(File).to receive(:directory?).with(path).and_return(false)
76
73
  allow(File).to receive(:writable?).with(path).and_return(true)
@@ -84,7 +81,6 @@ def setup_unwritable_file
84
81
  [ resource_path, normalized_path, windows_path].each do |path|
85
82
  allow(File).to receive(:file?).with(path).and_return(false)
86
83
  allow(File).to receive(:realpath?).with(path).and_raise(Errno::ENOENT)
87
- allow(File).to receive(:exists?).with(path).and_return(true)
88
84
  allow(File).to receive(:exist?).with(path).and_return(true)
89
85
  allow(File).to receive(:directory?).with(path).and_return(false)
90
86
  allow(File).to receive(:writable?).with(path).and_return(false)
@@ -97,7 +93,6 @@ def setup_missing_enclosing_directory
97
93
  [ resource_path, normalized_path, windows_path].each do |path|
98
94
  allow(File).to receive(:file?).with(path).and_return(false)
99
95
  allow(File).to receive(:realpath?).with(path).and_raise(Errno::ENOENT)
100
- allow(File).to receive(:exists?).with(path).and_return(false)
101
96
  allow(File).to receive(:exist?).with(path).and_return(false)
102
97
  allow(File).to receive(:directory?).with(path).and_return(false)
103
98
  allow(File).to receive(:writable?).with(path).and_return(false)
@@ -138,7 +133,6 @@ shared_examples_for Chef::Provider::File do
138
133
  before(:each) do
139
134
  allow(content).to receive(:tempfile).and_return(tempfile)
140
135
  allow(File).to receive(:exist?).with(tempfile.path).and_call_original
141
- allow(File).to receive(:exists?).with(tempfile.path).and_call_original
142
136
  end
143
137
 
144
138
  after do
@@ -547,7 +541,7 @@ shared_examples_for Chef::Provider::File do
547
541
  provider.load_current_resource
548
542
  tempfile = double("Tempfile", path: "/tmp/foo-bar-baz")
549
543
  allow(content).to receive(:tempfile).and_return(tempfile)
550
- expect(File).to receive(:exists?).with("/tmp/foo-bar-baz").and_return(true)
544
+ expect(File).to receive(:exist?).with("/tmp/foo-bar-baz").and_return(true)
551
545
  expect(tempfile).to receive(:close).once
552
546
  expect(tempfile).to receive(:unlink).once
553
547
  end
@@ -630,7 +624,7 @@ shared_examples_for Chef::Provider::File do
630
624
  it "raises an exception when the content object returns a tempfile that does not exist" do
631
625
  tempfile = double("Tempfile", path: "/tmp/foo-bar-baz")
632
626
  expect(provider.send(:content)).to receive(:tempfile).at_least(:once).and_return(tempfile)
633
- expect(File).to receive(:exists?).with("/tmp/foo-bar-baz").and_return(false)
627
+ expect(File).to receive(:exist?).with("/tmp/foo-bar-baz").and_return(false)
634
628
  expect { provider.send(:do_contents_changes) }.to raise_error(RuntimeError)
635
629
  end
636
630
  end
@@ -169,7 +169,7 @@ shared_examples_for "a useradd-based user provider" do |supported_useradd_option
169
169
  before do
170
170
  provider.new_resource.system true
171
171
  # there is no public API to set attribute's value to nil
172
- provider.new_resource.instance_variable_set("@home", nil)
172
+ provider.new_resource.instance_variable_set(:@home, nil)
173
173
  end
174
174
 
175
175
  it "should not include -m or -d in the command options" do
@@ -47,9 +47,9 @@ shared_examples_for "a script resource" do
47
47
  end
48
48
 
49
49
  describe "when executing guards" do
50
- it "inherits exactly the :cwd, :domain, :environment, :group, :password, :path, :user, and :umask attributes from a parent resource class" do
50
+ it "inherits exactly the :cwd, :domain, :environment, :group, :password, :path, :user, :umask, and :login attributes from a parent resource class" do
51
51
  inherited_difference = Chef::Resource::Script.guard_inherited_attributes -
52
- %i{cwd domain environment group password path user umask}
52
+ %i{cwd domain environment group password path user umask login}
53
53
 
54
54
  expect(inherited_difference).to eq([])
55
55
  end