chef 15.11.3-universal-mingw32 → 16.1.16-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 (513) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +3 -7
  3. data/README.md +1 -1
  4. data/Rakefile +44 -16
  5. data/chef.gemspec +6 -4
  6. data/distro/powershell/chef/chef.psm1 +3 -3
  7. data/distro/templates/powershell/chef/chef.psm1.erb +3 -3
  8. data/lib/chef/action_collection.rb +16 -5
  9. data/lib/chef/application.rb +33 -54
  10. data/lib/chef/application/apply.rb +18 -1
  11. data/lib/chef/application/base.rb +8 -3
  12. data/lib/chef/application/knife.rb +1 -1
  13. data/lib/chef/chef_class.rb +4 -4
  14. data/lib/chef/chef_fs/file_system/chef_server/acls_dir.rb +1 -1
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/chef_server/rest_list_entry.rb +6 -2
  17. data/lib/chef/chef_fs/file_system/repository/chef_repository_file_system_root_dir.rb +3 -3
  18. data/lib/chef/chef_fs/file_system/repository/directory.rb +1 -1
  19. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +1 -1
  20. data/lib/chef/chef_fs/path_utils.rb +3 -3
  21. data/lib/chef/client.rb +16 -14
  22. data/lib/chef/config.rb +1 -1
  23. data/lib/chef/cookbook/file_system_file_vendor.rb +1 -1
  24. data/lib/chef/cookbook/gem_installer.rb +1 -1
  25. data/lib/chef/cookbook/metadata.rb +45 -22
  26. data/lib/chef/cookbook_loader.rb +1 -1
  27. data/lib/chef/cookbook_manifest.rb +1 -1
  28. data/lib/chef/cookbook_site_streaming_uploader.rb +1 -1
  29. data/lib/chef/cookbook_version.rb +38 -3
  30. data/lib/chef/data_collector.rb +1 -1
  31. data/lib/chef/data_collector/error_handlers.rb +1 -1
  32. data/lib/chef/data_collector/run_end_message.rb +7 -1
  33. data/lib/chef/decorator/lazy_array.rb +2 -2
  34. data/lib/chef/deprecated.rb +4 -0
  35. data/lib/chef/digester.rb +4 -4
  36. data/lib/chef/dist.rb +8 -0
  37. data/lib/chef/dsl/chef_vault.rb +84 -0
  38. data/lib/chef/dsl/declare_resource.rb +7 -5
  39. data/lib/chef/dsl/platform_introspection.rb +3 -2
  40. data/lib/chef/dsl/recipe.rb +7 -12
  41. data/lib/chef/dsl/universal.rb +3 -7
  42. data/lib/chef/encrypted_data_bag_item/decryptor.rb +1 -1
  43. data/lib/chef/encrypted_data_bag_item/encryptor.rb +1 -1
  44. data/lib/chef/event_dispatch/base.rb +3 -0
  45. data/lib/chef/formatters/base.rb +1 -1
  46. data/lib/chef/formatters/doc.rb +1 -1
  47. data/lib/chef/formatters/indentable_output_stream.rb +7 -16
  48. data/lib/chef/http.rb +1 -1
  49. data/lib/chef/http/decompressor.rb +1 -1
  50. data/lib/chef/http/http_request.rb +3 -2
  51. data/lib/chef/json_compat.rb +1 -1
  52. data/lib/chef/key.rb +1 -1
  53. data/lib/chef/knife.rb +2 -4
  54. data/lib/chef/knife/acl_add.rb +57 -0
  55. data/lib/chef/knife/acl_base.rb +183 -0
  56. data/lib/chef/knife/acl_bulk_add.rb +78 -0
  57. data/lib/chef/knife/acl_bulk_remove.rb +83 -0
  58. data/lib/chef/knife/acl_remove.rb +62 -0
  59. data/lib/chef/knife/acl_show.rb +56 -0
  60. data/lib/chef/knife/bootstrap.rb +84 -90
  61. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +2 -2
  62. data/lib/chef/knife/bootstrap/client_builder.rb +2 -2
  63. data/lib/chef/knife/bootstrap/templates/chef-full.erb +11 -11
  64. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +12 -12
  65. data/lib/chef/knife/core/bootstrap_context.rb +63 -60
  66. data/lib/chef/knife/core/generic_presenter.rb +4 -3
  67. data/lib/chef/knife/core/hashed_command_loader.rb +1 -1
  68. data/lib/chef/knife/core/node_presenter.rb +2 -2
  69. data/lib/chef/knife/core/status_presenter.rb +5 -5
  70. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  71. data/lib/chef/knife/core/ui.rb +17 -1
  72. data/lib/chef/knife/core/windows_bootstrap_context.rb +44 -42
  73. data/lib/chef/knife/data_bag_secret_options.rb +18 -45
  74. data/lib/chef/knife/group_add.rb +55 -0
  75. data/lib/chef/knife/{cookbook_site_download.rb → group_create.rb} +21 -12
  76. data/lib/chef/knife/group_destroy.rb +53 -0
  77. data/lib/chef/knife/{cookbook_site_list.rb → group_list.rb} +14 -11
  78. data/lib/chef/knife/group_remove.rb +56 -0
  79. data/lib/chef/knife/{cookbook_site_install.rb → group_show.rb} +21 -12
  80. data/lib/chef/knife/key_create_base.rb +1 -1
  81. data/lib/chef/knife/key_edit_base.rb +1 -1
  82. data/lib/chef/knife/ssh.rb +12 -31
  83. data/lib/chef/knife/status.rb +3 -3
  84. data/lib/chef/knife/supermarket_download.rb +1 -2
  85. data/lib/chef/knife/supermarket_install.rb +2 -3
  86. data/lib/chef/knife/supermarket_list.rb +1 -2
  87. data/lib/chef/knife/supermarket_search.rb +1 -2
  88. data/lib/chef/knife/supermarket_share.rb +1 -2
  89. data/lib/chef/knife/supermarket_show.rb +1 -2
  90. data/lib/chef/knife/supermarket_unshare.rb +1 -2
  91. data/lib/chef/knife/{cookbook_site_show.rb → user_dissociate.rb} +15 -13
  92. data/lib/chef/knife/{cookbook_site_search.rb → user_invite_add.rb} +16 -13
  93. data/lib/chef/knife/user_invite_list.rb +34 -0
  94. data/lib/chef/knife/user_invite_rescind.rb +63 -0
  95. data/lib/chef/knife/yaml_convert.rb +91 -0
  96. data/lib/chef/mixin/api_version_request_handling.rb +1 -1
  97. data/lib/chef/mixin/checksum.rb +0 -1
  98. data/lib/chef/mixin/openssl_helper.rb +4 -4
  99. data/lib/chef/mixin/powershell_exec.rb +10 -1
  100. data/lib/chef/mixin/powershell_out.rb +1 -1
  101. data/lib/chef/mixin/properties.rb +16 -2
  102. data/lib/chef/mixin/shell_out.rb +1 -5
  103. data/lib/chef/monkey_patches/net_http.rb +0 -4
  104. data/lib/chef/node.rb +18 -6
  105. data/lib/chef/node/attribute.rb +2 -2
  106. data/lib/chef/node/immutable_collections.rb +1 -1
  107. data/lib/chef/node/mixin/immutablize_array.rb +4 -0
  108. data/lib/chef/node/mixin/immutablize_hash.rb +3 -0
  109. data/lib/chef/node_map.rb +5 -31
  110. data/lib/chef/platform/priority_map.rb +4 -4
  111. data/lib/chef/platform/query_helpers.rb +6 -34
  112. data/lib/chef/policy_builder/policyfile.rb +1 -1
  113. data/lib/chef/powershell.rb +14 -0
  114. data/lib/chef/property.rb +24 -6
  115. data/lib/chef/provider.rb +40 -6
  116. data/lib/chef/provider/cron.rb +2 -2
  117. data/lib/chef/provider/directory.rb +3 -3
  118. data/lib/chef/provider/dsc_resource.rb +1 -1
  119. data/lib/chef/provider/dsc_script.rb +1 -1
  120. data/lib/chef/provider/execute.rb +3 -9
  121. data/lib/chef/provider/file.rb +6 -6
  122. data/lib/chef/provider/git.rb +84 -27
  123. data/lib/chef/provider/group.rb +4 -4
  124. data/lib/chef/provider/http_request.rb +6 -6
  125. data/lib/chef/provider/ifconfig.rb +4 -4
  126. data/lib/chef/provider/launchd.rb +45 -64
  127. data/lib/chef/provider/link.rb +2 -2
  128. data/lib/chef/provider/mount.rb +5 -5
  129. data/lib/chef/provider/osx_profile.rb +7 -3
  130. data/lib/chef/provider/package.rb +2 -2
  131. data/lib/chef/provider/package/cab.rb +5 -6
  132. data/lib/chef/provider/package/chocolatey.rb +1 -3
  133. data/lib/chef/provider/package/dnf.rb +66 -10
  134. data/lib/chef/provider/package/dnf/dnf_helper.py +85 -26
  135. data/lib/chef/provider/package/dnf/python_helper.rb +79 -36
  136. data/lib/chef/provider/package/dnf/version.rb +5 -1
  137. data/lib/chef/provider/package/dpkg.rb +1 -1
  138. data/lib/chef/provider/package/freebsd/base.rb +2 -1
  139. data/lib/chef/provider/package/homebrew.rb +107 -43
  140. data/lib/chef/provider/package/macports.rb +0 -2
  141. data/lib/chef/provider/package/msu.rb +4 -1
  142. data/lib/chef/provider/package/pacman.rb +25 -34
  143. data/lib/chef/provider/package/portage.rb +1 -0
  144. data/lib/chef/provider/package/powershell.rb +1 -1
  145. data/lib/chef/provider/package/rubygems.rb +30 -3
  146. data/lib/chef/provider/package/windows.rb +29 -53
  147. data/lib/chef/provider/package/windows/msi.rb +2 -2
  148. data/lib/chef/provider/package/yum.rb +1 -9
  149. data/lib/chef/provider/package/yum/yum_cache.rb +1 -1
  150. data/lib/chef/provider/package/zypper.rb +0 -1
  151. data/lib/chef/provider/powershell_script.rb +5 -11
  152. data/lib/chef/provider/registry_key.rb +4 -4
  153. data/lib/chef/provider/remote_directory.rb +5 -5
  154. data/lib/chef/provider/remote_file/ftp.rb +3 -2
  155. data/lib/chef/provider/remote_file/local_file.rb +2 -1
  156. data/lib/chef/provider/remote_file/sftp.rb +3 -2
  157. data/lib/chef/provider/route.rb +5 -3
  158. data/lib/chef/provider/ruby_block.rb +1 -1
  159. data/lib/chef/provider/script.rb +2 -2
  160. data/lib/chef/provider/service.rb +8 -8
  161. data/lib/chef/provider/service/aixinit.rb +1 -1
  162. data/lib/chef/provider/service/arch.rb +1 -1
  163. data/lib/chef/provider/service/debian.rb +30 -28
  164. data/lib/chef/provider/service/macosx.rb +16 -10
  165. data/lib/chef/provider/service/systemd.rb +12 -12
  166. data/lib/chef/provider/service/upstart.rb +1 -1
  167. data/lib/chef/provider/service/windows.rb +5 -11
  168. data/lib/chef/provider/subversion.rb +25 -5
  169. data/lib/chef/provider/systemd_unit.rb +26 -25
  170. data/lib/chef/provider/user.rb +6 -6
  171. data/lib/chef/provider/user/aix.rb +1 -1
  172. data/lib/chef/provider/user/dscl.rb +6 -6
  173. data/lib/chef/provider/user/mac.rb +20 -15
  174. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  175. data/lib/chef/provider/windows_env.rb +3 -3
  176. data/lib/chef/provider/windows_script.rb +2 -2
  177. data/lib/chef/provider/windows_task.rb +10 -10
  178. data/lib/chef/providers.rb +0 -6
  179. data/lib/chef/recipe.rb +36 -0
  180. data/lib/chef/resource.rb +44 -57
  181. data/lib/chef/resource/action_class.rb +24 -22
  182. data/lib/chef/resource/alternatives.rb +210 -0
  183. data/lib/chef/resource/apt_package.rb +33 -3
  184. data/lib/chef/resource/apt_preference.rb +103 -7
  185. data/lib/chef/resource/apt_repository.rb +357 -18
  186. data/lib/chef/resource/apt_update.rb +58 -5
  187. data/lib/chef/resource/archive_file.rb +6 -5
  188. data/lib/chef/resource/bash.rb +3 -1
  189. data/lib/chef/resource/batch.rb +1 -1
  190. data/lib/chef/resource/bff_package.rb +10 -2
  191. data/lib/chef/resource/breakpoint.rb +1 -2
  192. data/lib/chef/resource/build_essential.rb +49 -51
  193. data/lib/chef/resource/cab_package.rb +9 -2
  194. data/lib/chef/resource/chef_client_cron.rb +228 -0
  195. data/lib/chef/resource/chef_client_scheduled_task.rb +201 -0
  196. data/lib/chef/resource/chef_client_systemd_timer.rb +180 -0
  197. data/lib/chef/resource/chef_gem.rb +15 -18
  198. data/lib/chef/resource/chef_handler.rb +5 -4
  199. data/lib/chef/resource/chef_sleep.rb +7 -5
  200. data/lib/chef/resource/chef_vault_secret.rb +135 -0
  201. data/lib/chef/resource/chocolatey_config.rb +8 -4
  202. data/lib/chef/resource/chocolatey_feature.rb +7 -4
  203. data/lib/chef/resource/chocolatey_package.rb +7 -4
  204. data/lib/chef/resource/chocolatey_source.rb +7 -4
  205. data/lib/chef/resource/cookbook_file.rb +4 -3
  206. data/lib/chef/resource/cron.rb +34 -80
  207. data/lib/chef/resource/cron_access.rb +10 -6
  208. data/lib/chef/resource/cron_d.rb +44 -95
  209. data/lib/chef/resource/csh.rb +3 -1
  210. data/lib/chef/resource/directory.rb +3 -3
  211. data/lib/chef/resource/dmg_package.rb +22 -19
  212. data/lib/chef/resource/dnf_package.rb +3 -4
  213. data/lib/chef/resource/dpkg_package.rb +3 -2
  214. data/lib/chef/resource/dsc_resource.rb +6 -4
  215. data/lib/chef/resource/dsc_script.rb +3 -2
  216. data/lib/chef/resource/execute.rb +15 -14
  217. data/lib/chef/resource/file.rb +14 -9
  218. data/lib/chef/resource/freebsd_package.rb +3 -2
  219. data/lib/chef/resource/gem_package.rb +19 -11
  220. data/lib/chef/resource/group.rb +5 -2
  221. data/lib/chef/resource/helpers/cron_validations.rb +98 -0
  222. data/lib/chef/resource/homebrew_cask.rb +3 -2
  223. data/lib/chef/resource/homebrew_package.rb +5 -3
  224. data/lib/chef/resource/homebrew_tap.rb +3 -2
  225. data/lib/chef/resource/hostname.rb +26 -20
  226. data/lib/chef/resource/http_request.rb +1 -2
  227. data/lib/chef/resource/ifconfig.rb +8 -8
  228. data/lib/chef/resource/ips_package.rb +11 -3
  229. data/lib/chef/resource/kernel_module.rb +30 -30
  230. data/lib/chef/resource/ksh.rb +3 -1
  231. data/lib/chef/resource/launchd.rb +3 -3
  232. data/lib/chef/resource/link.rb +5 -27
  233. data/lib/chef/resource/locale.rb +60 -26
  234. data/lib/chef/resource/log.rb +13 -2
  235. data/lib/chef/resource/lwrp_base.rb +1 -1
  236. data/lib/chef/resource/macos_userdefaults.rb +18 -10
  237. data/lib/chef/resource/macosx_service.rb +3 -2
  238. data/lib/chef/resource/macports_package.rb +10 -2
  239. data/lib/chef/resource/mdadm.rb +63 -3
  240. data/lib/chef/resource/mount.rb +4 -1
  241. data/lib/chef/resource/msu_package.rb +19 -2
  242. data/lib/chef/resource/notify_group.rb +8 -3
  243. data/lib/chef/resource/ohai.rb +20 -4
  244. data/lib/chef/resource/ohai_hint.rb +4 -13
  245. data/lib/chef/resource/openbsd_package.rb +10 -2
  246. data/lib/chef/resource/openssl_dhparam.rb +11 -2
  247. data/lib/chef/resource/openssl_ec_private_key.rb +24 -2
  248. data/lib/chef/resource/openssl_ec_public_key.rb +22 -2
  249. data/lib/chef/resource/openssl_rsa_private_key.rb +21 -2
  250. data/lib/chef/resource/openssl_rsa_public_key.rb +23 -2
  251. data/lib/chef/resource/openssl_x509_certificate.rb +38 -2
  252. data/lib/chef/resource/openssl_x509_crl.rb +13 -2
  253. data/lib/chef/resource/openssl_x509_request.rb +38 -2
  254. data/lib/chef/resource/osx_profile.rb +4 -3
  255. data/lib/chef/resource/package.rb +3 -2
  256. data/lib/chef/resource/pacman_package.rb +3 -2
  257. data/lib/chef/resource/paludis_package.rb +13 -4
  258. data/lib/chef/resource/perl.rb +3 -1
  259. data/lib/chef/resource/plist.rb +207 -0
  260. data/lib/chef/resource/portage_package.rb +14 -4
  261. data/lib/chef/resource/powershell_package.rb +2 -4
  262. data/lib/chef/resource/powershell_package_source.rb +4 -2
  263. data/lib/chef/resource/powershell_script.rb +8 -18
  264. data/lib/chef/resource/python.rb +3 -1
  265. data/lib/chef/resource/reboot.rb +1 -2
  266. data/lib/chef/resource/registry_key.rb +2 -3
  267. data/lib/chef/resource/remote_directory.rb +3 -1
  268. data/lib/chef/resource/remote_file.rb +3 -2
  269. data/lib/chef/resource/rhsm_errata.rb +1 -4
  270. data/lib/chef/resource/rhsm_errata_level.rb +1 -2
  271. data/lib/chef/resource/rhsm_register.rb +3 -3
  272. data/lib/chef/resource/rhsm_repo.rb +4 -3
  273. data/lib/chef/resource/rhsm_subscription.rb +5 -4
  274. data/lib/chef/resource/route.rb +6 -2
  275. data/lib/chef/resource/rpm_package.rb +13 -3
  276. data/lib/chef/resource/ruby.rb +3 -1
  277. data/lib/chef/resource/ruby_block.rb +2 -5
  278. data/lib/chef/resource/scm/_scm.rb +49 -0
  279. data/lib/chef/resource/{scm.rb → scm/git.rb} +16 -30
  280. data/lib/chef/resource/{subversion.rb → scm/subversion.rb} +10 -7
  281. data/lib/chef/resource/script.rb +7 -4
  282. data/lib/chef/resource/service.rb +7 -8
  283. data/lib/chef/resource/smartos_package.rb +10 -2
  284. data/lib/chef/resource/snap_package.rb +4 -2
  285. data/lib/chef/resource/solaris_package.rb +10 -2
  286. data/lib/chef/resource/ssh_known_hosts_entry.rb +6 -3
  287. data/lib/chef/resource/sudo.rb +11 -11
  288. data/lib/chef/resource/support/cron.d.erb +1 -1
  289. data/lib/chef/resource/support/cron_access.erb +1 -1
  290. data/lib/chef/resource/support/sudoer.erb +1 -2
  291. data/lib/chef/resource/support/ulimit.erb +41 -0
  292. data/lib/chef/resource/swap_file.rb +7 -5
  293. data/lib/chef/resource/sysctl.rb +63 -4
  294. data/lib/chef/resource/systemd_unit.rb +6 -4
  295. data/lib/chef/resource/template.rb +0 -1
  296. data/lib/chef/resource/timezone.rb +8 -19
  297. data/lib/chef/resource/user.rb +3 -5
  298. data/lib/chef/resource/user/aix_user.rb +0 -2
  299. data/lib/chef/resource/user/dscl_user.rb +1 -1
  300. data/lib/chef/resource/user/linux_user.rb +0 -2
  301. data/lib/chef/resource/user/mac_user.rb +1 -1
  302. data/lib/chef/resource/user/pw_user.rb +0 -2
  303. data/lib/chef/resource/user/solaris_user.rb +0 -2
  304. data/lib/chef/resource/user/windows_user.rb +0 -2
  305. data/lib/chef/resource/user_ulimit.rb +116 -0
  306. data/lib/chef/resource/whyrun_safe_ruby_block.rb +1 -0
  307. data/lib/chef/resource/windows_ad_join.rb +20 -7
  308. data/lib/chef/resource/windows_auto_run.rb +2 -3
  309. data/lib/chef/resource/windows_certificate.rb +3 -3
  310. data/lib/chef/resource/windows_dfs_folder.rb +1 -2
  311. data/lib/chef/resource/windows_dfs_namespace.rb +1 -2
  312. data/lib/chef/resource/windows_dfs_server.rb +2 -3
  313. data/lib/chef/resource/windows_dns_record.rb +0 -1
  314. data/lib/chef/resource/windows_dns_zone.rb +0 -1
  315. data/lib/chef/resource/windows_env.rb +12 -4
  316. data/lib/chef/resource/windows_feature.rb +59 -4
  317. data/lib/chef/resource/windows_feature_dism.rb +24 -24
  318. data/lib/chef/resource/windows_feature_powershell.rb +44 -78
  319. data/lib/chef/resource/windows_firewall_rule.rb +121 -8
  320. data/lib/chef/resource/windows_font.rb +10 -2
  321. data/lib/chef/resource/windows_package.rb +76 -7
  322. data/lib/chef/resource/windows_pagefile.rb +31 -4
  323. data/lib/chef/resource/windows_path.rb +18 -2
  324. data/lib/chef/resource/windows_printer.rb +26 -7
  325. data/lib/chef/resource/windows_printer_port.rb +29 -2
  326. data/lib/chef/resource/windows_script.rb +3 -4
  327. data/lib/chef/resource/windows_security_policy.rb +119 -0
  328. data/lib/chef/resource/windows_service.rb +46 -32
  329. data/lib/chef/resource/windows_share.rb +22 -6
  330. data/lib/chef/resource/windows_shortcut.rb +13 -3
  331. data/lib/chef/resource/windows_task.rb +129 -16
  332. data/lib/chef/resource/windows_uac.rb +20 -2
  333. data/lib/chef/resource/windows_user_privilege.rb +199 -0
  334. data/lib/chef/resource/windows_workgroup.rb +19 -4
  335. data/lib/chef/resource/yum_package.rb +91 -7
  336. data/lib/chef/resource/yum_repository.rb +30 -12
  337. data/lib/chef/resource/zypper_package.rb +32 -5
  338. data/lib/chef/resource/zypper_repository.rb +19 -6
  339. data/lib/chef/resource_builder.rb +8 -0
  340. data/lib/chef/resource_inspector.rb +3 -2
  341. data/lib/chef/resource_resolver.rb +7 -14
  342. data/lib/chef/resources.rb +11 -3
  343. data/lib/chef/run_context/cookbook_compiler.rb +29 -5
  344. data/lib/chef/scan_access_control.rb +1 -1
  345. data/lib/chef/shell.rb +22 -0
  346. data/lib/chef/shell/ext.rb +1 -1
  347. data/lib/chef/version.rb +1 -1
  348. data/lib/chef/win32/api.rb +2 -2
  349. data/lib/chef/win32/api/error.rb +3 -1
  350. data/lib/chef/win32/api/file.rb +1 -1
  351. data/lib/chef/win32/api/net.rb +1 -0
  352. data/lib/chef/win32/api/security.rb +6 -0
  353. data/lib/chef/win32/file.rb +1 -9
  354. data/lib/chef/win32/mutex.rb +1 -1
  355. data/lib/chef/win32/net.rb +1 -0
  356. data/lib/chef/win32/security.rb +40 -2
  357. data/lib/chef/win32/security/sid.rb +4 -4
  358. data/spec/functional/assets/inittest +8 -7
  359. data/spec/functional/knife/ssh_spec.rb +23 -19
  360. data/spec/functional/resource/cron_spec.rb +10 -29
  361. data/spec/functional/resource/dnf_package_spec.rb +441 -156
  362. data/spec/functional/resource/git_spec.rb +184 -134
  363. data/spec/functional/resource/insserv_spec.rb +1 -1
  364. data/spec/functional/resource/launchd_spec.rb +232 -0
  365. data/spec/functional/resource/link_spec.rb +3 -3
  366. data/spec/functional/resource/locale_spec.rb +13 -2
  367. data/spec/functional/resource/msu_package_spec.rb +5 -2
  368. data/spec/functional/resource/powershell_script_spec.rb +7 -68
  369. data/spec/functional/resource/remote_file_spec.rb +1 -1
  370. data/spec/functional/resource/windows_security_policy_spec.rb +90 -0
  371. data/spec/functional/resource/windows_task_spec.rb +4 -4
  372. data/spec/functional/resource/windows_user_privilege_spec.rb +193 -0
  373. data/spec/functional/run_lock_spec.rb +1 -1
  374. data/spec/functional/shell_spec.rb +1 -1
  375. data/spec/functional/util/powershell/cmdlet_spec.rb +1 -1
  376. data/spec/functional/version_spec.rb +1 -1
  377. data/spec/functional/win32/registry_spec.rb +0 -6
  378. data/spec/functional/win32/security_spec.rb +22 -0
  379. data/spec/integration/client/client_spec.rb +123 -2
  380. data/spec/integration/knife/cookbook_show_spec.rb +28 -26
  381. data/spec/integration/knife/data_bag_show_spec.rb +1 -1
  382. data/spec/integration/knife/raw_spec.rb +34 -6
  383. data/spec/integration/knife/redirection_spec.rb +2 -2
  384. data/spec/integration/knife/show_spec.rb +32 -3
  385. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +3 -3
  386. data/spec/integration/recipes/noop_resource_spec.rb +1 -1
  387. data/spec/integration/recipes/notifies_spec.rb +49 -20
  388. data/spec/integration/recipes/notifying_block_spec.rb +8 -5
  389. data/spec/integration/recipes/provider_choice.rb +2 -0
  390. data/spec/integration/recipes/recipe_dsl_spec.rb +45 -143
  391. data/spec/integration/recipes/resource_action_spec.rb +16 -11
  392. data/spec/integration/recipes/resource_converge_if_changed_spec.rb +1 -1
  393. data/spec/integration/recipes/resource_load_spec.rb +133 -12
  394. data/spec/integration/recipes/use_partial_spec.rb +112 -0
  395. data/spec/integration/solo/solo_spec.rb +3 -3
  396. data/spec/spec_helper.rb +18 -3
  397. data/spec/support/chef_helpers.rb +2 -2
  398. data/spec/support/lib/chef/resource/zen_follower.rb +2 -0
  399. data/spec/support/platform_helpers.rb +2 -20
  400. data/spec/support/recipe_dsl_helper.rb +83 -0
  401. data/spec/support/shared/functional/http.rb +2 -2
  402. data/spec/support/shared/functional/windows_script.rb +3 -16
  403. data/spec/support/shared/integration/knife_support.rb +9 -6
  404. data/spec/support/shared/unit/mock_shellout.rb +1 -1
  405. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +4 -4
  406. data/spec/unit/application/apply_spec.rb +3 -0
  407. data/spec/unit/application/client_spec.rb +5 -1
  408. data/spec/unit/application_spec.rb +1 -2
  409. data/spec/unit/client_spec.rb +7 -5
  410. data/spec/unit/cookbook/gem_installer_spec.rb +2 -2
  411. data/spec/unit/cookbook/metadata_spec.rb +38 -19
  412. data/spec/unit/data_collector_spec.rb +39 -18
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/json_compat_spec.rb +1 -1
  415. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +15 -15
  416. data/spec/unit/knife/bootstrap/client_builder_spec.rb +9 -9
  417. data/spec/unit/knife/bootstrap_spec.rb +20 -38
  418. data/spec/unit/knife/cookbook_show_spec.rb +1 -0
  419. data/spec/unit/knife/core/bootstrap_context_spec.rb +23 -43
  420. data/spec/unit/knife/core/ui_spec.rb +16 -0
  421. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +9 -63
  422. data/spec/unit/knife/data_bag_secret_options_spec.rb +22 -14
  423. data/spec/unit/knife/ssh_spec.rb +8 -111
  424. data/spec/unit/knife/status_spec.rb +1 -1
  425. data/spec/unit/knife_spec.rb +18 -0
  426. data/spec/unit/mixin/openssl_helper_spec.rb +4 -4
  427. data/spec/unit/mixin/powershell_exec_spec.rb +10 -0
  428. data/spec/unit/mixin/shell_out_spec.rb +25 -31
  429. data/spec/unit/node/attribute_spec.rb +3 -3
  430. data/spec/unit/node_spec.rb +24 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +0 -143
  432. data/spec/unit/property/state_spec.rb +12 -7
  433. data/spec/unit/property/validation_spec.rb +25 -1
  434. data/spec/unit/property_spec.rb +12 -9
  435. data/spec/unit/provider/apt_preference_spec.rb +14 -10
  436. data/spec/unit/provider/apt_repository_spec.rb +34 -36
  437. data/spec/unit/provider/apt_update_spec.rb +12 -11
  438. data/spec/unit/provider/cookbook_file_spec.rb +4 -4
  439. data/spec/unit/provider/cron_spec.rb +2 -2
  440. data/spec/unit/provider/directory_spec.rb +4 -15
  441. data/spec/unit/provider/file_spec.rb +4 -4
  442. data/spec/unit/provider/git_spec.rb +41 -1
  443. data/spec/unit/provider/group/groupadd_spec.rb +1 -1
  444. data/spec/unit/provider/launchd_spec.rb +8 -50
  445. data/spec/unit/provider/link_spec.rb +0 -1
  446. data/spec/unit/provider/log_spec.rb +3 -3
  447. data/spec/unit/provider/mdadm_spec.rb +3 -3
  448. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -1
  449. data/spec/unit/provider/package/homebrew_spec.rb +280 -174
  450. data/spec/unit/provider/package/pacman_spec.rb +65 -147
  451. data/spec/unit/provider/package/portage_spec.rb +2 -2
  452. data/spec/unit/provider/package/powershell_spec.rb +3 -2
  453. data/spec/unit/provider/package/rubygems_spec.rb +211 -26
  454. data/spec/unit/provider/package/windows/exe_spec.rb +1 -1
  455. data/spec/unit/provider/powershell_script_spec.rb +21 -61
  456. data/spec/unit/provider/remote_file_spec.rb +3 -4
  457. data/spec/unit/provider/service/debian_service_spec.rb +34 -13
  458. data/spec/unit/provider/service/macosx_spec.rb +210 -214
  459. data/spec/unit/provider/service/systemd_service_spec.rb +23 -23
  460. data/spec/unit/provider/subversion_spec.rb +4 -2
  461. data/spec/unit/provider/template_spec.rb +3 -4
  462. data/spec/unit/provider/zypper_repository_spec.rb +17 -17
  463. data/spec/unit/provider_resolver_spec.rb +4 -4
  464. data/spec/unit/recipe_spec.rb +68 -0
  465. data/spec/unit/resource/alternatives_spec.rb +120 -0
  466. data/spec/unit/resource/apt_preference_spec.rb +0 -18
  467. data/spec/unit/resource/apt_repository_spec.rb +0 -18
  468. data/spec/unit/resource/apt_update_spec.rb +0 -18
  469. data/spec/unit/resource/chef_client_cron_spec.rb +119 -0
  470. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +102 -0
  471. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +70 -0
  472. data/spec/unit/resource/chef_vault_secret_spec.rb +40 -0
  473. data/spec/unit/resource/chocolatey_source_spec.rb +2 -1
  474. data/spec/unit/resource/cron_d_spec.rb +6 -48
  475. data/spec/unit/resource/cron_spec.rb +4 -10
  476. data/spec/unit/resource/gem_package_spec.rb +3 -3
  477. data/spec/unit/resource/helpers/cron_validations_spec.rb +77 -0
  478. data/spec/unit/resource/link_spec.rb +0 -4
  479. data/spec/unit/resource/locale_spec.rb +0 -34
  480. data/spec/unit/resource/msu_package_spec.rb +4 -0
  481. data/spec/unit/resource/ohai_spec.rb +56 -2
  482. data/spec/unit/resource/plist_spec.rb +130 -0
  483. data/spec/unit/resource/powershell_script_spec.rb +0 -5
  484. data/spec/unit/resource/{git_spec.rb → scm/git_spec.rb} +50 -2
  485. data/spec/unit/resource/{scm_spec.rb → scm/scm.rb} +1 -52
  486. data/spec/unit/resource/{subversion_spec.rb → scm/subversion_spec.rb} +2 -3
  487. data/spec/unit/resource/service_spec.rb +4 -0
  488. data/spec/unit/resource/user_spec.rb +2 -2
  489. data/spec/unit/resource/user_ulimit_spec.rb +53 -0
  490. data/spec/unit/resource/windows_feature_dism_spec.rb +2 -17
  491. data/spec/unit/resource/windows_feature_powershell_spec.rb +2 -17
  492. data/spec/unit/resource/windows_firewall_rule_spec.rb +88 -41
  493. data/spec/unit/resource/windows_package_spec.rb +14 -0
  494. data/spec/unit/resource/windows_service_spec.rb +9 -0
  495. data/spec/unit/resource_reporter_spec.rb +2 -6
  496. data/spec/unit/resource_spec.rb +10 -3
  497. data/spec/unit/run_lock_spec.rb +1 -1
  498. data/spec/unit/scan_access_control_spec.rb +1 -1
  499. data/spec/unit/search/query_spec.rb +1 -1
  500. data/spec/unit/win32/registry_spec.rb +1 -1
  501. data/tasks/rspec.rb +6 -14
  502. metadata +92 -37
  503. data/lib/chef/dsl/core.rb +0 -52
  504. data/lib/chef/knife/cookbook_site_share.rb +0 -41
  505. data/lib/chef/knife/cookbook_site_unshare.rb +0 -41
  506. data/lib/chef/provider/apt_preference.rb +0 -93
  507. data/lib/chef/provider/apt_repository.rb +0 -358
  508. data/lib/chef/provider/apt_update.rb +0 -79
  509. data/lib/chef/provider/log.rb +0 -43
  510. data/lib/chef/provider/mdadm.rb +0 -85
  511. data/lib/chef/provider/ohai.rb +0 -45
  512. data/lib/chef/resource/git.rb +0 -37
  513. data/spec/unit/provider/ohai_spec.rb +0 -84
@@ -78,7 +78,7 @@ describe Chef::Cookbook::GemInstaller do
78
78
 
79
79
  it "generates a valid Gemfile when Chef::Config[:rubygems_url] is set to a String" do
80
80
  expect(gem_installer).to receive(:shell_out!).and_return(shell_out)
81
- Chef::Config[:rubygems_url] = "https://www.rubygems.org"
81
+ Chef::Config[:rubygems_url] = "https://rubygems.org"
82
82
  expect { gem_installer.install }.to_not raise_error
83
83
 
84
84
  expect(bundler_dsl.dependencies.find { |d| d.name == "httpclient" }.requirements_list.length).to eql(2)
@@ -86,7 +86,7 @@ describe Chef::Cookbook::GemInstaller do
86
86
 
87
87
  it "generates a valid Gemfile when Chef::Config[:rubygems_url] is set to an Array" do
88
88
  expect(gem_installer).to receive(:shell_out!).and_return(shell_out)
89
- Chef::Config[:rubygems_url] = [ "https://www.rubygems.org" ]
89
+ Chef::Config[:rubygems_url] = [ "https://rubygems.org" ]
90
90
 
91
91
  expect { gem_installer.install }.to_not raise_error
92
92
 
@@ -29,7 +29,7 @@ describe Chef::Cookbook::Metadata do
29
29
  @fields = %i{name description long_description maintainer
30
30
  maintainer_email license platforms dependencies
31
31
  providing recipes version source_url issues_url
32
- privacy ohai_versions chef_versions gems}
32
+ privacy ohai_versions chef_versions gems eager_load_libraries}
33
33
  end
34
34
 
35
35
  it "does not depend on object identity for equality" do
@@ -127,6 +127,10 @@ describe Chef::Cookbook::Metadata do
127
127
  it "is not private" do
128
128
  expect(metadata.privacy).to eq(false)
129
129
  end
130
+
131
+ it "has eager_load_libraries set to true" do
132
+ expect(metadata.eager_load_libraries).to eq(true)
133
+ end
130
134
  end
131
135
 
132
136
  describe "validation" do
@@ -179,6 +183,7 @@ describe Chef::Cookbook::Metadata do
179
183
  source_url: "http://example.com",
180
184
  issues_url: "http://example.com/issues",
181
185
  privacy: true,
186
+ eager_load_libraries: false,
182
187
  }
183
188
  params.sort_by(&:to_s).each do |field, field_value|
184
189
  describe field do
@@ -269,8 +274,33 @@ describe Chef::Cookbook::Metadata do
269
274
 
270
275
  it "errors on self-dependencies" do
271
276
  metadata.name("foo")
272
- expect { metadata.depends("foo") }.to raise_error
273
- # FIXME: add the error type
277
+ expect { metadata.depends("foo") }.to raise_error(RuntimeError, /Cookbook depends on itself/)
278
+ end
279
+ end
280
+
281
+ describe "eager_load_libraries" do
282
+ it "can be set to true" do
283
+ metadata.send(:eager_load_libraries, true)
284
+ expect(metadata.send(:eager_load_libraries)).to eql(true)
285
+ end
286
+
287
+ it "can be set to false" do
288
+ metadata.send(:eager_load_libraries, false)
289
+ expect(metadata.send(:eager_load_libraries)).to eql(false)
290
+ end
291
+
292
+ it "can be set to a string" do
293
+ metadata.send(:eager_load_libraries, "default.rb")
294
+ expect(metadata.send(:eager_load_libraries)).to eql("default.rb")
295
+ end
296
+
297
+ it "can be set to an array" do
298
+ metadata.send(:eager_load_libraries, [ "default.rb", "foo/*/**.rb" ])
299
+ expect(metadata.send(:eager_load_libraries)).to eql([ "default.rb", "foo/*/**.rb" ])
300
+ end
301
+
302
+ it "cannot be set to a number" do
303
+ expect { metadata.send(:eager_load_libraries, 1) }.to raise_error(Chef::Exceptions::ValidationFailed)
274
304
  end
275
305
  end
276
306
 
@@ -448,10 +478,11 @@ describe Chef::Cookbook::Metadata do
448
478
  metadata.version "1.2.3"
449
479
  metadata.gem "foo", "~> 1.2"
450
480
  metadata.gem "bar", ">= 2.2", "< 4.0"
451
- metadata.chef_version ">= 11.14.2", "< 11.18.10"
452
- metadata.chef_version ">= 12.2.1", "< 12.5.1"
453
- metadata.ohai_version ">= 7.1.0", "< 7.5.0"
454
- metadata.ohai_version ">= 8.0.1", "< 8.6.0"
481
+ metadata.chef_version "< 11.18.10", ">= 11.14.2"
482
+ metadata.chef_version "< 12.5.1", ">= 12.2.1"
483
+ metadata.ohai_version "< 7.5.0", ">= 7.1.0"
484
+ metadata.ohai_version "< 8.6.0", ">= 8.0.1"
485
+ metadata.eager_load_libraries [ "default.rb", "foo/*/**.rb" ]
455
486
  end
456
487
 
457
488
  it "should produce the same output from to_json and Chef::JSONCompat" do
@@ -537,18 +568,6 @@ describe Chef::Cookbook::Metadata do
537
568
  @hash = metadata.to_hash
538
569
  end
539
570
 
540
- it "should transform deprecated greater than syntax for :dependencies" do
541
- @hash[:dependencies.to_s]["foo::bar"] = ">> 0.2"
542
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
543
- expect(deserial.send(:dependencies)["foo::bar"]).to eq("> 0.2")
544
- end
545
-
546
- it "should transform deprecated less than syntax for :dependencies" do
547
- @hash[:dependencies.to_s]["foo::bar"] = "<< 0.2"
548
- deserial = Chef::Cookbook::Metadata.from_hash(@hash)
549
- expect(deserial.send(:dependencies)["foo::bar"]).to eq("< 0.2")
550
- end
551
-
552
571
  it "should ignore multiple dependency constraints for :dependencies" do
553
572
  @hash[:dependencies.to_s]["foo::bar"] = [ ">= 1.0", "<= 5.2" ]
554
573
  deserial = Chef::Cookbook::Metadata.from_hash(@hash)
@@ -15,10 +15,16 @@
15
15
  # limitations under the License.
16
16
  #
17
17
 
18
- require File.expand_path("../../spec_helper", __FILE__)
18
+ require_relative "../spec_helper"
19
19
  require "chef/data_collector"
20
20
  require "socket"
21
21
 
22
+ #
23
+ # FIXME FIXME FIXME: What we need to do here is have the ability to construct a real resource collection
24
+ # with some test resources that will correctly be up-to-date/updated/skipped/failed/unprocessed and really
25
+ # converge a client with them (sort of chefspec-like construction of a Chef::Client but with the actions
26
+ # actually running -- another testing requirement similar to the integration testing framework in cheffish as well)
27
+ #
22
28
  describe Chef::DataCollector do
23
29
  before(:each) do
24
30
  Chef::Config[:enable_reporting] = true
@@ -30,9 +36,23 @@ describe Chef::DataCollector do
30
36
 
31
37
  let(:data_collector) { Chef::DataCollector::Reporter.new(events) }
32
38
 
33
- let(:new_resource) { Chef::Resource::File.new("/tmp/a-file.txt") }
39
+ let(:new_resource) do
40
+ new_resource = Chef::Resource::File.new("/tmp/a-file.txt")
41
+ new_resource.checksum nil
42
+ new_resource
43
+ end
44
+
45
+ let(:current_resource) do
46
+ current_resource = Chef::Resource::File.new("/tmp/a-file.txt")
47
+ current_resource.checksum "1234123412341234123412341234123412341234123412341234123412341234"
48
+ current_resource
49
+ end
34
50
 
35
- let(:current_resource) { Chef::Resource::File.new("/tmp/a-file.txt") }
51
+ let(:after_resource) do
52
+ after_resource = Chef::Resource::File.new("/tmp/a-file.txt")
53
+ after_resource.checksum "6789678967896789678967896789678967896789678967896789678967896789"
54
+ after_resource
55
+ end
36
56
 
37
57
  let(:events) { Chef::EventDispatch::Dispatcher.new }
38
58
 
@@ -130,10 +150,10 @@ describe Chef::DataCollector do
130
150
  new_resource.respond_to?(:diff) && %w{updated failed}.include?(status)
131
151
  end
132
152
 
133
- def resource_record_for(current_resource, new_resource, action, status, duration)
153
+ def resource_record_for(new_resource, before_resource, after_resource, action, status, duration)
134
154
  {
135
- "after" => new_resource.state_for_resource_reporter,
136
- "before" => current_resource&.state_for_resource_reporter,
155
+ "after" => after_resource&.state_for_resource_reporter || {},
156
+ "before" => before_resource&.state_for_resource_reporter || {},
137
157
  "cookbook_name" => cookbook_name,
138
158
  "cookbook_version" => cookbook_version.version,
139
159
  "delta" => resource_has_diff(new_resource, status) ? new_resource.diff : "",
@@ -634,13 +654,14 @@ describe Chef::DataCollector do
634
654
  context "when the run contains a file resource that is up-to-date" do
635
655
  let(:total_resource_count) { 1 }
636
656
  let(:updated_resource_count) { 0 }
637
- let(:resource_record) { [ resource_record_for(current_resource, new_resource, :create, "up-to-date", "1234") ] }
657
+ let(:resource_record) { [ resource_record_for(new_resource, current_resource, after_resource, :create, "up-to-date", "1234") ] }
638
658
  let(:status) { "success" }
639
659
 
640
660
  before do
641
661
  events.resource_action_start(new_resource, :create)
642
662
  events.resource_current_state_loaded(new_resource, :create, current_resource)
643
663
  events.resource_up_to_date(new_resource, :create)
664
+ events.resource_after_state_loaded(new_resource, :create, after_resource)
644
665
  new_resource.instance_variable_set(:@elapsed_time, 1.2345)
645
666
  events.resource_completed(new_resource)
646
667
  events.converge_complete
@@ -653,13 +674,14 @@ describe Chef::DataCollector do
653
674
  context "when the run contains a file resource that is updated" do
654
675
  let(:total_resource_count) { 1 }
655
676
  let(:updated_resource_count) { 1 }
656
- let(:resource_record) { [ resource_record_for(current_resource, new_resource, :create, "updated", "1234") ] }
677
+ let(:resource_record) { [ resource_record_for(new_resource, current_resource, after_resource, :create, "updated", "1234") ] }
657
678
  let(:status) { "success" }
658
679
 
659
680
  before do
660
681
  events.resource_action_start(new_resource, :create)
661
682
  events.resource_current_state_loaded(new_resource, :create, current_resource)
662
683
  events.resource_updated(new_resource, :create)
684
+ events.resource_after_state_loaded(new_resource, :create, after_resource)
663
685
  new_resource.instance_variable_set(:@elapsed_time, 1.2345)
664
686
  events.resource_completed(new_resource)
665
687
  events.converge_complete
@@ -679,7 +701,7 @@ describe Chef::DataCollector do
679
701
  allow(r).to receive(:cookbook_version).and_return(cookbook_version)
680
702
  r
681
703
  end
682
- let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(current_resource, new_resource, :create, "updated", "1234") ] }
704
+ let(:resource_record) { [ resource_record_for(implementation_resource, implementation_resource, implementation_resource, :create, "updated", "2345"), resource_record_for(new_resource, current_resource, after_resource, :create, "updated", "1234") ] }
683
705
  let(:status) { "success" }
684
706
 
685
707
  before do
@@ -689,10 +711,12 @@ describe Chef::DataCollector do
689
711
  events.resource_action_start(implementation_resource , :create)
690
712
  events.resource_current_state_loaded(implementation_resource, :create, implementation_resource)
691
713
  events.resource_updated(implementation_resource, :create)
714
+ events.resource_after_state_loaded(implementation_resource, :create, implementation_resource)
692
715
  implementation_resource.instance_variable_set(:@elapsed_time, 2.3456)
693
716
  events.resource_completed(implementation_resource)
694
717
 
695
718
  events.resource_updated(new_resource, :create)
719
+ events.resource_after_state_loaded(new_resource, :create, after_resource)
696
720
  new_resource.instance_variable_set(:@elapsed_time, 1.2345)
697
721
  events.resource_completed(new_resource)
698
722
  events.converge_complete
@@ -706,7 +730,7 @@ describe Chef::DataCollector do
706
730
  let(:total_resource_count) { 1 }
707
731
  let(:updated_resource_count) { 0 }
708
732
  let(:resource_record) do
709
- rec = resource_record_for(current_resource, new_resource, :create, "skipped", "1234")
733
+ rec = resource_record_for(new_resource, nil, nil, :create, "skipped", "1234")
710
734
  rec["conditional"] = "not_if { #code block }" # FIXME: "#code block" is poor, is there some way to fix this?
711
735
  [ rec ]
712
736
  end
@@ -715,7 +739,6 @@ describe Chef::DataCollector do
715
739
  before do
716
740
  conditional = (new_resource.not_if { true }).first
717
741
  events.resource_action_start(new_resource, :create)
718
- events.resource_current_state_loaded(new_resource, :create, current_resource)
719
742
  events.resource_skipped(new_resource, :create, conditional)
720
743
  new_resource.instance_variable_set(:@elapsed_time, 1.2345)
721
744
  events.resource_completed(new_resource)
@@ -730,7 +753,7 @@ describe Chef::DataCollector do
730
753
  let(:total_resource_count) { 1 }
731
754
  let(:updated_resource_count) { 0 }
732
755
  let(:resource_record) do
733
- rec = resource_record_for(current_resource, new_resource, :create, "skipped", "1234")
756
+ rec = resource_record_for(new_resource, nil, nil, :create, "skipped", "1234")
734
757
  rec["conditional"] = 'not_if "true"'
735
758
  [ rec ]
736
759
  end
@@ -739,7 +762,6 @@ describe Chef::DataCollector do
739
762
  before do
740
763
  conditional = (new_resource.not_if "true").first
741
764
  events.resource_action_start(new_resource, :create)
742
- events.resource_current_state_loaded(new_resource, :create, current_resource)
743
765
  events.resource_skipped(new_resource, :create, conditional)
744
766
  new_resource.instance_variable_set(:@elapsed_time, 1.2345)
745
767
  events.resource_completed(new_resource)
@@ -756,7 +778,7 @@ describe Chef::DataCollector do
756
778
  let(:total_resource_count) { 1 }
757
779
  let(:updated_resource_count) { 0 }
758
780
  let(:resource_record) do
759
- rec = resource_record_for(current_resource, new_resource, :create, "failed", "1234")
781
+ rec = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
760
782
  rec["error_message"] = "imperial to metric conversion error"
761
783
  [ rec ]
762
784
  end
@@ -783,7 +805,7 @@ describe Chef::DataCollector do
783
805
  let(:total_resource_count) { 1 }
784
806
  let(:updated_resource_count) { 0 }
785
807
  let(:resource_record) do
786
- rec = resource_record_for(current_resource, new_resource, :create, "failed", "1234")
808
+ rec = resource_record_for(new_resource, nil, nil, :create, "failed", "1234")
787
809
  rec["before"] = {}
788
810
  rec["error_message"] = "imperial to metric conversion error"
789
811
  [ rec ]
@@ -818,10 +840,9 @@ describe Chef::DataCollector do
818
840
  res
819
841
  end
820
842
  let(:resource_record) do
821
- rec1 = resource_record_for(current_resource, new_resource, :create, "failed", "1234")
843
+ rec1 = resource_record_for(new_resource, current_resource, nil, :create, "failed", "1234")
822
844
  rec1["error_message"] = "imperial to metric conversion error"
823
- rec2 = resource_record_for(nil, unprocessed_resource, :nothing, "unprocessed", "")
824
- rec2["before"] = {}
845
+ rec2 = resource_record_for(unprocessed_resource, nil, nil, :nothing, "unprocessed", "")
825
846
  [ rec1, rec2 ]
826
847
  end
827
848
  let(:status) { "failure" }
@@ -93,7 +93,7 @@ describe Chef::FileAccessControl do
93
93
  end
94
94
 
95
95
  it "wraps uids to their negative complements to correctly handle negative uids" do
96
- # More: Mac OS X (at least) has negative UIDs for 'nobody' and some other
96
+ # More: macOS (at least) has negative UIDs for 'nobody' and some other
97
97
  # users. Ruby doesn't believe in negative UIDs so you get the diminished radix
98
98
  # complement (i.e., it wraps around the maximum size of C unsigned int) of these
99
99
  # uids. So we have to get ruby and negative uids to smoke the peace pipe
@@ -16,7 +16,7 @@
16
16
  # limitations under the License.
17
17
  #
18
18
 
19
- require File.expand_path("../../spec_helper", __FILE__)
19
+ require_relative "../spec_helper"
20
20
  require "chef/json_compat"
21
21
 
22
22
  describe Chef::JSONCompat do
@@ -25,12 +25,12 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
25
25
  let(:stdin) { StringIO.new }
26
26
  let(:ui) { Chef::Knife::UI.new(stdout, stderr, stdin, {}) }
27
27
 
28
- let(:knife_config) { {} }
28
+ let(:config) { {} }
29
29
 
30
30
  let(:client) { Chef::ApiClient.new }
31
31
 
32
32
  let(:chef_vault_handler) do
33
- chef_vault_handler = Chef::Knife::Bootstrap::ChefVaultHandler.new(knife_config: knife_config, ui: ui)
33
+ chef_vault_handler = Chef::Knife::Bootstrap::ChefVaultHandler.new(config: config, ui: ui)
34
34
  chef_vault_handler
35
35
  end
36
36
 
@@ -55,28 +55,28 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
55
55
  expect(bootstrap_vault_item).to receive(:save).at_least(:once)
56
56
  end
57
57
 
58
- context "from knife_config[:bootstrap_vault_item]" do
58
+ context "from config[:bootstrap_vault_item]" do
59
59
  it "sets a single item as a scalar" do
60
- knife_config[:bootstrap_vault_item] = { "vault" => "item1" }
60
+ config[:bootstrap_vault_item] = { "vault" => "item1" }
61
61
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
62
62
  chef_vault_handler.run(client)
63
63
  end
64
64
 
65
65
  it "sets a single item as an array" do
66
- knife_config[:bootstrap_vault_item] = { "vault" => [ "item1" ] }
66
+ config[:bootstrap_vault_item] = { "vault" => [ "item1" ] }
67
67
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
68
68
  chef_vault_handler.run(client)
69
69
  end
70
70
 
71
71
  it "sets two items as an array" do
72
- knife_config[:bootstrap_vault_item] = { "vault" => %w{item1 item2} }
72
+ config[:bootstrap_vault_item] = { "vault" => %w{item1 item2} }
73
73
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
74
74
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
75
75
  chef_vault_handler.run(client)
76
76
  end
77
77
 
78
78
  it "sets two vaults from different hash keys" do
79
- knife_config[:bootstrap_vault_item] = { "vault" => %w{item1 item2}, "vault2" => [ "item3" ] }
79
+ config[:bootstrap_vault_item] = { "vault" => %w{item1 item2}, "vault2" => [ "item3" ] }
80
80
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
81
81
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
82
82
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
@@ -84,28 +84,28 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
84
84
  end
85
85
  end
86
86
 
87
- context "from knife_config[:bootstrap_vault_json]" do
87
+ context "from config[:bootstrap_vault_json]" do
88
88
  it "sets a single item as a scalar" do
89
- knife_config[:bootstrap_vault_json] = '{ "vault": "item1" }'
89
+ config[:bootstrap_vault_json] = '{ "vault": "item1" }'
90
90
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
91
91
  chef_vault_handler.run(client)
92
92
  end
93
93
 
94
94
  it "sets a single item as an array" do
95
- knife_config[:bootstrap_vault_json] = '{ "vault": [ "item1" ] }'
95
+ config[:bootstrap_vault_json] = '{ "vault": [ "item1" ] }'
96
96
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
97
97
  chef_vault_handler.run(client)
98
98
  end
99
99
 
100
100
  it "sets two items as an array" do
101
- knife_config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ] }'
101
+ config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ] }'
102
102
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
103
103
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
104
104
  chef_vault_handler.run(client)
105
105
  end
106
106
 
107
107
  it "sets two vaults from different hash keys" do
108
- knife_config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ], "vault2": [ "item3" ] }'
108
+ config[:bootstrap_vault_json] = '{ "vault": [ "item1", "item2" ], "vault2": [ "item3" ] }'
109
109
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item1").and_return(bootstrap_vault_item)
110
110
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault", "item2").and_return(bootstrap_vault_item)
111
111
  expect(chef_vault_handler).to receive(:load_chef_bootstrap_vault_item).with("vault2", "item3").and_return(bootstrap_vault_item)
@@ -113,12 +113,12 @@ describe Chef::Knife::Bootstrap::ChefVaultHandler do
113
113
  end
114
114
  end
115
115
 
116
- context "from knife_config[:bootstrap_vault_file]" do
116
+ context "from config[:bootstrap_vault_file]" do
117
117
 
118
118
  def setup_file_contents(json)
119
119
  stringio = StringIO.new(json)
120
- knife_config[:bootstrap_vault_file] = "/foo/bar/baz"
121
- expect(File).to receive(:read).with(knife_config[:bootstrap_vault_file]).and_return(stringio)
120
+ config[:bootstrap_vault_file] = "/foo/bar/baz"
121
+ expect(File).to receive(:read).with(config[:bootstrap_vault_file]).and_return(stringio)
122
122
  end
123
123
 
124
124
  it "sets a single item as a scalar" do
@@ -25,7 +25,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
25
25
  let(:stdin) { StringIO.new }
26
26
  let(:ui) { Chef::Knife::UI.new(stdout, stderr, stdin, {}) }
27
27
 
28
- let(:knife_config) { {} }
28
+ let(:config) { {} }
29
29
 
30
30
  let(:chef_config) { {} }
31
31
 
@@ -34,7 +34,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
34
34
  let(:rest) { double("Chef::ServerAPI") }
35
35
 
36
36
  let(:client_builder) do
37
- client_builder = Chef::Knife::Bootstrap::ClientBuilder.new(knife_config: knife_config, chef_config: chef_config, ui: ui)
37
+ client_builder = Chef::Knife::Bootstrap::ClientBuilder.new(config: config, chef_config: chef_config, ui: ui)
38
38
  allow(client_builder).to receive(:rest).and_return(rest)
39
39
  allow(client_builder).to receive(:node_name).and_return(node_name)
40
40
  client_builder
@@ -160,7 +160,7 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
160
160
  it "adds tags to the node when given" do
161
161
  tag_receiver = []
162
162
 
163
- knife_config[:tags] = %w{foo bar}
163
+ config[:tags] = %w{foo bar}
164
164
  allow(node).to receive(:run_list).with([])
165
165
  allow(node).to receive(:tags).and_return(tag_receiver)
166
166
  client_builder.run
@@ -168,34 +168,34 @@ describe Chef::Knife::Bootstrap::ClientBuilder do
168
168
  end
169
169
 
170
170
  it "builds a node when the run_list is a string" do
171
- knife_config[:run_list] = "role[base],role[app]"
171
+ config[:run_list] = "role[base],role[app]"
172
172
  expect(node).to receive(:run_list).with(["role[base]", "role[app]"])
173
173
  client_builder.run
174
174
  end
175
175
 
176
176
  it "builds a node when the run_list is an Array" do
177
- knife_config[:run_list] = ["role[base]", "role[app]"]
177
+ config[:run_list] = ["role[base]", "role[app]"]
178
178
  expect(node).to receive(:run_list).with(["role[base]", "role[app]"])
179
179
  client_builder.run
180
180
  end
181
181
 
182
182
  it "builds a node with first_boot_attributes if they're given" do
183
- knife_config[:first_boot_attributes] = { baz: :quux }
183
+ config[:first_boot_attributes] = { baz: :quux }
184
184
  expect(node).to receive(:normal_attrs=).with({ baz: :quux })
185
185
  expect(node).to receive(:run_list).with([])
186
186
  client_builder.run
187
187
  end
188
188
 
189
189
  it "builds a node with an environment if its given" do
190
- knife_config[:environment] = "production"
190
+ config[:environment] = "production"
191
191
  expect(node).to receive(:environment).with("production")
192
192
  expect(node).to receive(:run_list).with([])
193
193
  client_builder.run
194
194
  end
195
195
 
196
196
  it "builds a node with policy_name and policy_group when given" do
197
- knife_config[:policy_name] = "my-app"
198
- knife_config[:policy_group] = "staging"
197
+ config[:policy_name] = "my-app"
198
+ config[:policy_group] = "staging"
199
199
 
200
200
  expect(node).to receive(:run_list).with([])
201
201
  expect(node).to receive(:policy_name=).with("my-app")