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
@@ -50,8 +50,8 @@ describe Chef::Knife::DataBagSecretOptions do
50
50
  describe "#validate_secrets" do
51
51
 
52
52
  it "throws an error when provided with both --secret and --secret-file on the CL" do
53
- Chef::Config[:knife][:cl_secret_file] = secret_file.path
54
- Chef::Config[:knife][:cl_secret] = secret
53
+ example_db.config[:cl_secret_file] = secret_file.path
54
+ example_db.config[:cl_secret] = secret
55
55
  expect(example_db).to receive(:exit).with(1)
56
56
  expect(example_db.ui).to receive(:fatal).with("Please specify only one of --secret, --secret-file")
57
57
 
@@ -61,6 +61,7 @@ describe Chef::Knife::DataBagSecretOptions do
61
61
  it "throws an error when provided with `secret` and `secret_file` in knife.rb" do
62
62
  Chef::Config[:knife][:secret_file] = secret_file.path
63
63
  Chef::Config[:knife][:secret] = secret
64
+ example_db.merge_configs
64
65
  expect(example_db).to receive(:exit).with(1)
65
66
  expect(example_db.ui).to receive(:fatal).with("Please specify only one of 'secret' or 'secret_file' in your config file")
66
67
 
@@ -72,14 +73,16 @@ describe Chef::Knife::DataBagSecretOptions do
72
73
  describe "#read_secret" do
73
74
 
74
75
  it "returns the secret first" do
75
- Chef::Config[:knife][:cl_secret] = secret
76
- expect(example_db).to receive(:config).and_return({ secret: secret })
76
+ example_db.config[:cl_secret] = secret
77
+ Chef::Config[:knife][:secret] = secret
78
+ example_db.merge_configs
77
79
  expect(example_db.read_secret).to eq(secret)
78
80
  end
79
81
 
80
82
  it "returns the secret_file only if secret does not exist" do
81
- Chef::Config[:knife][:cl_secret_file] = secret_file.path
82
- expect(example_db).to receive(:config).and_return({ secret_file: secret_file.path })
83
+ example_db.config[:cl_secret_file] = secret_file.path
84
+ Chef::Config[:knife][:secret_file] = secret_file.path
85
+ example_db.merge_configs
83
86
  expect(Chef::EncryptedDataBagItem).to receive(:load_secret).with(secret_file.path).and_return("secret file contents")
84
87
  expect(example_db.read_secret).to eq("secret file contents")
85
88
  end
@@ -87,11 +90,13 @@ describe Chef::Knife::DataBagSecretOptions do
87
90
  it "returns the secret from the knife.rb config" do
88
91
  Chef::Config[:knife][:secret_file] = secret_file.path
89
92
  Chef::Config[:knife][:secret] = secret
93
+ example_db.merge_configs
90
94
  expect(example_db.read_secret).to eq(secret)
91
95
  end
92
96
 
93
97
  it "returns the secret_file from the knife.rb config only if the secret does not exist" do
94
98
  Chef::Config[:knife][:secret_file] = secret_file.path
99
+ example_db.merge_configs
95
100
  expect(Chef::EncryptedDataBagItem).to receive(:load_secret).with(secret_file.path).and_return("secret file contents")
96
101
  expect(example_db.read_secret).to eq("secret file contents")
97
102
  end
@@ -101,58 +106,61 @@ describe Chef::Knife::DataBagSecretOptions do
101
106
  describe "#encryption_secret_provided?" do
102
107
 
103
108
  it "returns true if the secret is passed on the CL" do
104
- Chef::Config[:knife][:cl_secret] = secret
109
+ example_db.config[:cl_secret] = secret
105
110
  expect(example_db.encryption_secret_provided?).to eq(true)
106
111
  end
107
112
 
108
113
  it "returns true if the secret_file is passed on the CL" do
109
- Chef::Config[:knife][:cl_secret_file] = secret_file.path
114
+ example_db.config[:cl_secret_file] = secret_file.path
110
115
  expect(example_db.encryption_secret_provided?).to eq(true)
111
116
  end
112
117
 
113
118
  it "returns true if --encrypt is passed on the CL and :secret is in config" do
114
- expect(example_db).to receive(:config).and_return({ encrypt: true })
119
+ example_db.config[:encrypt] = true
115
120
  Chef::Config[:knife][:secret] = secret
121
+ example_db.merge_configs
116
122
  expect(example_db.encryption_secret_provided?).to eq(true)
117
123
  end
118
124
 
119
125
  it "returns true if --encrypt is passed on the CL and :secret_file is in config" do
120
- expect(example_db).to receive(:config).and_return({ encrypt: true })
126
+ example_db.config[:encrypt] = true
121
127
  Chef::Config[:knife][:secret_file] = secret_file.path
128
+ example_db.merge_configs
122
129
  expect(example_db.encryption_secret_provided?).to eq(true)
123
130
  end
124
131
 
125
132
  it "throws an error if --encrypt is passed and there is not :secret or :secret_file in the config" do
126
- expect(example_db).to receive(:config).and_return({ encrypt: true })
133
+ example_db.config[:encrypt] = true
127
134
  expect(example_db).to receive(:exit).with(1)
128
135
  expect(example_db.ui).to receive(:fatal).with("No secret or secret_file specified in config, unable to encrypt item.")
129
136
  example_db.encryption_secret_provided?
130
137
  end
131
138
 
132
139
  it "returns false if no secret is passed" do
133
- expect(example_db).to receive(:config).and_return({})
134
140
  expect(example_db.encryption_secret_provided?).to eq(false)
135
141
  end
136
142
 
137
143
  it "returns false if --encrypt is not provided and :secret is in the config" do
138
- expect(example_db).to receive(:config).and_return({})
139
144
  Chef::Config[:knife][:secret] = secret
145
+ example_db.merge_configs
140
146
  expect(example_db.encryption_secret_provided?).to eq(false)
141
147
  end
142
148
 
143
149
  it "returns false if --encrypt is not provided and :secret_file is in the config" do
144
- expect(example_db).to receive(:config).and_return({})
145
150
  Chef::Config[:knife][:secret_file] = secret_file.path
151
+ example_db.merge_configs
146
152
  expect(example_db.encryption_secret_provided?).to eq(false)
147
153
  end
148
154
 
149
155
  it "returns true if --encrypt is not provided, :secret is in the config and need_encrypt_flag is false" do
150
156
  Chef::Config[:knife][:secret] = secret
157
+ example_db.merge_configs
151
158
  expect(example_db.encryption_secret_provided_ignore_encrypt_flag?).to eq(true)
152
159
  end
153
160
 
154
161
  it "returns true if --encrypt is not provided, :secret_file is in the config and need_encrypt_flag is false" do
155
162
  Chef::Config[:knife][:secret_file] = secret_file.path
163
+ example_db.merge_configs
156
164
  expect(example_db.encryption_secret_provided_ignore_encrypt_flag?).to eq(true)
157
165
  end
158
166
 
@@ -253,15 +253,19 @@ describe Chef::Knife::Ssh do
253
253
  expect(@knife.session.servers[0].options[:timeout]).to eq(120)
254
254
  end
255
255
 
256
- it "uses the timeout from Chef Config" do
257
- Chef::Config[:knife][:ssh_timeout] = 5
258
- @knife.config[:ssh_timeout] = nil
256
+ it "uses the timeout from the CLI" do
257
+ @knife.config = {}
258
+ Chef::Config[:knife][:ssh_timeout] = nil
259
+ @knife.config[:ssh_timeout] = 5
259
260
  @knife.session_from_list([["the.b.org", nil, nil]])
261
+ @knife.merge_configs
260
262
  expect(@knife.session.servers[0].options[:timeout]).to eq(5)
261
263
  end
262
264
 
263
265
  it "uses the timeout from knife config" do
264
- @knife.config[:ssh_timeout] = 6
266
+ @knife.config = {}
267
+ Chef::Config[:knife][:ssh_timeout] = 6
268
+ @knife.merge_configs
265
269
  @knife.session_from_list([["the.b.org", nil, nil]])
266
270
  expect(@knife.session.servers[0].options[:timeout]).to eq(6)
267
271
  end
@@ -396,111 +400,4 @@ describe Chef::Knife::Ssh do
396
400
  end
397
401
  end
398
402
  end
399
-
400
- describe "#configure_password" do
401
- before do
402
- @knife.config.delete(:ssh_password_ng)
403
- @knife.config.delete(:ssh_password)
404
- end
405
-
406
- context "when setting ssh_password_ng from knife ssh" do
407
- # in this case ssh_password_ng exists, but ssh_password does not
408
- it "should prompt for a password when ssh_passsword_ng is nil" do
409
- @knife.config[:ssh_password_ng] = nil
410
- expect(@knife).to receive(:get_password).and_return("mysekretpassw0rd")
411
- @knife.configure_password
412
- expect(@knife.config[:ssh_password]).to eq("mysekretpassw0rd")
413
- end
414
-
415
- it "should set ssh_password to false if ssh_password_ng is false" do
416
- @knife.config[:ssh_password_ng] = false
417
- expect(@knife).not_to receive(:get_password)
418
- @knife.configure_password
419
- expect(@knife.config[:ssh_password]).to be_falsey
420
- end
421
-
422
- it "should set ssh_password to ssh_password_ng if we set a password" do
423
- @knife.config[:ssh_password_ng] = "mysekretpassw0rd"
424
- expect(@knife).not_to receive(:get_password)
425
- @knife.configure_password
426
- expect(@knife.config[:ssh_password]).to eq("mysekretpassw0rd")
427
- end
428
- end
429
-
430
- context "when setting ssh_password from knife bootstrap / knife * server create" do
431
- # in this case ssh_password exists, but ssh_password_ng does not
432
- it "should set ssh_password to nil when ssh_password is nil" do
433
- @knife.config[:ssh_password] = nil
434
- expect(@knife).not_to receive(:get_password)
435
- @knife.configure_password
436
- expect(@knife.config[:ssh_password]).to be_nil
437
- end
438
-
439
- it "should set ssh_password to false when ssh_password is false" do
440
- @knife.config[:ssh_password] = false
441
- expect(@knife).not_to receive(:get_password)
442
- @knife.configure_password
443
- expect(@knife.config[:ssh_password]).to be_falsey
444
- end
445
-
446
- it "should set ssh_password to ssh_password if we set a password" do
447
- @knife.config[:ssh_password] = "mysekretpassw0rd"
448
- expect(@knife).not_to receive(:get_password)
449
- @knife.configure_password
450
- expect(@knife.config[:ssh_password]).to eq("mysekretpassw0rd")
451
- end
452
- end
453
- context "when setting ssh_password in the config variable" do
454
- before(:each) do
455
- Chef::Config[:knife][:ssh_password] = "my_knife_passw0rd"
456
- end
457
- context "when setting ssh_password_ng from knife ssh" do
458
- # in this case ssh_password_ng exists, but ssh_password does not
459
- it "should prompt for a password when ssh_passsword_ng is nil" do
460
- @knife.config[:ssh_password_ng] = nil
461
- expect(@knife).to receive(:get_password).and_return("mysekretpassw0rd")
462
- @knife.configure_password
463
- expect(@knife.config[:ssh_password]).to eq("mysekretpassw0rd")
464
- end
465
-
466
- it "should set ssh_password to the configured knife.rb value if ssh_password_ng is false" do
467
- @knife.config[:ssh_password_ng] = false
468
- expect(@knife).not_to receive(:get_password)
469
- @knife.configure_password
470
- expect(@knife.config[:ssh_password]).to eq("my_knife_passw0rd")
471
- end
472
-
473
- it "should set ssh_password to ssh_password_ng if we set a password" do
474
- @knife.config[:ssh_password_ng] = "mysekretpassw0rd"
475
- expect(@knife).not_to receive(:get_password)
476
- @knife.configure_password
477
- expect(@knife.config[:ssh_password]).to eq("mysekretpassw0rd")
478
- end
479
- end
480
-
481
- context "when setting ssh_password from knife bootstrap / knife * server create" do
482
- # in this case ssh_password exists, but ssh_password_ng does not
483
- it "should set ssh_password to the configured knife.rb value when ssh_password is nil" do
484
- @knife.config[:ssh_password] = nil
485
- expect(@knife).not_to receive(:get_password)
486
- @knife.configure_password
487
- expect(@knife.config[:ssh_password]).to eq("my_knife_passw0rd")
488
- end
489
-
490
- it "should set ssh_password to the configured knife.rb value when ssh_password is false" do
491
- @knife.config[:ssh_password] = false
492
- expect(@knife).not_to receive(:get_password)
493
- @knife.configure_password
494
- expect(@knife.config[:ssh_password]).to eq("my_knife_passw0rd")
495
- end
496
-
497
- it "should set ssh_password to ssh_password if we set a password" do
498
- @knife.config[:ssh_password] = "mysekretpassw0rd"
499
- expect(@knife).not_to receive(:get_password)
500
- @knife.configure_password
501
- expect(@knife.config[:ssh_password]).to eq("mysekretpassw0rd")
502
- end
503
- end
504
- end
505
- end
506
403
  end
@@ -39,7 +39,7 @@ describe Chef::Knife::Status do
39
39
  let(:opts) do
40
40
  { filter_result:
41
41
  { name: ["name"], ipaddress: ["ipaddress"], ohai_time: ["ohai_time"],
42
- ec2: ["ec2"], run_list: ["run_list"], platform: ["platform"],
42
+ cloud: ["cloud"], run_list: ["run_list"], platform: ["platform"],
43
43
  platform_version: ["platform_version"], chef_environment: ["chef_environment"] } }
44
44
  end
45
45
 
@@ -353,6 +353,24 @@ describe Chef::Knife do
353
353
  expect(knife_command.config_source(:listen)).to eq(:cli)
354
354
  end
355
355
 
356
+ it "merges Chef::Config[:knife] values into the config hash even if they have no cli keys" do
357
+ Chef::Config[:knife][:opt_with_no_cli_key] = "from-knife-config"
358
+ knife_command = KnifeSpecs::TestYourself.new([]) # empty argv
359
+ knife_command.configure_chef
360
+ expect(knife_command.config[:opt_with_no_cli_key]).to eq("from-knife-config")
361
+ expect(knife_command.config_source(:opt_with_no_cli_key)).to eq(:config)
362
+ end
363
+
364
+ it "merges Chef::Config[:knife] default values into the config hash even if they have no cli keys" do
365
+ Chef::Config.config_context :knife do
366
+ default :opt_with_no_cli_key, "from-knife-default"
367
+ end
368
+ knife_command = KnifeSpecs::TestYourself.new([]) # empty argv
369
+ knife_command.configure_chef
370
+ expect(knife_command.config[:opt_with_no_cli_key]).to eq("from-knife-default")
371
+ expect(knife_command.config_source(:opt_with_no_cli_key)).to eq(:config_default)
372
+ end
373
+
356
374
  context "verbosity is one" do
357
375
  let(:fake_config) { "/does/not/exist/knife.rb" }
358
376
 
@@ -488,7 +488,7 @@ describe Chef::Mixin::OpenSSLHelper do
488
488
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
489
489
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
490
490
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
491
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
491
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
492
492
 
493
493
  @info_with_issuer = { "validity" => 365, "issuer" => @ca_cert }
494
494
  @info_without_issuer = { "validity" => 365 }
@@ -614,7 +614,7 @@ describe Chef::Mixin::OpenSSLHelper do
614
614
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
615
615
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
616
616
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
617
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
617
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
618
618
 
619
619
  @info = { "validity" => 8, "issuer" => @ca_cert }
620
620
  end
@@ -684,7 +684,7 @@ describe Chef::Mixin::OpenSSLHelper do
684
684
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
685
685
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
686
686
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
687
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
687
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
688
688
 
689
689
  @info = { "validity" => 8, "issuer" => @ca_cert }
690
690
 
@@ -765,7 +765,7 @@ describe Chef::Mixin::OpenSSLHelper do
765
765
  @ca_cert.add_extension(ef.create_extension("keyUsage", "keyCertSign, cRLSign", true))
766
766
  @ca_cert.add_extension(ef.create_extension("subjectKeyIdentifier", "hash", false))
767
767
  @ca_cert.add_extension(ef.create_extension("authorityKeyIdentifier", "keyid:always", false))
768
- @ca_cert.sign(@ca_key, OpenSSL::Digest::SHA256.new)
768
+ @ca_cert.sign(@ca_key, OpenSSL::Digest.new("SHA256"))
769
769
 
770
770
  @info = { "validity" => 8, "issuer" => @ca_cert }
771
771
 
@@ -40,4 +40,14 @@ describe Chef::Mixin::PowershellExec, :windows_only do
40
40
  expect(execution.errors[0]).to include("Runtime exception: this-should-error")
41
41
  end
42
42
  end
43
+
44
+ describe "#powershell_exec!" do
45
+ it "runs a basic command and returns a Chef::PowerShell object" do
46
+ expect(object.powershell_exec!("$PSVersionTable")).to be_kind_of(Chef::PowerShell)
47
+ end
48
+
49
+ it "raises an error if the command fails" do
50
+ expect(object.powershell_exec!("$PSVersionTable")).to be_kind_of(Chef::PowerShell::CommandFailed)
51
+ end
52
+ end
43
53
  end
@@ -57,42 +57,40 @@ describe Chef::Mixin::ShellOut do
57
57
  describe "and environment is an option" do
58
58
  it "should not change environment language settings when they are set to nil" do
59
59
  options = { environment: { "LC_ALL" => nil, "LANGUAGE" => nil, "LANG" => nil, env_path => nil } }
60
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(retobj)
61
- shell_out_obj.send(method, cmd, options)
60
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
61
+ shell_out_obj.send(method, cmd, **options)
62
62
  end
63
63
 
64
64
  it "should not change environment language settings when they are set to non-nil" do
65
65
  options = { environment: { "LC_ALL" => "en_US.UTF-8", "LANGUAGE" => "en_US.UTF-8", "LANG" => "en_US.UTF-8", env_path => "foo:bar:baz" } }
66
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(retobj)
67
- shell_out_obj.send(method, cmd, options)
66
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
67
+ shell_out_obj.send(method, cmd, **options)
68
68
  end
69
69
 
70
70
  it "should set environment language settings to the configured internal locale when they are not present" do
71
71
  options = { environment: { "HOME" => "/Users/morty" } }
72
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, {
72
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
73
73
  environment: {
74
74
  "HOME" => "/Users/morty",
75
75
  "LC_ALL" => Chef::Config[:internal_locale],
76
76
  "LANG" => Chef::Config[:internal_locale],
77
77
  "LANGUAGE" => Chef::Config[:internal_locale],
78
78
  env_path => sanitized_path,
79
- },
80
- }).and_return(retobj)
81
- shell_out_obj.send(method, cmd, options)
79
+ }).and_return(retobj)
80
+ shell_out_obj.send(method, cmd, **options)
82
81
  end
83
82
 
84
83
  it "should not mutate the options hash when it adds language settings" do
85
84
  options = { environment: { "HOME" => "/Users/morty" } }
86
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, {
85
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
87
86
  environment: {
88
87
  "HOME" => "/Users/morty",
89
88
  "LC_ALL" => Chef::Config[:internal_locale],
90
89
  "LANG" => Chef::Config[:internal_locale],
91
90
  "LANGUAGE" => Chef::Config[:internal_locale],
92
91
  env_path => sanitized_path,
93
- },
94
- }).and_return(retobj)
95
- shell_out_obj.send(method, cmd, options)
92
+ }).and_return(retobj)
93
+ shell_out_obj.send(method, cmd, **options)
96
94
  expect(options[:environment].key?("LC_ALL")).to be false
97
95
  end
98
96
  end
@@ -100,42 +98,40 @@ describe Chef::Mixin::ShellOut do
100
98
  describe "and env is an option" do
101
99
  it "should not change env when langauge options are set to nil" do
102
100
  options = { env: { "LC_ALL" => nil, "LANG" => nil, "LANGUAGE" => nil, env_path => nil } }
103
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(retobj)
104
- shell_out_obj.send(method, cmd, options)
101
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
102
+ shell_out_obj.send(method, cmd, **options)
105
103
  end
106
104
 
107
105
  it "should not change env when language options are set to non-nil" do
108
106
  options = { env: { "LC_ALL" => "de_DE.UTF-8", "LANG" => "de_DE.UTF-8", "LANGUAGE" => "de_DE.UTF-8", env_path => "foo:bar:baz" } }
109
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, options).and_return(retobj)
110
- shell_out_obj.send(method, cmd, options)
107
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, **options).and_return(retobj)
108
+ shell_out_obj.send(method, cmd, **options)
111
109
  end
112
110
 
113
111
  it "should set environment language settings to the configured internal locale when they are not present" do
114
112
  options = { env: { "HOME" => "/Users/morty" } }
115
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, {
113
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
116
114
  env: {
117
115
  "HOME" => "/Users/morty",
118
116
  "LC_ALL" => Chef::Config[:internal_locale],
119
117
  "LANG" => Chef::Config[:internal_locale],
120
118
  "LANGUAGE" => Chef::Config[:internal_locale],
121
119
  env_path => sanitized_path,
122
- },
123
- }).and_return(retobj)
124
- shell_out_obj.send(method, cmd, options)
120
+ }).and_return(retobj)
121
+ shell_out_obj.send(method, cmd, **options)
125
122
  end
126
123
 
127
124
  it "should not mutate the options hash when it adds language settings" do
128
125
  options = { env: { "HOME" => "/Users/morty" } }
129
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, {
126
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
130
127
  env: {
131
128
  "HOME" => "/Users/morty",
132
129
  "LC_ALL" => Chef::Config[:internal_locale],
133
130
  "LANG" => Chef::Config[:internal_locale],
134
131
  "LANGUAGE" => Chef::Config[:internal_locale],
135
132
  env_path => sanitized_path,
136
- },
137
- }).and_return(retobj)
138
- shell_out_obj.send(method, cmd, options)
133
+ }).and_return(retobj)
134
+ shell_out_obj.send(method, cmd, **options)
139
135
  expect(options[:env].key?("LC_ALL")).to be false
140
136
  end
141
137
  end
@@ -143,30 +139,28 @@ describe Chef::Mixin::ShellOut do
143
139
  describe "and no env/environment option is present" do
144
140
  it "should set environment language settings to the configured internal locale" do
145
141
  options = { user: "morty" }
146
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, {
142
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
147
143
  user: "morty",
148
144
  environment: {
149
145
  "LC_ALL" => Chef::Config[:internal_locale],
150
146
  "LANG" => Chef::Config[:internal_locale],
151
147
  "LANGUAGE" => Chef::Config[:internal_locale],
152
148
  env_path => sanitized_path,
153
- },
154
- }).and_return(retobj)
155
- shell_out_obj.send(method, cmd, options)
149
+ }).and_return(retobj)
150
+ shell_out_obj.send(method, cmd, **options)
156
151
  end
157
152
  end
158
153
  end
159
154
 
160
155
  describe "when the last argument is not a Hash" do
161
156
  it "should set environment language settings to the configured internal locale" do
162
- expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd, {
157
+ expect(Chef::Mixin::ShellOut).to receive(:shell_out_command).with(cmd,
163
158
  environment: {
164
159
  "LC_ALL" => Chef::Config[:internal_locale],
165
160
  "LANG" => Chef::Config[:internal_locale],
166
161
  "LANGUAGE" => Chef::Config[:internal_locale],
167
162
  env_path => sanitized_path,
168
- },
169
- }).and_return(retobj)
163
+ }).and_return(retobj)
170
164
  shell_out_obj.send(method, cmd)
171
165
  end
172
166
  end