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
@@ -382,7 +382,7 @@ describe Chef::Node::Attribute do
382
382
  expect(@attributes["command"]["ps"]).to eq("ps -ef")
383
383
  end
384
384
 
385
- it "should return default data if it is not overriden or in attribute data" do
385
+ it "should return default data if it is not overridden or in attribute data" do
386
386
  expect(@attributes["music"]["mastodon"]).to eq("rocks")
387
387
  end
388
388
 
@@ -1259,12 +1259,12 @@ describe Chef::Node::Attribute do
1259
1259
  describe "frozen immutable strings" do
1260
1260
  it "strings in hashes should be frozen" do
1261
1261
  @attributes.default["foo"]["bar"]["baz"] = "fizz"
1262
- expect { @attributes["foo"]["bar"]["baz"] << "buzz" }.to raise_error(RuntimeError, "can't modify frozen String")
1262
+ expect { @attributes["foo"]["bar"]["baz"] << "buzz" }.to raise_error(FrozenError, /can't modify frozen String/)
1263
1263
  end
1264
1264
 
1265
1265
  it "strings in arrays should be frozen" do
1266
1266
  @attributes.default["foo"]["bar"] = [ "fizz" ]
1267
- expect { @attributes["foo"]["bar"][0] << "buzz" }.to raise_error(RuntimeError, "can't modify frozen String")
1267
+ expect { @attributes["foo"]["bar"][0] << "buzz" }.to raise_error(FrozenError, /can't modify frozen String/)
1268
1268
  end
1269
1269
  end
1270
1270
 
@@ -940,6 +940,23 @@ describe Chef::Node do
940
940
  expect(node["one"].to_hash).to eq({ "two" => { "three" => "forty-two" } })
941
941
  end
942
942
 
943
+ it "converts the platform_version to a Chef::VersionString" do
944
+ node.consume_external_attrs(@ohai_data, {})
945
+ expect(node["platform_version"]).to be_kind_of(Chef::VersionString)
946
+ end
947
+ end
948
+
949
+ describe "merging ohai data" do
950
+ before do
951
+ @ohai_data = { platform: "foo", platform_version: "bar" }
952
+ end
953
+
954
+ it "converts the platform_version to a Chef::VersionString" do
955
+ node.consume_external_attrs(@ohai_data, {})
956
+ node.consume_ohai_data({ "platform_version" => "6.3" })
957
+ expect(node["platform_version"]).to be_kind_of(Chef::VersionString)
958
+ expect(node["platform_version"] =~ "~> 6.1").to be true
959
+ end
943
960
  end
944
961
 
945
962
  describe "preparing for a chef client run" do
@@ -966,6 +983,13 @@ describe Chef::Node do
966
983
  expect(node.normal_attrs).to eq({ "foo" => "bar", "tags" => [] })
967
984
  end
968
985
 
986
+ it "converts the platform_version to a Chef::VersionString" do
987
+ node.consume_external_attrs(@ohai_data, {})
988
+ expect(node.automatic_attrs[:platform_version]).to be_a_kind_of(Chef::VersionString)
989
+ expect(node[:platform_version]).to be_a_kind_of(Chef::VersionString)
990
+ expect(node[:platform_version] =~ "~> 23.6").to be true
991
+ end
992
+
969
993
  end
970
994
 
971
995
  describe "when expanding its run list and merging attributes" do
@@ -18,149 +18,6 @@
18
18
 
19
19
  require "spec_helper"
20
20
 
21
- describe "Chef::Platform#windows_nano_server?" do
22
- include_context "Win32"
23
-
24
- let(:key) { "SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Server\\ServerLevels" }
25
- let(:key_query_value) { 0x0001 }
26
- let(:access) { key_query_value | 0x0100 }
27
- let(:hive) { double("Win32::Registry::HKEY_LOCAL_MACHINE") }
28
- let(:registry) { double("Win32::Registry") }
29
-
30
- before(:all) do
31
- Win32::Registry = Class.new
32
- Win32::Registry::Error = Class.new(RuntimeError)
33
- end
34
-
35
- before do
36
- Win32::Registry::HKEY_LOCAL_MACHINE = hive
37
- Win32::Registry::KEY_QUERY_VALUE = key_query_value
38
- end
39
-
40
- after do
41
- Win32::Registry.send(:remove_const, "HKEY_LOCAL_MACHINE") if defined?(Win32::Registry::HKEY_LOCAL_MACHINE)
42
- Win32::Registry.send(:remove_const, "KEY_QUERY_VALUE") if defined?(Win32::Registry::KEY_QUERY_VALUE)
43
- end
44
-
45
- it "returns false early when not on windows" do
46
- allow(ChefUtils).to receive(:windows?).and_return(false)
47
- expect(Chef::Platform).to_not receive(:require)
48
- expect(Chef::Platform.windows_nano_server?).to be false
49
- end
50
-
51
- it "returns true when the registry value is 1" do
52
- allow(ChefUtils).to receive(:windows?).and_return(true)
53
- allow(Chef::Platform).to receive(:require).with("win32/registry")
54
- expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
55
- .with(key, access)
56
- .and_yield(registry)
57
- expect(registry).to receive(:[]).with("NanoServer").and_return(1)
58
- expect(Chef::Platform.windows_nano_server?).to be true
59
- end
60
-
61
- it "returns false when the registry value is not 1" do
62
- allow(ChefUtils).to receive(:windows?).and_return(true)
63
- allow(Chef::Platform).to receive(:require).with("win32/registry")
64
- expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
65
- .with(key, access)
66
- .and_yield(registry)
67
- expect(registry).to receive(:[]).with("NanoServer").and_return(0)
68
- expect(Chef::Platform.windows_nano_server?).to be false
69
- end
70
-
71
- it "returns false when the registry value does not exist" do
72
- allow(ChefUtils).to receive(:windows?).and_return(true)
73
- allow(Chef::Platform).to receive(:require).with("win32/registry")
74
- expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
75
- .with(key, access)
76
- .and_yield(registry)
77
- expect(registry).to receive(:[]).with("NanoServer")
78
- .and_raise(Win32::Registry::Error, "The system cannot find the file specified.")
79
- expect(Chef::Platform.windows_nano_server?).to be false
80
- end
81
-
82
- it "returns false when the registry key does not exist" do
83
- allow(ChefUtils).to receive(:windows?).and_return(true)
84
- allow(Chef::Platform).to receive(:require).with("win32/registry")
85
- expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
86
- .with(key, access)
87
- .and_raise(Win32::Registry::Error, "The system cannot find the file specified.")
88
- expect(Chef::Platform.windows_nano_server?).to be false
89
- end
90
- end
91
-
92
- describe "Chef::Platform#supports_msi?" do
93
- include_context "Win32" # clear and restore Win32:: namespace
94
-
95
- let(:key) { "System\\CurrentControlSet\\Services\\msiserver" }
96
- let(:key_query_value) { 0x0001 }
97
- let(:access) { key_query_value }
98
- let(:hive) { double("Win32::Registry::HKEY_LOCAL_MACHINE") }
99
- let(:registry) { double("Win32::Registry") }
100
-
101
- before(:all) do
102
- Win32::Registry = Class.new
103
- Win32::Registry::Error = Class.new(RuntimeError)
104
- end
105
-
106
- before do
107
- Win32::Registry::HKEY_LOCAL_MACHINE = hive
108
- Win32::Registry::KEY_QUERY_VALUE = key_query_value
109
- end
110
-
111
- after do
112
- Win32::Registry.send(:remove_const, "HKEY_LOCAL_MACHINE") if defined?(Win32::Registry::HKEY_LOCAL_MACHINE)
113
- Win32::Registry.send(:remove_const, "KEY_QUERY_VALUE") if defined?(Win32::Registry::KEY_QUERY_VALUE)
114
- end
115
-
116
- it "returns false early when not on windows" do
117
- allow(ChefUtils).to receive(:windows?).and_return(false)
118
- expect(Chef::Platform).to_not receive(:require)
119
- expect(Chef::Platform.supports_msi?).to be false
120
- end
121
-
122
- it "returns true when the registry key exists" do
123
- allow(ChefUtils).to receive(:windows?).and_return(true)
124
- allow(Chef::Platform).to receive(:require).with("win32/registry")
125
- expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
126
- .with(key, access)
127
- .and_yield(registry)
128
- expect(Chef::Platform.supports_msi?).to be true
129
- end
130
-
131
- it "returns false when the registry key does not exist" do
132
- allow(ChefUtils).to receive(:windows?).and_return(true)
133
- allow(Chef::Platform).to receive(:require).with("win32/registry")
134
- expect(Win32::Registry::HKEY_LOCAL_MACHINE).to receive(:open)
135
- .with(key, access)
136
- .and_raise(Win32::Registry::Error, "The system cannot find the file specified.")
137
- expect(Chef::Platform.supports_msi?).to be false
138
- end
139
- end
140
-
141
- describe "Chef::Platform#supports_dsc?" do
142
- it "returns false if PowerShell is not present" do
143
- node = Chef::Node.new
144
- expect(Chef::Platform.supports_dsc?(node)).to be_falsey
145
- end
146
-
147
- ["1.0", "2.0", "3.0"].each do |version|
148
- it "returns false for PowerShell #{version}" do
149
- node = Chef::Node.new
150
- node.automatic[:languages][:powershell][:version] = version
151
- expect(Chef::Platform.supports_dsc?(node)).to be_falsey
152
- end
153
- end
154
-
155
- ["4.0", "5.0"].each do |version|
156
- it "returns true for PowerShell #{version}" do
157
- node = Chef::Node.new
158
- node.automatic[:languages][:powershell][:version] = version
159
- expect(Chef::Platform.supports_dsc?(node)).to be_truthy
160
- end
161
- end
162
- end
163
-
164
21
  describe "Chef::Platform#supports_dsc_invoke_resource?" do
165
22
  it "returns false if powershell is not present" do
166
23
  node = Chef::Node.new
@@ -285,8 +285,8 @@ describe "Chef::Resource#identity and #state" do
285
285
  it "identity when x is not defined returns the value of x" do
286
286
  expect(resource.identity).to eq "blah"
287
287
  end
288
- it "state when x is not defined returns the value of x" do
289
- expect(resource.state_for_resource_reporter).to eq(x: "blah")
288
+ it "the name property is not included in the desired state" do
289
+ expect(resource.state_for_resource_reporter).to eq({})
290
290
  end
291
291
  end
292
292
  end
@@ -332,12 +332,17 @@ describe "Chef::Resource#identity and #state" do
332
332
  end
333
333
 
334
334
  with_property ":x, name_property: true" do
335
- # it "Unset values with name_property are included in state" do
336
- # expect(resource.state_for_resource_reporter).to eq({ x: 'blah' })
337
- # end
338
- it "Set values with name_property are included in state" do
335
+ it "Is by default the identity property if no other identity property is included" do
336
+ expect(resource.identity).to eq("blah")
337
+ end
338
+
339
+ it "Unset values with name_property are not included in state" do
340
+ expect(resource.state_for_resource_reporter).to eq({})
341
+ end
342
+
343
+ it "Set values with name_property are not included in state" do
339
344
  resource.x 1
340
- expect(resource.state_for_resource_reporter).to eq(x: 1)
345
+ expect(resource.state_for_resource_reporter).to eq({})
341
346
  end
342
347
  end
343
348
 
@@ -45,11 +45,22 @@ describe "Chef::Resource.property validation" do
45
45
  def self.blah
46
46
  "class#{Namer.next_index}"
47
47
  end
48
+
49
+ action :doit do
50
+ # this needs to not reference any properties
51
+ end
52
+
53
+ action :doit2 do
54
+ # this needs to not reference any properties
55
+ end
48
56
  end
49
57
  end
50
58
 
59
+ let(:node) { Chef::Node.new }
60
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
61
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
51
62
  let(:resource) do
52
- resource_class.new("blah")
63
+ resource_class.new("blah", run_context)
53
64
  end
54
65
 
55
66
  def self.english_join(values)
@@ -576,6 +587,19 @@ describe "Chef::Resource.property validation" do
576
587
  it "value nil emits a validation failed error because it must have a value" do
577
588
  expect { resource.x nil }.to raise_error Chef::Exceptions::ValidationFailed
578
589
  end
590
+ it "fails if it is not specified, on running the action, even if it is not referenced" do
591
+ expect { resource.run_action(:doit) }.to raise_error Chef::Exceptions::ValidationFailed
592
+ end
593
+ end
594
+
595
+ with_property ":x, required: %i{doit}" do
596
+ it "fails if it is not specified, on running the doit action, even if it is not referenced" do
597
+ expect { resource.run_action(:doit) }.to raise_error Chef::Exceptions::ValidationFailed
598
+ end
599
+
600
+ it "does not fail if it is not specified, on running the doit2 action" do
601
+ expect { resource.run_action(:doit2) }.not_to raise_error
602
+ end
579
603
  end
580
604
 
581
605
  with_property ":x, String, required: true" do
@@ -542,7 +542,7 @@ describe "Chef::Resource.property" do
542
542
  expect(resource.x).to eq ""
543
543
  end
544
544
  it "x is immutable" do
545
- expect { resource.x << "foo" }.to raise_error(RuntimeError, "can't modify frozen String")
545
+ expect { resource.x << "foo" }.to raise_error(FrozenError, /can't modify frozen String/)
546
546
  end
547
547
  end
548
548
 
@@ -562,7 +562,7 @@ describe "Chef::Resource.property" do
562
562
  expect(resource.x).to eq({})
563
563
  end
564
564
  it "x is immutable" do
565
- expect { resource.x["foo"] = "bar" }.to raise_error(RuntimeError, "can't modify frozen Hash")
565
+ expect { resource.x["foo"] = "bar" }.to raise_error(FrozenError, /can't modify frozen Hash/)
566
566
  end
567
567
  it "The same exact value is returned multiple times in a row" do
568
568
  value = resource.x
@@ -595,13 +595,13 @@ describe "Chef::Resource.property" do
595
595
  expect(resource.x).to eq([{ foo: "bar" }])
596
596
  end
597
597
  it "x is immutable" do
598
- expect { resource.x << :other }.to raise_error(RuntimeError, "can't modify frozen Array")
598
+ expect { resource.x << :other }.to raise_error(FrozenError, /can't modify frozen Array/)
599
599
  end
600
600
  it "x.first is immutable" do
601
- expect { resource.x.first[:foo] = "other" }.to raise_error(RuntimeError, "can't modify frozen Hash")
601
+ expect { resource.x.first[:foo] = "other" }.to raise_error(FrozenError, /can't modify frozen Hash/)
602
602
  end
603
603
  it "x.first[:foo] is immutable" do
604
- expect { resource.x.first[:foo] << "other" }.to raise_error(RuntimeError, "can't modify frozen String")
604
+ expect { resource.x.first[:foo] << "other" }.to raise_error(FrozenError, /can't modify frozen String/)
605
605
  end
606
606
  end
607
607
  end
@@ -1022,6 +1022,9 @@ describe "Chef::Resource.property" do
1022
1022
  it "defaults x to resource.name" do
1023
1023
  expect(resource.x).to eq "blah"
1024
1024
  end
1025
+ it "defaults to being part of the identity if there is no other identity" do
1026
+ expect(resource.identity).to eq "blah"
1027
+ end
1025
1028
  it "does not pick up resource.name if set" do
1026
1029
  expect(resource.x 10).to eq 10
1027
1030
  expect(resource.x).to eq 10
@@ -1072,13 +1075,13 @@ describe "Chef::Resource.property" do
1072
1075
 
1073
1076
  it "raises an error if both name_property and name_attribute are specified" do
1074
1077
  expect { resource_class.property :x, name_property: false, name_attribute: 1 }.to raise_error ArgumentError,
1075
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1078
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)/
1076
1079
  expect { resource_class.property :x, name_property: false, name_attribute: nil }.to raise_error ArgumentError,
1077
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1080
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)/
1078
1081
  expect { resource_class.property :x, name_property: false, name_attribute: false }.to raise_error ArgumentError,
1079
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1082
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)/
1080
1083
  expect { resource_class.property :x, name_property: true, name_attribute: true }.to raise_error ArgumentError,
1081
- /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)./
1084
+ /name_attribute and name_property are functionally identical and both cannot be specified on a property at once. Use just one on property x of resource chef_resource_property_spec_(\d+)/
1082
1085
  end
1083
1086
 
1084
1087
  context "property_type" do
@@ -18,24 +18,28 @@
18
18
  #
19
19
 
20
20
  require "spec_helper"
21
+ require "chef/resource/apt_preference"
21
22
 
22
- describe Chef::Provider::AptPreference do
23
- let(:new_resource) { Chef::Resource::AptPreference.new("libmysqlclient16.1*") }
23
+ # FIXME: provider has been moved to a custom resource, should migrate the unit tests
24
+ #
25
+ describe "Chef::Provider::AptPreference" do
26
+ let(:node) { Chef::Node.new }
27
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
28
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
29
+ let(:collection) { double("resource collection") }
30
+ let(:new_resource) { Chef::Resource::AptPreference.new("libmysqlclient16.1*", run_context) }
24
31
  let(:pref_dir) { Dir.mktmpdir("apt_pref_d") }
32
+ let(:provider) { new_resource.provider_for_action(:add) }
25
33
 
26
34
  before do
27
- stub_const("Chef::Provider::AptPreference::APT_PREFERENCE_DIR", pref_dir)
35
+ node.automatic["platform_family"] = "debian"
36
+ Chef::Resource::AptPreference.send(:remove_const, :APT_PREFERENCE_DIR)
37
+ Chef::Resource::AptPreference.const_set(:APT_PREFERENCE_DIR, pref_dir)
38
+
28
39
  new_resource.pin = "1.0.1"
29
40
  new_resource.pin_priority 1001
30
41
  end
31
42
 
32
- let(:provider) do
33
- node = Chef::Node.new
34
- events = Chef::EventDispatch::Dispatcher.new
35
- run_context = Chef::RunContext.new(node, {}, events)
36
- Chef::Provider::AptPreference.new(new_resource, run_context)
37
- end
38
-
39
43
  it "responds to load_current_resource" do
40
44
  expect(provider).to respond_to(:load_current_resource)
41
45
  end
@@ -18,41 +18,39 @@
18
18
 
19
19
  require "spec_helper"
20
20
 
21
- # Now we are using the option --with-colons that works across old os versions
22
- # as well as the latest (16.10). This for both `apt-key` and `gpg` commands
23
- #
24
- # Output of the command:
25
- # => apt-key adv --list-public-keys --with-fingerprint --with-colons
26
- APT_KEY_FINGER = <<~EOF.freeze
27
- tru:t:1:1488924856:0:3:1:5
28
- pub:-:1024:17:40976EAF437D05B5:2004-09-12:::-:Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>::scESC:
29
- fpr:::::::::630239CC130E1A7FD81A27B140976EAF437D05B5:
30
- sub:-:2048:16:251BEFF479164387:2004-09-12::::::e:
31
- pub:-:1024:17:46181433FBB75451:2004-12-30:::-:Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>::scSC:
32
- fpr:::::::::C5986B4F1257FFA86632CBA746181433FBB75451:
33
- pub:-:4096:1:3B4FE6ACC0B21F32:2012-05-11:::-:Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>::scSC:
34
- fpr:::::::::790BC7277767219C42C86F933B4FE6ACC0B21F32:
35
- pub:-:4096:1:D94AA3F0EFE21092:2012-05-11:::-:Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>::scSC:
36
- fpr:::::::::843938DF228D22F7B3742BC0D94AA3F0EFE21092:
37
- EOF
38
-
39
- # Output of the command:
40
- # => gpg --with-fingerprint --with-colons [FILE]
41
- GPG_FINGER = <<~EOF.freeze
42
- pub:-:1024:17:327574EE02A818DD:2009-04-22:::-:Cloudera Apt Repository:
43
- fpr:::::::::F36A89E33CC1BD0F71079007327574EE02A818DD:
44
- sub:-:2048:16:84080586D1CA74A1:2009-04-22::::
45
- EOF
46
-
47
- describe Chef::Provider::AptRepository do
48
- let(:new_resource) { Chef::Resource::AptRepository.new("multiverse") }
49
-
50
- let(:provider) do
51
- node = Chef::Node.new
52
- events = Chef::EventDispatch::Dispatcher.new
53
- run_context = Chef::RunContext.new(node, {}, events)
54
- Chef::Provider::AptRepository.new(new_resource, run_context)
55
- end
21
+ describe "Chef::Provider::AptRepository" do
22
+ # Now we are using the option --with-colons that works across old os versions
23
+ # as well as the latest (16.10). This for both `apt-key` and `gpg` commands
24
+ #
25
+ # Output of the command:
26
+ # => apt-key adv --list-public-keys --with-fingerprint --with-colons
27
+ APT_KEY_FINGER = <<~EOF.freeze
28
+ tru:t:1:1488924856:0:3:1:5
29
+ pub:-:1024:17:40976EAF437D05B5:2004-09-12:::-:Ubuntu Archive Automatic Signing Key <ftpmaster@ubuntu.com>::scESC:
30
+ fpr:::::::::630239CC130E1A7FD81A27B140976EAF437D05B5:
31
+ sub:-:2048:16:251BEFF479164387:2004-09-12::::::e:
32
+ pub:-:1024:17:46181433FBB75451:2004-12-30:::-:Ubuntu CD Image Automatic Signing Key <cdimage@ubuntu.com>::scSC:
33
+ fpr:::::::::C5986B4F1257FFA86632CBA746181433FBB75451:
34
+ pub:-:4096:1:3B4FE6ACC0B21F32:2012-05-11:::-:Ubuntu Archive Automatic Signing Key (2012) <ftpmaster@ubuntu.com>::scSC:
35
+ fpr:::::::::790BC7277767219C42C86F933B4FE6ACC0B21F32:
36
+ pub:-:4096:1:D94AA3F0EFE21092:2012-05-11:::-:Ubuntu CD Image Automatic Signing Key (2012) <cdimage@ubuntu.com>::scSC:
37
+ fpr:::::::::843938DF228D22F7B3742BC0D94AA3F0EFE21092:
38
+ EOF
39
+
40
+ # Output of the command:
41
+ # => gpg --with-fingerprint --with-colons [FILE]
42
+ APG_GPG_FINGER = <<~EOF.freeze
43
+ pub:-:1024:17:327574EE02A818DD:2009-04-22:::-:Cloudera Apt Repository:
44
+ fpr:::::::::F36A89E33CC1BD0F71079007327574EE02A818DD:
45
+ sub:-:2048:16:84080586D1CA74A1:2009-04-22::::
46
+ EOF
47
+
48
+ let(:node) { Chef::Node.new }
49
+ let(:events) { Chef::EventDispatch::Dispatcher.new }
50
+ let(:run_context) { Chef::RunContext.new(node, {}, events) }
51
+ let(:collection) { double("resource collection") }
52
+ let(:new_resource) { Chef::Resource::AptRepository.new("multiverse", run_context) }
53
+ let(:provider) { new_resource.provider_for_action(:add) }
56
54
 
57
55
  let(:apt_key_finger_cmd) do
58
56
  %w{apt-key adv --list-public-keys --with-fingerprint --with-colons}
@@ -63,7 +61,7 @@ describe Chef::Provider::AptRepository do
63
61
  end
64
62
 
65
63
  let(:gpg_finger) do
66
- double("shell_out", stdout: GPG_FINGER, exitstatus: 0, error?: false)
64
+ double("shell_out", stdout: APG_GPG_FINGER, exitstatus: 0, error?: false)
67
65
  end
68
66
 
69
67
  let(:gpg_shell_out_success) do