chef 15.11.3-universal-mingw32 → 16.1.16-universal-mingw32

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -317,12 +317,12 @@ describe Chef::Resource::WindowsTask, :windows_only do
317
317
  expect(subject).not_to be_updated_by_last_action
318
318
  end
319
319
 
320
- it "updates a scheduled task to run every 5 hrs when frequency modifer updated to 5" do
320
+ it "updates a scheduled task to run every 5 hrs when frequency modifier updated to 5" do
321
321
  subject.run_action(:create)
322
322
  current_resource = call_for_load_current_resource
323
323
  trigger_details = current_resource.task.trigger(0)
324
324
  expect(trigger_details[:minutes_interval]).to eq(180)
325
- # updating frequency modifer to 5 from 3
325
+ # updating frequency modifier to 5 from 3
326
326
  subject.frequency_modifier 5
327
327
  subject.run_action(:create)
328
328
  expect(subject).to be_updated_by_last_action
@@ -501,7 +501,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
501
501
 
502
502
  it "raises argument error if frequency_modifier is 'first, second' and day is not provided." do
503
503
  subject.frequency_modifier "first, second"
504
- expect { subject.after_created }.to raise_error("Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be seprated by comma.")
504
+ expect { subject.after_created }.to raise_error("Please select day on which you want to run the task e.g. 'Mon, Tue'. Multiple values must be separated by comma.")
505
505
  end
506
506
 
507
507
  it "raises argument error if months is passed along with frequency_modifier" do
@@ -532,7 +532,7 @@ describe Chef::Resource::WindowsTask, :windows_only do
532
532
  expect { subject.after_created }.to raise_error("frequency_modifier value 0 is invalid. Valid values for :monthly frequency are 1 - 12, 'FIRST', 'SECOND', 'THIRD', 'FOURTH', 'LAST'.")
533
533
  end
534
534
 
535
- it "creates scheduled task to run task monthly on Monday and Friday of first, second and thrid week of month" do
535
+ it "creates scheduled task to run task monthly on Monday and Friday of first, second and third week of month" do
536
536
  subject.frequency_modifier "first, second, third"
537
537
  subject.day "Mon, Fri"
538
538
  expect { subject.after_created }.not_to raise_error(ArgumentError)
@@ -0,0 +1,193 @@
1
+ #
2
+ # Author:: Vasundhara Jagdale (<vasundhara.jagdale@chef.io>)
3
+ # Copyright:: Copyright (c) Chef Software Inc.
4
+
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+ #
17
+
18
+ require_relative "../../spec_helper"
19
+ require_relative "../../functional/resource/base"
20
+
21
+ describe Chef::Resource::WindowsUserPrivilege, :windows_only do
22
+ let(:principal) { nil }
23
+ let(:privilege) { nil }
24
+ let(:users) { nil }
25
+ let(:sensitive) { true }
26
+
27
+ let(:windows_test_run_context) do
28
+ node = Chef::Node.new
29
+ node.consume_external_attrs(OHAI_SYSTEM.data, {}) # node[:languages][:powershell][:version]
30
+ node.automatic["os"] = "windows"
31
+ node.automatic["platform"] = "windows"
32
+ node.automatic["platform_version"] = "6.1"
33
+ node.automatic["kernel"][:machine] = :x86_64 # Only 64-bit architecture is supported
34
+ empty_events = Chef::EventDispatch::Dispatcher.new
35
+ Chef::RunContext.new(node, {}, empty_events)
36
+ end
37
+
38
+ subject do
39
+ new_resource = Chef::Resource::WindowsUserPrivilege.new(principal, windows_test_run_context)
40
+ new_resource.privilege = privilege
41
+ new_resource.principal = principal
42
+ new_resource.users = users
43
+ new_resource
44
+ end
45
+
46
+ describe "#add privilege" do
47
+ after { subject.run_action(:remove) }
48
+
49
+ context "when privilege is passed as string" do
50
+ let(:principal) { "Administrator" }
51
+ let(:privilege) { "SeCreateSymbolicLinkPrivilege" }
52
+
53
+ it "adds user to privilege" do
54
+ # Removing so that add update happens
55
+ subject.run_action(:remove)
56
+ subject.run_action(:add)
57
+ expect(subject).to be_updated_by_last_action
58
+ end
59
+
60
+ it "is idempotent" do
61
+ subject.run_action(:add)
62
+ subject.run_action(:add)
63
+ expect(subject).not_to be_updated_by_last_action
64
+ end
65
+ end
66
+
67
+ context "when privilege is passed as array" do
68
+ let(:principal) { "Administrator" }
69
+ let(:privilege) { %w{SeCreateSymbolicLinkPrivilege SeCreatePagefilePrivilege} }
70
+
71
+ it "adds user to privilege" do
72
+ subject.run_action(:add)
73
+ expect(subject).to be_updated_by_last_action
74
+ end
75
+
76
+ it "is idempotent" do
77
+ subject.run_action(:add)
78
+ subject.run_action(:add)
79
+ expect(subject).not_to be_updated_by_last_action
80
+ end
81
+ end
82
+ end
83
+
84
+ describe "#set privilege" do
85
+ after { remove_user_privilege("Administrator", subject.privilege) }
86
+
87
+ let(:principal) { "user_privilege" }
88
+ let(:users) { %w{Administrators Administrator} }
89
+ let(:privilege) { %w{SeCreateSymbolicLinkPrivilege} }
90
+
91
+ it "sets user to privilege" do
92
+ subject.action(:set)
93
+ subject.run_action(:set)
94
+ expect(subject).to be_updated_by_last_action
95
+ end
96
+
97
+ it "is idempotent" do
98
+ subject.action(:set)
99
+ subject.run_action(:set)
100
+ subject.run_action(:set)
101
+ expect(subject).not_to be_updated_by_last_action
102
+ end
103
+
104
+ it "raise error if users not provided" do
105
+ subject.users = nil
106
+ subject.action(:set)
107
+ expect { subject.run_action(:set) }.to raise_error(Chef::Exceptions::ValidationFailed)
108
+ end
109
+ end
110
+
111
+ describe "#remove privilege" do
112
+ let(:principal) { "Administrator" }
113
+ context "when privilege is passed as array" do
114
+ let(:privilege) { "SeCreateSymbolicLinkPrivilege" }
115
+ it "remove user from privilege" do
116
+ subject.run_action(:add)
117
+ subject.run_action(:remove)
118
+ expect(subject).to be_updated_by_last_action
119
+ end
120
+
121
+ it "is idempotent" do
122
+ subject.run_action(:add)
123
+ subject.run_action(:remove)
124
+ subject.run_action(:remove)
125
+ expect(subject).not_to be_updated_by_last_action
126
+ end
127
+ end
128
+
129
+ context "when privilege is passed as array" do
130
+ let(:privilege) { %w{SeCreateSymbolicLinkPrivilege SeCreatePagefilePrivilege} }
131
+ it "remove user from privilege" do
132
+ subject.run_action(:add)
133
+ subject.run_action(:remove)
134
+ expect(subject).to be_updated_by_last_action
135
+ end
136
+
137
+ it "is idempotent" do
138
+ subject.run_action(:add)
139
+ subject.run_action(:remove)
140
+ subject.run_action(:remove)
141
+ expect(subject).not_to be_updated_by_last_action
142
+ end
143
+ end
144
+ end
145
+
146
+ describe "running with non admin user" do
147
+ include Chef::Mixin::UserContext
148
+
149
+ let(:user) { "security_user" }
150
+ let(:password) { "Security@123" }
151
+ let(:principal) { "user_privilege" }
152
+ let(:users) { ["Administrators", "#{domain}\\security_user"] }
153
+ let(:privilege) { %w{SeCreateSymbolicLinkPrivilege} }
154
+
155
+ let(:domain) do
156
+ ENV["COMPUTERNAME"]
157
+ end
158
+
159
+ before do
160
+ allow_any_instance_of(Chef::Mixin::UserContext).to receive(:node).and_return({ "platform_family" => "windows" })
161
+ add_user = Mixlib::ShellOut.new("net user #{user} #{password} /ADD")
162
+ add_user.run_command
163
+ add_user.error!
164
+ end
165
+
166
+ after do
167
+ remove_user_privilege("#{domain}\\#{user}", subject.privilege)
168
+ delete_user = Mixlib::ShellOut.new("net user #{user} /delete")
169
+ delete_user.run_command
170
+ delete_user.error!
171
+ end
172
+
173
+ it "sets user to privilege" do
174
+ subject.action(:set)
175
+ subject.run_action(:set)
176
+ expect(subject).to be_updated_by_last_action
177
+ end
178
+
179
+ it "is idempotent" do
180
+ subject.action(:set)
181
+ subject.run_action(:set)
182
+ subject.run_action(:set)
183
+ expect(subject).not_to be_updated_by_last_action
184
+ end
185
+ end
186
+
187
+ def remove_user_privilege(user, privilege)
188
+ subject.action(:remove)
189
+ subject.principal = user
190
+ subject.privilege = privilege
191
+ subject.run_action(:remove)
192
+ end
193
+ end
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require File.expand_path("../../spec_helper", __FILE__)
18
+ require_relative "../spec_helper"
19
19
  require "chef/client"
20
20
 
21
21
  describe Chef::RunLock do
@@ -82,7 +82,7 @@ describe Shell do
82
82
 
83
83
  require "pty"
84
84
  config = File.expand_path("shef-config.rb", CHEF_SPEC_DATA)
85
- reader, writer, pid = PTY.spawn("bundle exec chef-shell -c #{config} #{options}")
85
+ reader, writer, pid = PTY.spawn("bundle exec chef-shell --no-multiline --no-singleline --no-colorize -c #{config} #{options}")
86
86
  read_until(reader, "chef (#{Chef::VERSION})>")
87
87
  yield reader, writer if block_given?
88
88
  writer.puts('"done"')
@@ -17,7 +17,7 @@
17
17
  #
18
18
 
19
19
  require "chef/json_compat"
20
- require File.expand_path("../../../../spec_helper", __FILE__)
20
+ require_relative "../../../spec_helper"
21
21
 
22
22
  describe Chef::Util::Powershell::Cmdlet, :windows_powershell_dsc_only do
23
23
  before(:all) do
@@ -15,7 +15,7 @@
15
15
  # See the License for the specific language governing permissions and
16
16
  # limitations under the License.
17
17
 
18
- require File.expand_path("../../spec_helper", __FILE__)
18
+ require_relative "../spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
  require "chef/version"
21
21
  require "ohai/version"
@@ -56,12 +56,6 @@ describe "Chef::Win32::Registry", :windows_only do
56
56
  end
57
57
  end
58
58
 
59
- # Server Versions
60
- # it "succeeds if server versiion is 2003R2, 2008, 2008R2, 2012" do
61
- # end
62
- # it "falis if the server versions are anything else" do
63
- # end
64
-
65
59
  describe "hive_exists?" do
66
60
  it "returns true if the hive exists" do
67
61
  expect(@registry.hive_exists?("HKCU\\Software\\Root")).to eq(true)
@@ -199,6 +199,28 @@ describe "Chef::Win32::Security", :windows_only do
199
199
  end
200
200
  end
201
201
 
202
+ describe ".get_account_with_user_rights" do
203
+ let(:domain) { ENV["COMPUTERNAME"] }
204
+ let(:username) { ENV["USERNAME"] }
205
+
206
+ context "when given a valid user right" do
207
+ it "gets all accounts associated with given user right" do
208
+ Chef::ReservedNames::Win32::Security.add_account_right(username, "SeBatchLogonRight")
209
+ expect(Chef::ReservedNames::Win32::Security.get_account_with_user_rights("SeBatchLogonRight").flatten).to include("#{domain}\\#{username}")
210
+ Chef::ReservedNames::Win32::Security.remove_account_right(username, "SeBatchLogonRight")
211
+ expect(Chef::ReservedNames::Win32::Security.get_account_with_user_rights("SeBatchLogonRight").flatten).not_to include("#{domain}\\#{username}")
212
+ end
213
+ end
214
+
215
+ context "when given an invalid user right" do
216
+ let(:user_right) { "SeTest" }
217
+
218
+ it "returns empty array" do
219
+ expect(Chef::ReservedNames::Win32::Security.get_account_with_user_rights(user_right)).to be_empty
220
+ end
221
+ end
222
+ end
223
+
202
224
  describe ".test_and_raise_lsa_nt_status" do
203
225
  # NTSTATUS code: 0xC0000001 / STATUS_UNSUCCESSFUL
204
226
  # Windows Error: ERROR_GEN_FAILURE / 31 / 0x1F / A device attached to the system is not functioning.
@@ -11,8 +11,8 @@ describe "chef-client" do
11
11
  File.join(CHEF_SPEC_DATA, "recipes.tgz")
12
12
  end
13
13
 
14
- def start_tiny_server(server_opts = {})
15
- @server = TinyServer::Manager.new(server_opts)
14
+ def start_tiny_server(**server_opts)
15
+ @server = TinyServer::Manager.new(**server_opts)
16
16
  @server.start
17
17
  @api = TinyServer::API.instance
18
18
  @api.clear
@@ -739,4 +739,125 @@ EOM
739
739
  expect(command.stdout).to include("NOFORK")
740
740
  end
741
741
  end
742
+
743
+ when_the_repository "has an eager_load_libraries false cookbook" do
744
+ before do
745
+ file "cookbooks/x/libraries/require_me.rb", <<~'EOM'
746
+ class RequireMe
747
+ end
748
+ EOM
749
+ file "cookbooks/x/recipes/default.rb", <<~'EOM'
750
+ # shouldn't be required by default
751
+ raise "boom" if defined?(RequireMe)
752
+ require "require_me"
753
+ # should be in the LOAD_PATH
754
+ raise "boom" unless defined?(RequireMe)
755
+ EOM
756
+ file "cookbooks/x/metadata.rb", <<~EOM
757
+ name 'x'
758
+ version '0.0.1'
759
+ eager_load_libraries false
760
+ EOM
761
+ file "config/client.rb", <<~EOM
762
+ local_mode true
763
+ cookbook_path "#{path_to("cookbooks")}"
764
+ EOM
765
+ end
766
+
767
+ it "should not eagerly load the library" do
768
+ result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" -o 'x::default'", cwd: chef_dir)
769
+ result.error!
770
+ end
771
+ end
772
+
773
+ when_the_repository "has an eager_load_libraries cookbook with a default hook" do
774
+ before do
775
+ file "cookbooks/x/libraries/aa_require_me.rb", <<~'EOM'
776
+ class RequireMe
777
+ end
778
+ EOM
779
+ file "cookbooks/x/libraries/default.rb", <<~'EOM'
780
+ raise "boom" if defined?(RequireMe)
781
+ require "aa_require_me"
782
+ EOM
783
+ file "cookbooks/x/libraries/nope/default.rb", <<~'EOM'
784
+ raise "boom" # this should never be required
785
+ EOM
786
+ file "cookbooks/x/recipes/default.rb", <<~'EOM'
787
+ raise "boom" unless defined?(RequireMe)
788
+ EOM
789
+ file "cookbooks/x/metadata.rb", <<~EOM
790
+ name 'x'
791
+ version '0.0.1'
792
+ eager_load_libraries "default.rb"
793
+ EOM
794
+ file "config/client.rb", <<~EOM
795
+ local_mode true
796
+ cookbook_path "#{path_to("cookbooks")}"
797
+ always_dump_stacktrace true
798
+ EOM
799
+ end
800
+
801
+ it "should properly load the library via the hook" do
802
+ result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" -o 'x::default'", cwd: chef_dir)
803
+ result.error!
804
+ end
805
+ end
806
+
807
+ when_the_repository "has an eager_load_libraries false cookbook" do
808
+ before do
809
+ # this is loaded by default.rb
810
+ file "cookbooks/x/libraries/aa_require_me.rb", <<~'EOM'
811
+ class RequireMe
812
+ end
813
+ EOM
814
+ # this is loaded by eager_load_libraries
815
+ file "cookbooks/x/libraries/default.rb", <<~'EOM'
816
+ raise "boom" if defined?(RequireMe)
817
+ require "aa_require_me"
818
+ EOM
819
+ # this is loaded by the recipe using the LOAD_PATH
820
+ file "cookbooks/x/libraries/require_me.rb", <<~'EOM'
821
+ class RequireMe4
822
+ end
823
+ EOM
824
+ # these two are loaded by eager_load_libraries glob
825
+ file "cookbooks/x/libraries/loadme/foo/require_me.rb", <<~'EOM'
826
+ class RequireMe2
827
+ end
828
+ EOM
829
+ file "cookbooks/x/libraries/loadme/require_me.rb", <<~'EOM'
830
+ class RequireMe3
831
+ end
832
+ EOM
833
+ # this should nevrer be loaded
834
+ file "cookbooks/x/libraries/nope/require_me.rb", <<~'EOM'
835
+ raise "boom" # this should never be required
836
+ EOM
837
+ file "cookbooks/x/recipes/default.rb", <<~'EOM'
838
+ # all these are loaded by the eager_load_libraries
839
+ raise "boom" unless defined?(RequireMe)
840
+ raise "boom" unless defined?(RequireMe2)
841
+ raise "boom" unless defined?(RequireMe3)
842
+ raise "boom" if defined?(RequireMe4)
843
+ require "require_me"
844
+ raise "boom" unless defined?(RequireMe4)
845
+ EOM
846
+ file "cookbooks/x/metadata.rb", <<~EOM
847
+ name 'x'
848
+ version '0.0.1'
849
+ eager_load_libraries [ "default.rb", "loadme/**/*.rb" ]
850
+ EOM
851
+ file "config/client.rb", <<~EOM
852
+ local_mode true
853
+ cookbook_path "#{path_to("cookbooks")}"
854
+ always_dump_stacktrace true
855
+ EOM
856
+ end
857
+
858
+ it "should not eagerly load the library" do
859
+ result = shell_out("#{chef_client} -c \"#{path_to("config/client.rb")}\" -o 'x::default'", cwd: chef_dir)
860
+ result.error!
861
+ end
862
+ end
742
863
  end
@@ -43,25 +43,26 @@ describe "knife cookbook show", :workstation do
43
43
  metadata:
44
44
  chef_versions:
45
45
  dependencies:
46
- description:
46
+ description:
47
+ eager_load_libraries: true
47
48
  gems:
48
- issues_url:
49
- license: All rights reserved
50
- long_description:
51
- maintainer:
52
- maintainer_email:
53
- name: x
49
+ issues_url:
50
+ license: All rights reserved
51
+ long_description:
52
+ maintainer:
53
+ maintainer_email:
54
+ name: x
54
55
  ohai_versions:
55
56
  platforms:
56
- privacy: false
57
+ privacy: false
57
58
  providing:
58
59
  x: >= 0.0.0
59
60
  x::x: >= 0.0.0
60
61
  recipes:
61
- x:
62
- x::x:
63
- source_url:
64
- version: 1.0.0
62
+ x:
63
+ x::x:
64
+ source_url:
65
+ version: 1.0.0
65
66
  name: x-1.0.0
66
67
  recipes:
67
68
  checksum: 4631b34cf58de10c5ef1304889941b2e
@@ -69,7 +70,7 @@ describe "knife cookbook show", :workstation do
69
70
  path: recipes/default.rb
70
71
  specificity: default
71
72
  url: http://127.0.0.1:8900/file_store/checksums/4631b34cf58de10c5ef1304889941b2e
72
-
73
+
73
74
  checksum: d41d8cd98f00b204e9800998ecf8427e
74
75
  name: recipes/x.rb
75
76
  path: recipes/x.rb
@@ -89,25 +90,26 @@ describe "knife cookbook show", :workstation do
89
90
  knife("cookbook show x 1.0.0 metadata").should_succeed <<~EOM
90
91
  chef_versions:
91
92
  dependencies:
92
- description:
93
+ description:
94
+ eager_load_libraries: true
93
95
  gems:
94
- issues_url:
95
- license: All rights reserved
96
- long_description:
97
- maintainer:
98
- maintainer_email:
99
- name: x
96
+ issues_url:
97
+ license: All rights reserved
98
+ long_description:
99
+ maintainer:
100
+ maintainer_email:
101
+ name: x
100
102
  ohai_versions:
101
103
  platforms:
102
- privacy: false
104
+ privacy: false
103
105
  providing:
104
106
  x: >= 0.0.0
105
107
  x::x: >= 0.0.0
106
108
  recipes:
107
- x:
108
- x::x:
109
- source_url:
110
- version: 1.0.0
109
+ x:
110
+ x::x:
111
+ source_url:
112
+ version: 1.0.0
111
113
  EOM
112
114
  end
113
115
 
@@ -118,7 +120,7 @@ describe "knife cookbook show", :workstation do
118
120
  path: recipes/default.rb
119
121
  specificity: default
120
122
  url: http://127.0.0.1:8900/file_store/checksums/4631b34cf58de10c5ef1304889941b2e
121
-
123
+
122
124
  checksum: d41d8cd98f00b204e9800998ecf8427e
123
125
  name: recipes/x.rb
124
126
  path: recipes/x.rb