chef 13.12.14-universal-mingw32 → 14.0.190-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 (747) hide show
  1. checksums.yaml +4 -4
  2. data/CONTRIBUTING.md +151 -0
  3. data/Gemfile +12 -9
  4. data/README.md +34 -32
  5. data/Rakefile +22 -18
  6. data/VERSION +1 -0
  7. data/acceptance/.shared/kitchen_acceptance/.kitchen.digitalocean.yml +33 -0
  8. data/acceptance/.shared/kitchen_acceptance/.kitchen.ec2.yml +272 -0
  9. data/acceptance/.shared/kitchen_acceptance/.kitchen.vagrant.yml +57 -0
  10. data/acceptance/.shared/kitchen_acceptance/libraries/kitchen.rb +68 -0
  11. data/acceptance/.shared/kitchen_acceptance/metadata.rb +1 -0
  12. data/acceptance/Gemfile +19 -0
  13. data/acceptance/Gemfile.lock +266 -0
  14. data/acceptance/README.md +137 -0
  15. data/acceptance/basics/.acceptance/acceptance-cookbook/.gitignore +2 -0
  16. data/acceptance/basics/.acceptance/acceptance-cookbook/metadata.rb +3 -0
  17. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  18. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
  19. data/acceptance/basics/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
  20. data/acceptance/basics/.kitchen.yml +4 -0
  21. data/acceptance/basics/test/integration/chef-current-install/serverspec/chef_client_spec.rb +19 -0
  22. data/acceptance/basics/test/integration/chef-current-install/serverspec/spec_helper.rb +6 -0
  23. data/acceptance/basics/test/integration/helpers/serverspec/Gemfile +8 -0
  24. data/acceptance/data-collector/.acceptance/acceptance-cookbook/.gitignore +2 -0
  25. data/acceptance/data-collector/.acceptance/acceptance-cookbook/metadata.rb +3 -0
  26. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/destroy.rb +2 -0
  27. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/provision.rb +2 -0
  28. data/acceptance/data-collector/.acceptance/acceptance-cookbook/recipes/verify.rb +2 -0
  29. data/acceptance/data-collector/.acceptance/data-collector-test/.gitignore +16 -0
  30. data/acceptance/data-collector/.acceptance/data-collector-test/Berksfile +3 -0
  31. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/api.rb +101 -0
  32. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/apigemfile +3 -0
  33. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-both-mode.rb +4 -0
  34. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-client-mode.rb +4 -0
  35. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-no-endpoint.rb +2 -0
  36. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/client-rb-solo-mode.rb +4 -0
  37. data/acceptance/data-collector/.acceptance/data-collector-test/files/default/config.ru +2 -0
  38. data/acceptance/data-collector/.acceptance/data-collector-test/metadata.rb +7 -0
  39. data/acceptance/data-collector/.acceptance/data-collector-test/recipes/default.rb +44 -0
  40. data/acceptance/data-collector/.kitchen.yml +9 -0
  41. data/acceptance/data-collector/Berksfile +3 -0
  42. data/acceptance/data-collector/test/integration/default/serverspec/default_spec.rb +208 -0
  43. data/acceptance/data-collector/test/integration/helpers/serverspec/Gemfile +8 -0
  44. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/.gitignore +2 -0
  45. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/metadata.rb +1 -0
  46. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  47. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
  48. data/acceptance/omnitruck/.acceptance/acceptance-cookbook/recipes/verify.rb +61 -0
  49. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/.gitignore +2 -0
  50. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/cookbook_kitchen.rb +43 -0
  51. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/libraries/top_cookbooks.rb +41 -0
  52. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/metadata.rb +3 -0
  53. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  54. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
  55. data/acceptance/top-cookbooks/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
  56. data/acceptance/top-cookbooks/.gitignore +1 -0
  57. data/acceptance/top-cookbooks/.kitchen.chocolatey.yml +6 -0
  58. data/acceptance/top-cookbooks/.kitchen.iis.yml +4 -0
  59. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-rhel.yml +7 -0
  60. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-ubuntu.yml +7 -0
  61. data/acceptance/top-cookbooks/.kitchen.learn-the-basics-windows.yml +7 -0
  62. data/acceptance/top-cookbooks/.kitchen.powershell.yml +4 -0
  63. data/acceptance/top-cookbooks/.kitchen.sql_server.yml +5 -0
  64. data/acceptance/top-cookbooks/.kitchen.winbox.yml +8 -0
  65. data/acceptance/top-cookbooks/.kitchen.windows.yml +38 -0
  66. data/acceptance/trivial/.acceptance/acceptance-cookbook/.gitignore +2 -0
  67. data/acceptance/trivial/.acceptance/acceptance-cookbook/metadata.rb +2 -0
  68. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  69. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
  70. data/acceptance/trivial/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
  71. data/acceptance/trivial/.kitchen.yml +7 -0
  72. data/acceptance/trivial/test/integration/chef-current-install/inspec/chef_client_spec.rb +5 -0
  73. data/acceptance/windows-service/.acceptance/acceptance-cookbook/.gitignore +2 -0
  74. data/acceptance/windows-service/.acceptance/acceptance-cookbook/metadata.rb +2 -0
  75. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/destroy.rb +1 -0
  76. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/provision.rb +1 -0
  77. data/acceptance/windows-service/.acceptance/acceptance-cookbook/recipes/verify.rb +1 -0
  78. data/acceptance/windows-service/.kitchen.yml +7 -0
  79. data/acceptance/windows-service/test/integration/chef-windows-service/inspec/chef_windows_service_spec.rb +58 -0
  80. data/chef-universal-mingw32.gemspec +2 -2
  81. data/chef.gemspec +10 -10
  82. data/distro/powershell/chef/Chef.PowerShell.dll +0 -0
  83. data/distro/powershell/chef/Newtonsoft.Json.dll +0 -0
  84. data/lib/chef/api_client.rb +1 -1
  85. data/lib/chef/api_client/registration.rb +10 -2
  86. data/lib/chef/api_client_v1.rb +7 -6
  87. data/lib/chef/application.rb +75 -46
  88. data/lib/chef/application/client.rb +17 -19
  89. data/lib/chef/application/solo.rb +13 -16
  90. data/lib/chef/application/windows_service.rb +5 -5
  91. data/lib/chef/audit/audit_event_proxy.rb +1 -1
  92. data/lib/chef/audit/audit_reporter.rb +12 -12
  93. data/lib/chef/audit/runner.rb +2 -2
  94. data/lib/chef/chef_fs/chef_fs_data_store.rb +17 -31
  95. data/lib/chef/chef_fs/command_line.rb +9 -9
  96. data/lib/chef/chef_fs/data_handler/acl_data_handler.rb +1 -1
  97. data/lib/chef/chef_fs/data_handler/policy_data_handler.rb +1 -1
  98. data/lib/chef/chef_fs/data_handler/policy_group_data_handler.rb +1 -1
  99. data/lib/chef/chef_fs/file_system/chef_server/cookbook_dir.rb +2 -2
  100. data/lib/chef/chef_fs/file_system/chef_server/policies_dir.rb +2 -2
  101. data/lib/chef/chef_fs/file_system/multiplexed_dir.rb +1 -1
  102. data/lib/chef/chef_fs/file_system/repository/base_file.rb +2 -2
  103. data/lib/chef/chef_fs/file_system_cache.rb +1 -1
  104. data/lib/chef/chef_fs/path_utils.rb +2 -2
  105. data/lib/chef/client.rb +61 -41
  106. data/lib/chef/config.rb +1 -2
  107. data/lib/chef/config_fetcher.rb +1 -1
  108. data/lib/chef/cookbook/chefignore.rb +2 -2
  109. data/lib/chef/cookbook/cookbook_collection.rb +2 -2
  110. data/lib/chef/cookbook/cookbook_version_loader.rb +0 -1
  111. data/lib/chef/cookbook/gem_installer.rb +4 -4
  112. data/lib/chef/cookbook/manifest_v2.rb +1 -1
  113. data/lib/chef/cookbook/metadata.rb +2 -3
  114. data/lib/chef/cookbook/remote_file_vendor.rb +4 -4
  115. data/lib/chef/cookbook/synchronizer.rb +2 -2
  116. data/lib/chef/cookbook/syntax_check.rb +4 -4
  117. data/lib/chef/cookbook_loader.rb +10 -2
  118. data/lib/chef/cookbook_site_streaming_uploader.rb +4 -4
  119. data/lib/chef/cookbook_uploader.rb +2 -3
  120. data/lib/chef/cookbook_version.rb +5 -11
  121. data/lib/chef/data_bag.rb +1 -3
  122. data/lib/chef/data_bag_item.rb +1 -7
  123. data/lib/chef/data_collector.rb +111 -35
  124. data/lib/chef/data_collector/messages.rb +2 -2
  125. data/lib/chef/data_collector/messages/helpers.rb +2 -4
  126. data/lib/chef/deprecated.rb +0 -4
  127. data/lib/chef/dsl/data_query.rb +1 -5
  128. data/lib/chef/dsl/include_attribute.rb +3 -7
  129. data/lib/chef/dsl/include_recipe.rb +1 -5
  130. data/lib/chef/dsl/platform_introspection.rb +9 -13
  131. data/lib/chef/dsl/reboot_pending.rb +1 -8
  132. data/lib/chef/dsl/recipe.rb +2 -12
  133. data/lib/chef/dsl/universal.rb +3 -3
  134. data/lib/chef/environment.rb +2 -4
  135. data/lib/chef/event_dispatch/dsl.rb +2 -2
  136. data/lib/chef/exceptions.rb +1 -1
  137. data/lib/chef/file_access_control/unix.rb +14 -14
  138. data/lib/chef/file_content_management/content_base.rb +3 -1
  139. data/lib/chef/file_content_management/deploy/cp.rb +2 -2
  140. data/lib/chef/file_content_management/deploy/mv_unix.rb +4 -4
  141. data/lib/chef/file_content_management/deploy/mv_windows.rb +1 -1
  142. data/lib/chef/file_content_management/tempfile.rb +1 -1
  143. data/lib/chef/formatters/error_inspectors/compile_error_inspector.rb +3 -3
  144. data/lib/chef/guard_interpreter/default_guard_interpreter.rb +3 -1
  145. data/lib/chef/guard_interpreter/resource_guard_interpreter.rb +2 -2
  146. data/lib/chef/handler.rb +1 -3
  147. data/lib/chef/handler/json_file.rb +1 -2
  148. data/lib/chef/http.rb +23 -11
  149. data/lib/chef/http/auth_credentials.rb +1 -1
  150. data/lib/chef/http/basic_client.rb +16 -17
  151. data/lib/chef/http/decompressor.rb +6 -6
  152. data/lib/chef/http/http_request.rb +5 -5
  153. data/lib/chef/http/json_output.rb +2 -2
  154. data/lib/chef/http/socketless_chef_zero_client.rb +2 -2
  155. data/lib/chef/http/validate_content_length.rb +5 -5
  156. data/lib/chef/knife.rb +1 -1
  157. data/lib/chef/knife/bootstrap.rb +12 -37
  158. data/lib/chef/knife/bootstrap/templates/chef-full.erb +7 -1
  159. data/lib/chef/knife/client_reregister.rb +1 -1
  160. data/lib/chef/knife/configure.rb +1 -3
  161. data/lib/chef/knife/cookbook_download.rb +2 -2
  162. data/lib/chef/knife/cookbook_metadata.rb +3 -3
  163. data/lib/chef/knife/cookbook_site_install.rb +2 -2
  164. data/lib/chef/knife/cookbook_site_share.rb +5 -5
  165. data/lib/chef/knife/cookbook_test.rb +2 -2
  166. data/lib/chef/knife/cookbook_upload.rb +2 -2
  167. data/lib/chef/knife/core/status_presenter.rb +22 -17
  168. data/lib/chef/knife/core/subcommand_loader.rb +1 -1
  169. data/lib/chef/knife/deps.rb +1 -1
  170. data/lib/chef/knife/environment_compare.rb +4 -4
  171. data/lib/chef/knife/exec.rb +3 -3
  172. data/lib/chef/knife/list.rb +1 -1
  173. data/lib/chef/knife/node_policy_set.rb +79 -0
  174. data/lib/chef/knife/osc_user_reregister.rb +1 -1
  175. data/lib/chef/knife/ssh.rb +35 -22
  176. data/lib/chef/knife/ssl_check.rb +3 -3
  177. data/lib/chef/knife/ssl_fetch.rb +1 -1
  178. data/lib/chef/knife/user_reregister.rb +1 -1
  179. data/lib/chef/knife/xargs.rb +1 -1
  180. data/lib/chef/mixin/api_version_request_handling.rb +2 -4
  181. data/lib/chef/mixin/create_path.rb +1 -1
  182. data/lib/chef/mixin/deprecation.rb +14 -14
  183. data/lib/chef/mixin/from_file.rb +5 -0
  184. data/lib/chef/mixin/get_source_from_package.rb +2 -2
  185. data/lib/chef/mixin/homebrew_user.rb +13 -2
  186. data/lib/chef/mixin/openssl_helper.rb +119 -0
  187. data/lib/chef/mixin/params_validate.rb +2 -8
  188. data/lib/chef/mixin/powershell_exec.rb +105 -0
  189. data/lib/chef/mixin/provides.rb +3 -2
  190. data/lib/chef/mixin/securable.rb +1 -5
  191. data/lib/chef/mixin/shell_out.rb +2 -2
  192. data/lib/chef/mixin/template.rb +1 -3
  193. data/lib/chef/mixin/user_context.rb +6 -3
  194. data/lib/chef/mixin/why_run.rb +6 -11
  195. data/lib/chef/monkey_patches/net_http.rb +7 -7
  196. data/lib/chef/monologger.rb +2 -86
  197. data/lib/chef/node.rb +30 -20
  198. data/lib/chef/node/attribute.rb +1 -6
  199. data/lib/chef/node/attribute_collections.rb +2 -2
  200. data/lib/chef/node/immutable_collections.rb +1 -1
  201. data/lib/chef/node/mixin/immutablize_array.rb +110 -3
  202. data/lib/chef/node/mixin/immutablize_hash.rb +111 -5
  203. data/lib/chef/node_map.rb +5 -23
  204. data/lib/chef/platform/query_helpers.rb +0 -12
  205. data/lib/chef/policy_builder/dynamic.rb +1 -1
  206. data/lib/chef/policy_builder/expand_node_object.rb +1 -1
  207. data/lib/chef/policy_builder/policyfile.rb +17 -1
  208. data/lib/chef/powershell.rb +55 -0
  209. data/lib/chef/property.rb +12 -34
  210. data/lib/chef/provider.rb +16 -39
  211. data/lib/chef/provider/apt_preference.rb +3 -3
  212. data/lib/chef/provider/apt_repository.rb +116 -34
  213. data/lib/chef/provider/batch.rb +1 -1
  214. data/lib/chef/provider/cookbook_file/content.rb +1 -1
  215. data/lib/chef/provider/cron.rb +10 -10
  216. data/lib/chef/provider/cron/unix.rb +3 -3
  217. data/lib/chef/provider/directory.rb +3 -3
  218. data/lib/chef/provider/dsc_resource.rb +4 -4
  219. data/lib/chef/provider/dsc_script.rb +4 -4
  220. data/lib/chef/provider/execute.rb +9 -5
  221. data/lib/chef/provider/file.rb +12 -12
  222. data/lib/chef/provider/git.rb +14 -14
  223. data/lib/chef/provider/group.rb +6 -6
  224. data/lib/chef/provider/group/aix.rb +1 -1
  225. data/lib/chef/provider/group/dscl.rb +4 -4
  226. data/lib/chef/provider/group/groupadd.rb +4 -4
  227. data/lib/chef/provider/group/groupmod.rb +3 -3
  228. data/lib/chef/provider/group/pw.rb +4 -4
  229. data/lib/chef/provider/group/windows.rb +2 -2
  230. data/lib/chef/provider/http_request.rb +12 -12
  231. data/lib/chef/provider/ifconfig.rb +6 -6
  232. data/lib/chef/provider/ifconfig/aix.rb +1 -1
  233. data/lib/chef/provider/ifconfig/debian.rb +3 -5
  234. data/lib/chef/provider/launchd.rb +1 -1
  235. data/lib/chef/provider/link.rb +6 -6
  236. data/lib/chef/provider/log.rb +1 -1
  237. data/lib/chef/provider/lwrp_base.rb +2 -2
  238. data/lib/chef/provider/mdadm.rb +10 -10
  239. data/lib/chef/provider/mount.rb +12 -12
  240. data/lib/chef/provider/mount/aix.rb +20 -21
  241. data/lib/chef/provider/mount/mount.rb +20 -15
  242. data/lib/chef/provider/mount/solaris.rb +6 -6
  243. data/lib/chef/provider/mount/windows.rb +7 -7
  244. data/lib/chef/provider/noop.rb +1 -1
  245. data/lib/chef/provider/ohai.rb +1 -1
  246. data/lib/chef/provider/osx_profile.rb +8 -8
  247. data/lib/chef/provider/package.rb +56 -42
  248. data/lib/chef/provider/package/apt.rb +24 -14
  249. data/lib/chef/provider/package/{aix.rb → bff.rb} +12 -12
  250. data/lib/chef/provider/package/cab.rb +3 -3
  251. data/lib/chef/provider/package/chocolatey.rb +1 -9
  252. data/lib/chef/provider/package/dnf/python_helper.rb +6 -6
  253. data/lib/chef/provider/package/dpkg.rb +9 -9
  254. data/lib/chef/provider/package/freebsd/base.rb +2 -2
  255. data/lib/chef/provider/package/freebsd/pkg.rb +2 -2
  256. data/lib/chef/provider/package/freebsd/pkgng.rb +1 -1
  257. data/lib/chef/provider/package/homebrew.rb +3 -3
  258. data/lib/chef/provider/package/ips.rb +2 -2
  259. data/lib/chef/provider/package/macports.rb +3 -3
  260. data/lib/chef/provider/package/msu.rb +2 -2
  261. data/lib/chef/provider/package/openbsd.rb +3 -3
  262. data/lib/chef/provider/package/pacman.rb +3 -3
  263. data/lib/chef/provider/package/paludis.rb +2 -2
  264. data/lib/chef/provider/package/portage.rb +27 -33
  265. data/lib/chef/provider/package/powershell.rb +24 -9
  266. data/lib/chef/provider/package/rpm.rb +5 -6
  267. data/lib/chef/provider/package/rubygems.rb +32 -28
  268. data/lib/chef/provider/package/smartos.rb +6 -6
  269. data/lib/chef/provider/package/solaris.rb +10 -10
  270. data/lib/chef/provider/package/windows.rb +6 -15
  271. data/lib/chef/provider/package/windows/exe.rb +6 -4
  272. data/lib/chef/provider/package/windows/msi.rb +8 -6
  273. data/lib/chef/provider/package/windows/registry_uninstall_entry.rb +12 -6
  274. data/lib/chef/provider/package/yum.rb +167 -398
  275. data/lib/chef/provider/package/yum/python_helper.rb +221 -0
  276. data/lib/chef/provider/package/yum/rpm_utils.rb +10 -1
  277. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +79 -0
  278. data/lib/chef/provider/package/yum/simplejson/__init__.py +318 -0
  279. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  280. data/lib/chef/provider/package/yum/simplejson/decoder.py +354 -0
  281. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  282. data/lib/chef/provider/package/yum/simplejson/encoder.py +440 -0
  283. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  284. data/lib/chef/provider/package/yum/simplejson/scanner.py +65 -0
  285. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  286. data/lib/chef/provider/package/yum/simplejson/tool.py +37 -0
  287. data/lib/chef/provider/package/yum/version.rb +56 -0
  288. data/lib/chef/provider/package/yum/yum_cache.rb +33 -316
  289. data/lib/chef/provider/package/yum/yum_helper.py +198 -0
  290. data/lib/chef/provider/package/zypper.rb +9 -13
  291. data/lib/chef/provider/powershell_script.rb +3 -3
  292. data/lib/chef/provider/reboot.rb +3 -3
  293. data/lib/chef/provider/registry_key.rb +16 -4
  294. data/lib/chef/provider/remote_directory.rb +1 -3
  295. data/lib/chef/provider/remote_file/cache_control_data.rb +1 -1
  296. data/lib/chef/provider/remote_file/content.rb +4 -4
  297. data/lib/chef/provider/remote_file/http.rb +5 -3
  298. data/lib/chef/provider/remote_file/local_file.rb +1 -1
  299. data/lib/chef/provider/remote_file/network_file.rb +2 -2
  300. data/lib/chef/provider/route.rb +12 -11
  301. data/lib/chef/provider/ruby_block.rb +1 -1
  302. data/lib/chef/provider/script.rb +2 -2
  303. data/lib/chef/provider/service.rb +14 -14
  304. data/lib/chef/provider/service/aix.rb +3 -3
  305. data/lib/chef/provider/service/aixinit.rb +2 -2
  306. data/lib/chef/provider/service/debian.rb +5 -5
  307. data/lib/chef/provider/service/freebsd.rb +3 -3
  308. data/lib/chef/provider/service/gentoo.rb +2 -2
  309. data/lib/chef/provider/service/macosx.rb +8 -8
  310. data/lib/chef/provider/service/openbsd.rb +1 -1
  311. data/lib/chef/provider/service/simple.rb +7 -7
  312. data/lib/chef/provider/service/systemd.rb +4 -4
  313. data/lib/chef/provider/service/upstart.rb +10 -9
  314. data/lib/chef/provider/service/windows.rb +245 -70
  315. data/lib/chef/provider/subversion.rb +8 -8
  316. data/lib/chef/provider/systemd_unit.rb +25 -6
  317. data/lib/chef/provider/user.rb +10 -10
  318. data/lib/chef/provider/user/aix.rb +3 -3
  319. data/lib/chef/provider/user/dscl.rb +2 -2
  320. data/lib/chef/provider/user/pw.rb +4 -4
  321. data/lib/chef/provider/user/solaris.rb +1 -1
  322. data/lib/chef/provider/user/useradd.rb +3 -3
  323. data/lib/chef/provider/user/windows.rb +4 -4
  324. data/lib/chef/provider/whyrun_safe_ruby_block.rb +1 -1
  325. data/lib/chef/provider/{env.rb → windows_env.rb} +55 -19
  326. data/lib/chef/provider/windows_task.rb +27 -27
  327. data/lib/chef/provider/zypper_repository.rb +7 -7
  328. data/lib/chef/provider_resolver.rb +4 -4
  329. data/lib/chef/providers.rb +2 -9
  330. data/lib/chef/resource.rb +19 -13
  331. data/lib/chef/resource/action_class.rb +2 -2
  332. data/lib/chef/resource/apt_package.rb +10 -4
  333. data/lib/chef/resource/apt_preference.rb +20 -7
  334. data/lib/chef/resource/apt_repository.rb +21 -12
  335. data/lib/chef/resource/apt_update.rb +3 -3
  336. data/lib/chef/resource/bash.rb +6 -4
  337. data/lib/chef/resource/batch.rb +8 -6
  338. data/lib/chef/resource/bff_package.rb +8 -5
  339. data/lib/chef/resource/breakpoint.rb +9 -6
  340. data/lib/chef/resource/build_essential.rb +139 -0
  341. data/lib/chef/resource/cab_package.rb +5 -4
  342. data/lib/chef/resource/chef_gem.rb +1 -1
  343. data/lib/chef/resource/chef_handler.rb +130 -0
  344. data/lib/chef/resource/chocolatey_package.rb +6 -6
  345. data/lib/chef/resource/cookbook_file.rb +12 -9
  346. data/lib/chef/resource/cron.rb +14 -75
  347. data/lib/chef/resource/csh.rb +6 -4
  348. data/lib/chef/resource/directory.rb +7 -4
  349. data/lib/chef/resource/dmg_package.rb +161 -0
  350. data/lib/chef/resource/dnf_package.rb +10 -7
  351. data/lib/chef/resource/dpkg_package.rb +5 -3
  352. data/lib/chef/resource/dsc_resource.rb +11 -28
  353. data/lib/chef/resource/dsc_script.rb +14 -37
  354. data/lib/chef/resource/execute.rb +15 -78
  355. data/lib/chef/resource/file.rb +6 -5
  356. data/lib/chef/resource/file/verification.rb +5 -1
  357. data/lib/chef/resource/freebsd_package.rb +2 -1
  358. data/lib/chef/resource/gem_package.rb +6 -3
  359. data/lib/chef/resource/git.rb +4 -15
  360. data/lib/chef/resource/group.rb +7 -46
  361. data/lib/chef/resource/homebrew_cask.rb +98 -0
  362. data/lib/chef/resource/homebrew_package.rb +3 -3
  363. data/lib/chef/resource/homebrew_tap.rb +86 -0
  364. data/lib/chef/resource/hostname.rb +249 -0
  365. data/lib/chef/resource/http_request.rb +8 -22
  366. data/lib/chef/resource/ifconfig.rb +3 -2
  367. data/lib/chef/resource/ips_package.rb +4 -3
  368. data/lib/chef/resource/ksh.rb +7 -6
  369. data/lib/chef/resource/launchd.rb +4 -4
  370. data/lib/chef/resource/link.rb +18 -56
  371. data/lib/chef/resource/log.rb +6 -8
  372. data/lib/chef/resource/lwrp_base.rb +4 -5
  373. data/lib/chef/resource/macos_userdefaults.rb +133 -0
  374. data/lib/chef/resource/macosx_service.rb +7 -23
  375. data/lib/chef/resource/macports_package.rb +2 -1
  376. data/lib/chef/resource/mdadm.rb +13 -84
  377. data/lib/chef/resource/mount.rb +21 -127
  378. data/lib/chef/resource/msu_package.rb +4 -4
  379. data/lib/chef/resource/ohai.rb +5 -3
  380. data/lib/chef/resource/ohai_hint.rb +93 -0
  381. data/lib/chef/resource/openbsd_package.rb +3 -3
  382. data/lib/chef/resource/openssl_dhparam.rb +80 -0
  383. data/lib/chef/resource/openssl_rsa_private_key.rb +93 -0
  384. data/lib/chef/resource/openssl_rsa_public_key.rb +73 -0
  385. data/lib/chef/resource/osx_profile.rb +9 -10
  386. data/lib/chef/resource/package.rb +8 -6
  387. data/lib/chef/resource/pacman_package.rb +3 -2
  388. data/lib/chef/resource/paludis_package.rb +4 -4
  389. data/lib/chef/resource/perl.rb +6 -4
  390. data/lib/chef/resource/portage_package.rb +3 -6
  391. data/lib/chef/resource/powershell_package.rb +9 -13
  392. data/lib/chef/resource/powershell_script.rb +9 -8
  393. data/lib/chef/resource/python.rb +5 -4
  394. data/lib/chef/resource/reboot.rb +8 -9
  395. data/lib/chef/resource/registry_key.rb +9 -19
  396. data/lib/chef/resource/remote_directory.rb +5 -3
  397. data/lib/chef/resource/remote_file.rb +11 -50
  398. data/lib/chef/resource/resource_notification.rb +2 -2
  399. data/lib/chef/resource/rhsm_errata.rb +44 -0
  400. data/lib/chef/resource/rhsm_errata_level.rb +51 -0
  401. data/lib/chef/resource/rhsm_register.rb +162 -0
  402. data/lib/chef/resource/rhsm_repo.rb +62 -0
  403. data/lib/chef/resource/rhsm_subscription.rb +95 -0
  404. data/lib/chef/resource/route.rb +3 -1
  405. data/lib/chef/resource/rpm_package.rb +3 -3
  406. data/lib/chef/resource/ruby.rb +6 -4
  407. data/lib/chef/resource/ruby_block.rb +6 -17
  408. data/lib/chef/resource/scm.rb +14 -146
  409. data/lib/chef/resource/script.rb +7 -5
  410. data/lib/chef/resource/service.rb +2 -1
  411. data/lib/chef/resource/smartos_package.rb +4 -3
  412. data/lib/chef/resource/solaris_package.rb +3 -2
  413. data/lib/chef/resource/subversion.rb +20 -4
  414. data/lib/chef/resource/sudo.rb +231 -0
  415. data/lib/chef/resource/support/sudoer.erb +18 -0
  416. data/lib/chef/resource/swap_file.rb +209 -0
  417. data/lib/chef/resource/sysctl.rb +111 -0
  418. data/lib/chef/resource/systemd_unit.rb +6 -5
  419. data/lib/chef/resource/template.rb +6 -27
  420. data/lib/chef/resource/windows_ad_join.rb +92 -0
  421. data/lib/chef/resource/windows_auto_run.rb +87 -0
  422. data/lib/chef/resource/{env.rb → windows_env.rb} +11 -5
  423. data/lib/chef/resource/windows_feature.rb +95 -0
  424. data/lib/chef/resource/windows_feature_dism.rb +226 -0
  425. data/lib/chef/resource/windows_feature_powershell.rb +256 -0
  426. data/lib/chef/resource/windows_font.rb +127 -0
  427. data/lib/chef/resource/windows_package.rb +5 -3
  428. data/lib/chef/resource/windows_pagefile.rb +206 -0
  429. data/lib/chef/resource/windows_path.rb +3 -3
  430. data/lib/chef/resource/windows_printer.rb +148 -0
  431. data/lib/chef/resource/windows_printer_port.rb +136 -0
  432. data/lib/chef/resource/windows_service.rb +79 -38
  433. data/lib/chef/resource/windows_shortcut.rb +79 -0
  434. data/lib/chef/resource/windows_task.rb +5 -5
  435. data/lib/chef/resource/yum_package.rb +8 -2
  436. data/lib/chef/resource/yum_repository.rb +12 -5
  437. data/lib/chef/resource/zypper_package.rb +5 -3
  438. data/lib/chef/resource/zypper_repository.rb +17 -12
  439. data/lib/chef/resource_inspector.rb +89 -0
  440. data/lib/chef/resource_reporter.rb +5 -6
  441. data/lib/chef/resource_resolver.rb +4 -4
  442. data/lib/chef/resources.rb +31 -6
  443. data/lib/chef/role.rb +1 -3
  444. data/lib/chef/run_context.rb +21 -12
  445. data/lib/chef/run_context/cookbook_compiler.rb +18 -9
  446. data/lib/chef/search/query.rb +1 -2
  447. data/lib/chef/shell.rb +0 -1
  448. data/lib/chef/shell/model_wrapper.rb +1 -1
  449. data/lib/chef/shell/shell_session.rb +4 -3
  450. data/lib/chef/util/diff.rb +2 -2
  451. data/lib/chef/util/dsc/configuration_generator.rb +1 -1
  452. data/lib/chef/util/dsc/lcm_output_parser.rb +1 -1
  453. data/lib/chef/util/dsc/local_configuration_manager.rb +4 -4
  454. data/lib/chef/util/selinux.rb +1 -1
  455. data/lib/chef/util/windows/logon_session.rb +5 -2
  456. data/lib/chef/util/windows/net_user.rb +2 -2
  457. data/lib/chef/util/windows/volume.rb +0 -4
  458. data/lib/chef/version.rb +1 -1
  459. data/lib/chef/win32/api/error.rb +2 -2
  460. data/lib/chef/win32/api/net.rb +1 -1
  461. data/lib/chef/win32/api/security.rb +11 -0
  462. data/lib/chef/win32/eventlog.rb +2 -2
  463. data/lib/chef/win32/mutex.rb +1 -1
  464. data/lib/chef/win32/registry.rb +17 -17
  465. data/lib/chef/win32/security.rb +34 -12
  466. data/lib/chef/win32/security/sid.rb +1 -2
  467. data/lib/chef/win32/version.rb +2 -15
  468. data/lib/chef/win32_service_constants.rb +143 -0
  469. data/spec/data/mixin/invalid_data.rb +3 -0
  470. data/spec/data/mixin/real_data.rb +2 -0
  471. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.aarch64.rpm +0 -0
  472. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.i686.rpm +0 -0
  473. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64.rpm +0 -0
  474. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.ppc64le.rpm +0 -0
  475. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.s390x.rpm +0 -0
  476. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.src.rpm +0 -0
  477. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.x86_64.rpm +0 -0
  478. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.aarch64.rpm +0 -0
  479. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.i686.rpm +0 -0
  480. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64.rpm +0 -0
  481. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.ppc64le.rpm +0 -0
  482. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.s390x.rpm +0 -0
  483. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.src.rpm +0 -0
  484. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.x86_64.rpm +0 -0
  485. data/spec/functional/assets/yumrepo/repodata/4632d67cb92636e7575d911c24f0e04d3505a944e97c483abe0c3e73a7c62d33-filelists.sqlite.bz2 +0 -0
  486. data/spec/functional/assets/yumrepo/repodata/74599b793e54d877323837d2d81a1c3c594c44e4335f9528234bb490f7b9b439-other.xml.gz +0 -0
  487. data/spec/functional/assets/yumrepo/repodata/a845d418f919d2115ab95a56b2c76f6825ad0d0bede49181a55c04f58995d057-primary.sqlite.bz2 +0 -0
  488. data/spec/functional/assets/yumrepo/repodata/af9b7cf9ef23bd7b43068d74a460f3b5d06753d638e58e4a0c9edc35bfb9cdc4-other.sqlite.bz2 +0 -0
  489. data/spec/functional/assets/yumrepo/repodata/bdb4f5f1492a3b9532f22c43110a81500dd744f23da0aec5c33b2a41317c737d-filelists.xml.gz +0 -0
  490. data/spec/functional/assets/yumrepo/repodata/c10d1d34ce99e02f12ec96ef68360543ab1bb7c3cb81a4a2bf78df7d8597e9df-primary.xml.gz +0 -0
  491. data/spec/functional/assets/yumrepo/repodata/filelists.xml.gz +0 -0
  492. data/spec/functional/assets/yumrepo/repodata/other.xml.gz +0 -0
  493. data/spec/functional/assets/yumrepo/repodata/primary.xml.gz +0 -0
  494. data/spec/functional/assets/yumrepo/repodata/repomd.xml +19 -53
  495. data/spec/functional/event_loggers/windows_eventlog_spec.rb +2 -2
  496. data/spec/functional/http/simple_spec.rb +6 -6
  497. data/spec/functional/mixin/from_file_spec.rb +82 -0
  498. data/spec/functional/notifications_spec.rb +1 -1
  499. data/spec/functional/resource/{package_spec.rb → apt_package_spec.rb} +4 -4
  500. data/spec/functional/resource/dnf_package_spec.rb +115 -115
  501. data/spec/functional/resource/ifconfig_spec.rb +1 -2
  502. data/spec/functional/resource/link_spec.rb +9 -13
  503. data/spec/functional/resource/powershell_script_spec.rb +0 -2
  504. data/spec/functional/resource/registry_spec.rb +3 -3
  505. data/spec/functional/resource/remote_file_spec.rb +4 -4
  506. data/spec/functional/resource/user/windows_spec.rb +3 -1
  507. data/spec/functional/resource/windows_env_spec.rb +285 -0
  508. data/spec/functional/resource/windows_task_spec.rb +303 -2
  509. data/spec/functional/resource/yum_package_spec.rb +949 -0
  510. data/spec/functional/root_alias_spec.rb +1 -1
  511. data/spec/functional/win32/security_spec.rb +60 -7
  512. data/spec/functional/win32/versions_spec.rb +7 -9
  513. data/spec/integration/client/client_spec.rb +99 -7
  514. data/spec/integration/knife/chef_fs_data_store_spec.rb +23 -4
  515. data/spec/integration/recipes/recipe_dsl_spec.rb +26 -26
  516. data/spec/integration/recipes/resource_action_spec.rb +25 -120
  517. data/spec/spec_helper.rb +10 -2
  518. data/spec/support/lib/chef/resource/one_two_three_four.rb +0 -2
  519. data/spec/support/lib/chef/resource/zen_master.rb +1 -3
  520. data/spec/support/mock/constant.rb +1 -1
  521. data/spec/support/platform_helpers.rb +24 -7
  522. data/spec/support/shared/context/client.rb +13 -10
  523. data/spec/support/shared/examples/client.rb +50 -0
  524. data/spec/support/shared/functional/file_resource.rb +1 -1
  525. data/spec/support/shared/functional/securable_resource.rb +2 -2
  526. data/spec/support/shared/integration/knife_support.rb +5 -0
  527. data/spec/unit/application/client_spec.rb +39 -13
  528. data/spec/unit/application/solo_spec.rb +1 -8
  529. data/spec/unit/application_spec.rb +66 -2
  530. data/spec/unit/audit/audit_event_proxy_spec.rb +1 -1
  531. data/spec/unit/audit/audit_reporter_spec.rb +16 -16
  532. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  533. data/spec/unit/client_spec.rb +3 -4
  534. data/spec/unit/cookbook/metadata_spec.rb +1 -1
  535. data/spec/unit/cookbook_loader_spec.rb +6 -6
  536. data/spec/unit/cookbook_manifest_spec.rb +2 -2
  537. data/spec/unit/cookbook_version_file_specificity_spec.rb +5 -25
  538. data/spec/unit/data_collector/messages/helpers_spec.rb +9 -0
  539. data/spec/unit/data_collector/resource_report_spec.rb +3 -3
  540. data/spec/unit/data_collector_spec.rb +135 -1
  541. data/spec/unit/dsl/reboot_pending_spec.rb +0 -13
  542. data/spec/unit/dsl/recipe_spec.rb +0 -13
  543. data/spec/unit/environment_spec.rb +2 -2
  544. data/spec/unit/exceptions_spec.rb +1 -1
  545. data/spec/unit/http/validate_content_length_spec.rb +5 -5
  546. data/spec/unit/knife/bootstrap_spec.rb +11 -15
  547. data/spec/unit/knife/configure_spec.rb +1 -2
  548. data/spec/unit/knife/cookbook_test_spec.rb +2 -2
  549. data/spec/unit/knife/core/gem_glob_loader_spec.rb +2 -2
  550. data/spec/unit/knife/core/node_editor_spec.rb +6 -6
  551. data/spec/unit/knife/environment_compare_spec.rb +3 -3
  552. data/spec/unit/knife/node_edit_spec.rb +3 -1
  553. data/spec/unit/knife/node_policy_set_spec.rb +122 -0
  554. data/spec/unit/knife/osc_user_reregister_spec.rb +1 -1
  555. data/spec/unit/knife/osc_user_show_spec.rb +1 -1
  556. data/spec/unit/knife/ssh_spec.rb +18 -0
  557. data/spec/unit/log/syslog_spec.rb +2 -4
  558. data/spec/unit/log/winevt_spec.rb +2 -3
  559. data/spec/unit/lwrp_spec.rb +4 -4
  560. data/spec/unit/mixin/homebrew_user_spec.rb +1 -5
  561. data/spec/unit/mixin/openssl_helper_spec.rb +252 -0
  562. data/spec/unit/mixin/powershell_exec_spec.rb +43 -0
  563. data/spec/unit/node/attribute_spec.rb +3 -3
  564. data/spec/unit/node/immutable_collections_spec.rb +11 -1
  565. data/spec/unit/node_map_spec.rb +2 -2
  566. data/spec/unit/node_spec.rb +11 -16
  567. data/spec/unit/platform/query_helpers_spec.rb +0 -13
  568. data/spec/unit/policy_builder/policyfile_spec.rb +79 -2
  569. data/spec/unit/property/validation_spec.rb +51 -4
  570. data/spec/unit/provider/apt_repository_spec.rb +97 -32
  571. data/spec/unit/provider/cookbook_file_spec.rb +2 -1
  572. data/spec/unit/provider/cron/unix_spec.rb +8 -3
  573. data/spec/unit/provider/cron_spec.rb +27 -32
  574. data/spec/unit/provider/file_spec.rb +2 -1
  575. data/spec/unit/provider/group/dscl_spec.rb +7 -8
  576. data/spec/unit/provider/group/gpasswd_spec.rb +5 -2
  577. data/spec/unit/provider/group/groupmod_spec.rb +6 -3
  578. data/spec/unit/provider/group/pw_spec.rb +5 -2
  579. data/spec/unit/provider/link_spec.rb +6 -4
  580. data/spec/unit/provider/log_spec.rb +18 -13
  581. data/spec/unit/provider/mount/aix_spec.rb +1 -9
  582. data/spec/unit/provider/mount/mount_spec.rb +22 -0
  583. data/spec/unit/provider/osx_profile_spec.rb +3 -3
  584. data/spec/unit/provider/package/apt_spec.rb +431 -411
  585. data/spec/unit/provider/package/{aix_spec.rb → bff_spec.rb} +7 -5
  586. data/spec/unit/provider/package/chocolatey_spec.rb +0 -13
  587. data/spec/unit/provider/package/homebrew_spec.rb +2 -1
  588. data/spec/unit/provider/package/portage_spec.rb +11 -147
  589. data/spec/unit/provider/package/powershell_spec.rb +208 -57
  590. data/spec/unit/provider/package/rubygems_spec.rb +11 -2
  591. data/spec/unit/provider/package/windows_spec.rb +0 -19
  592. data/spec/unit/provider/package/yum/python_helper_spec.rb +29 -0
  593. data/spec/unit/provider/package/yum/yum_cache_spec.rb +86 -4
  594. data/spec/unit/provider/package/zypper_spec.rb +8 -0
  595. data/spec/unit/provider/package_spec.rb +47 -20
  596. data/spec/unit/provider/registry_key_spec.rb +7 -1
  597. data/spec/unit/provider/remote_directory_spec.rb +1 -1
  598. data/spec/unit/provider/remote_file_spec.rb +2 -1
  599. data/spec/unit/provider/service/macosx_spec.rb +4 -2
  600. data/spec/unit/provider/service/systemd_service_spec.rb +2 -10
  601. data/spec/unit/provider/service/windows_spec.rb +447 -30
  602. data/spec/unit/provider/systemd_unit_spec.rb +50 -13
  603. data/spec/unit/provider/template_spec.rb +2 -4
  604. data/spec/unit/provider/user/windows_spec.rb +3 -0
  605. data/spec/unit/provider/{env_spec.rb → windows_env_spec.rb} +102 -12
  606. data/spec/unit/provider/zypper_repository_spec.rb +4 -2
  607. data/spec/unit/provider_resolver_spec.rb +23 -38
  608. data/spec/unit/recipe_spec.rb +4 -4
  609. data/spec/unit/resource/apt_package_spec.rb +4 -0
  610. data/spec/unit/resource/apt_preference_spec.rb +0 -5
  611. data/spec/unit/resource/apt_repository_spec.rb +35 -10
  612. data/spec/unit/resource/apt_update_spec.rb +0 -5
  613. data/spec/unit/resource/bash_spec.rb +2 -3
  614. data/spec/unit/resource/batch_spec.rb +1 -4
  615. data/spec/unit/resource/{timestamped_deploy_spec.rb → build_essential_spec.rb} +10 -11
  616. data/spec/unit/resource/cab_package_spec.rb +1 -3
  617. data/{lib/chef/mixin/language_include_attribute.rb → spec/unit/resource/chef_handler_spec.rb} +13 -12
  618. data/spec/unit/resource/chocolatey_package_spec.rb +1 -3
  619. data/spec/unit/resource/cron_spec.rb +0 -5
  620. data/spec/unit/resource/csh_spec.rb +2 -3
  621. data/spec/unit/resource/directory_spec.rb +1 -6
  622. data/{lib/chef/resource/deploy_revision.rb → spec/unit/resource/dmg_package_spec.rb} +14 -10
  623. data/spec/unit/resource/dnf_package_spec.rb +20 -26
  624. data/spec/unit/resource/file_spec.rb +1 -1
  625. data/spec/unit/resource/freebsd_package_spec.rb +22 -23
  626. data/spec/unit/resource/gem_package_spec.rb +3 -5
  627. data/spec/unit/resource/git_spec.rb +1 -2
  628. data/spec/unit/resource/group_spec.rb +0 -5
  629. data/spec/unit/resource/homebrew_cask_spec.rb +35 -0
  630. data/spec/unit/resource/homebrew_package_spec.rb +4 -0
  631. data/spec/unit/resource/homebrew_tap_spec.rb +39 -0
  632. data/spec/unit/resource/hostname_spec.rb +43 -0
  633. data/spec/unit/resource/http_request_spec.rb +0 -5
  634. data/spec/unit/resource/ips_package_spec.rb +4 -0
  635. data/spec/unit/resource/ksh_spec.rb +2 -3
  636. data/spec/unit/resource/launchd_spec.rb +0 -5
  637. data/spec/unit/resource/link_spec.rb +1 -6
  638. data/spec/unit/resource/log_spec.rb +0 -5
  639. data/spec/unit/resource/macos_user_defaults_spec.rb +45 -0
  640. data/spec/unit/resource/mdadm_spec.rb +0 -5
  641. data/spec/unit/resource/mount_spec.rb +1 -6
  642. data/spec/unit/resource/msu_package_spec.rb +1 -3
  643. data/spec/unit/resource/ohai_hint_spec.rb +43 -0
  644. data/spec/unit/resource/ohai_spec.rb +0 -5
  645. data/spec/unit/resource/openbsd_package_spec.rb +8 -12
  646. data/spec/unit/resource/openssl_dhparam.rb +51 -0
  647. data/spec/unit/resource/openssl_rsa_private_key_spec.rb +59 -0
  648. data/spec/unit/resource/openssl_rsa_public_key_spec.rb +39 -0
  649. data/spec/unit/resource/osx_profile_spec.rb +0 -5
  650. data/spec/unit/resource/package_spec.rb +0 -5
  651. data/spec/unit/resource/perl_spec.rb +2 -3
  652. data/spec/unit/resource/portage_package_spec.rb +3 -7
  653. data/spec/unit/resource/powershell_package_spec.rb +11 -4
  654. data/spec/unit/resource/python_spec.rb +0 -5
  655. data/spec/unit/resource/reboot_spec.rb +0 -5
  656. data/spec/unit/resource/registry_key_spec.rb +5 -6
  657. data/spec/unit/resource/remote_directory_spec.rb +0 -5
  658. data/spec/unit/resource/remote_file_spec.rb +1 -5
  659. data/spec/unit/resource/rhsm_errata_level_spec.rb +46 -0
  660. data/{lib/chef/mixin/language_include_recipe.rb → spec/unit/resource/rhsm_errata_spec.rb} +14 -10
  661. data/spec/unit/resource/rhsm_register_spec.rb +199 -0
  662. data/spec/unit/resource/rhsm_repo_spec.rb +59 -0
  663. data/spec/unit/resource/rhsm_subscription_spec.rb +93 -0
  664. data/spec/unit/resource/route_spec.rb +1 -6
  665. data/spec/unit/resource/rpm_package_spec.rb +4 -0
  666. data/spec/unit/resource/ruby_block_spec.rb +0 -5
  667. data/spec/unit/resource/ruby_spec.rb +0 -5
  668. data/spec/unit/resource/scm_spec.rb +0 -15
  669. data/spec/unit/resource/service_spec.rb +0 -5
  670. data/spec/unit/resource/subversion_spec.rb +12 -0
  671. data/spec/unit/resource/sudo_spec.rb +92 -0
  672. data/spec/unit/resource/swap_file_spec.rb +40 -0
  673. data/spec/unit/resource/sysctl_spec.rb +56 -0
  674. data/spec/unit/resource/systemd_unit_spec.rb +5 -7
  675. data/spec/unit/resource/template_spec.rb +1 -3
  676. data/spec/unit/resource/user_spec.rb +0 -5
  677. data/spec/unit/resource/windows_ad_join.rb +45 -0
  678. data/spec/unit/resource/windows_auto_run_spec.rb +50 -0
  679. data/spec/unit/resource/{env_spec.rb → windows_env_spec.rb} +19 -21
  680. data/spec/unit/resource/windows_feature.rb +41 -0
  681. data/spec/unit/resource/windows_feature_dism.rb +51 -0
  682. data/spec/unit/resource/windows_feature_powershell.rb +51 -0
  683. data/spec/unit/resource/windows_font_spec.rb +44 -0
  684. data/spec/unit/resource/windows_package_spec.rb +2 -2
  685. data/spec/unit/resource/windows_pagefile_spec.rb +45 -0
  686. data/spec/unit/resource/windows_printer_port_spec.rb +45 -0
  687. data/spec/unit/resource/windows_printer_spec.rb +45 -0
  688. data/spec/unit/resource/windows_service_spec.rb +25 -4
  689. data/spec/unit/resource/windows_shortcut_spec.rb +39 -0
  690. data/spec/unit/resource/windows_task_spec.rb +0 -5
  691. data/spec/unit/resource/yum_repository_spec.rb +4 -0
  692. data/spec/unit/resource/zypper_repository_spec.rb +4 -0
  693. data/spec/unit/resource_inspector_spec.rb +60 -0
  694. data/spec/unit/resource_reporter_spec.rb +2 -2
  695. data/spec/unit/resource_spec.rb +0 -5
  696. data/spec/unit/shell/shell_session_spec.rb +0 -1
  697. data/spec/unit/user_spec.rb +1 -1
  698. data/spec/unit/util/windows/logon_session_spec.rb +2 -1
  699. data/spec/unit/win32/security_spec.rb +44 -1
  700. data/spec/unit/windows_service_spec.rb +4 -2
  701. data/tasks/announce.rb +1 -1
  702. data/tasks/cbgb.rb +84 -0
  703. data/tasks/dependencies.rb +38 -2
  704. data/tasks/maintainers.rb +7 -7
  705. data/tasks/rspec.rb +2 -2
  706. data/tasks/templates/prerelease.md.erb +2 -11
  707. data/tasks/templates/release.md.erb +1 -9
  708. metadata +225 -96
  709. data/lib/chef/knife/help.rb +0 -101
  710. data/lib/chef/knife/help_topics.rb +0 -4
  711. data/lib/chef/knife/index_rebuild.rb +0 -133
  712. data/lib/chef/mixin/language.rb +0 -48
  713. data/lib/chef/mixin/recipe_definition_dsl_core.rb +0 -35
  714. data/lib/chef/provider/deploy.rb +0 -470
  715. data/lib/chef/provider/deploy/revision.rb +0 -107
  716. data/lib/chef/provider/deploy/timestamped.rb +0 -34
  717. data/lib/chef/provider/env/windows.rb +0 -76
  718. data/lib/chef/provider/erl_call.rb +0 -76
  719. data/lib/chef/provider/package/yum/yum-dump.py +0 -307
  720. data/lib/chef/resource/deploy.rb +0 -449
  721. data/lib/chef/resource/erl_call.rb +0 -90
  722. data/lib/chef/resource/timestamped_deploy.rb +0 -26
  723. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.i686.rpm +0 -0
  724. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.src.rpm +0 -0
  725. data/spec/functional/assets/yumrepo/chef_rpm-1.10-1.fc24.x86_64.rpm +0 -0
  726. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.i686.rpm +0 -0
  727. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.src.rpm +0 -0
  728. data/spec/functional/assets/yumrepo/chef_rpm-1.2-1.fc24.x86_64.rpm +0 -0
  729. data/spec/functional/assets/yumrepo/repodata/313329137b55fd333b2dc66394a6661a2befa6cc535d8460d92a4a78a9c581f0-primary.sqlite.bz2 +0 -0
  730. data/spec/functional/assets/yumrepo/repodata/31ac4db5d5ac593728fcc26aef82b7b93c4cc4dbec843786b1845b939b658553-other.xml.gz +0 -0
  731. data/spec/functional/assets/yumrepo/repodata/4ac40fa3c6728c1401318e2e20a997436624e83dcf7a5f952b851ef422637773-filelists.sqlite.bz2 +0 -0
  732. data/spec/functional/assets/yumrepo/repodata/66391e53f0510b98b3f0b79f40ba1048026d9a1ef20905d9c40ba6f5411f3243-primary.xml.gz +0 -0
  733. data/spec/functional/assets/yumrepo/repodata/8b34697595fcc87928e12d24644dda9462c3857bd932861e28bc77ae1f31be16-filelists.xml.gz +0 -0
  734. data/spec/functional/assets/yumrepo/repodata/b97cca3fe14bcf06c52be4449b6108f7731239ff221111dcce8aada5467f60dc-other.sqlite.bz2 +0 -0
  735. data/spec/functional/resource/deploy_revision_spec.rb +0 -881
  736. data/spec/functional/resource/env_spec.rb +0 -192
  737. data/spec/unit/knife/index_rebuild_spec.rb +0 -125
  738. data/spec/unit/knife/knife_help.rb +0 -92
  739. data/spec/unit/provider/deploy/revision_spec.rb +0 -110
  740. data/spec/unit/provider/deploy/timestamped_spec.rb +0 -40
  741. data/spec/unit/provider/deploy_spec.rb +0 -641
  742. data/spec/unit/provider/env/windows_spec.rb +0 -103
  743. data/spec/unit/provider/erl_call_spec.rb +0 -77
  744. data/spec/unit/provider/package/yum_spec.rb +0 -2294
  745. data/spec/unit/resource/deploy_revision_spec.rb +0 -42
  746. data/spec/unit/resource/deploy_spec.rb +0 -283
  747. data/spec/unit/resource/erl_call_spec.rb +0 -81
@@ -202,20 +202,12 @@ WRONG
202
202
  it "should enable mount if it is mounted and not enabled" do
203
203
  @new_resource.options("nodev,rw")
204
204
  stub_mounted_enabled(@provider, @mounted_output, "")
205
- # Add existing mount to test enable action appends additional mount with seperating blank line
206
205
  filesystems = StringIO.new
207
- filesystems.puts <<~ETCFILESYSTEMS
208
- /tmp/abc:
209
- dev = /dev/sdz2
210
- vfs = jfs2
211
- mount = true
212
- options = rw
213
- ETCFILESYSTEMS
214
206
  allow(::File).to receive(:open).with("/etc/filesystems", "a").and_yield(filesystems)
215
207
 
216
208
  @provider.run_action(:enable)
217
209
 
218
- expect(filesystems.string).to match(%r{^\n\n/tmp/foo:\n\tdev\t\t= /dev/sdz1\n\tvfs\t\t= jfs2\n\tmount\t\t= false\n\toptions\t\t= nodev,rw\n$})
210
+ expect(filesystems.string).to match(%r{^/tmp/foo:\n\tdev\t\t= /dev/sdz1\n\tvfs\t\t= jfs2\n\tmount\t\t= false\n\toptions\t\t= nodev,rw\n$})
219
211
  end
220
212
 
221
213
  it "should not enable mount if it is mounted and already enabled and mount options are unchanged" do
@@ -374,6 +374,28 @@ describe Chef::Provider::Mount::Mount do
374
374
  end
375
375
  end
376
376
 
377
+ describe "default_mount_options" do
378
+ it "should return the correct default mount options for Linux" do
379
+ @provider.node.override[:os] = "linux"
380
+ expect(@provider.default_mount_options).to eq("defaults")
381
+ end
382
+
383
+ it "should return the correct default mount options for AIX" do
384
+ @provider.node.override[:os] = "aix"
385
+ expect(@provider.default_mount_options).to eq("rw")
386
+ end
387
+
388
+ it "should return the correct default mount options for Darwin" do
389
+ @provider.node.override[:os] = "darwin"
390
+ expect(@provider.default_mount_options).to eq("rw")
391
+ end
392
+
393
+ it "should return the correct default mount options for FreeBSD" do
394
+ @provider.node.override[:os] = "freebsd"
395
+ expect(@provider.default_mount_options).to eq("rw")
396
+ end
397
+ end
398
+
377
399
  describe "when enabling the fs" do
378
400
  it "should enable if enabled isn't true" do
379
401
  @current_resource.enabled(false)
@@ -116,7 +116,7 @@ describe Chef::Provider::OsxProfile do
116
116
  allow(provider).to receive(:generate_tempfile).and_return(tempfile)
117
117
  allow(provider).to receive(:get_installed_profiles).and_call_original
118
118
  allow(provider).to receive(:read_plist).and_return(all_profiles)
119
- expect(provider).to receive(:shell_out!).with("/usr/bin/profiles -P -o '/tmp/allprofiles.plist'")
119
+ expect(provider).to receive(:shell_out!).with("profiles -P -o '/tmp/allprofiles.plist'")
120
120
  provider.load_current_resource
121
121
  end
122
122
 
@@ -164,7 +164,7 @@ describe Chef::Provider::OsxProfile do
164
164
  all_profiles["_computerlevel"][1]["ProfileUUID"] = "1781fbec-3325-565f-9022-9bb39245d4dd"
165
165
  provider.load_current_resource
166
166
  allow(provider).to receive(:write_profile_to_disk).and_return(profile_path)
167
- expect(provider).to receive(:shell_out).with("/usr/bin/profiles -I -F '#{profile_path}'").and_return(shell_out_success)
167
+ expect(provider).to receive(:shell_out).with("profiles -I -F '#{profile_path}'").and_return(shell_out_success)
168
168
  provider.action_install()
169
169
  end
170
170
 
@@ -248,7 +248,7 @@ describe Chef::Provider::OsxProfile do
248
248
  new_resource.identifier "com.testprofile.screensaver"
249
249
  new_resource.action(:remove)
250
250
  provider.load_current_resource
251
- expect(provider).to receive(:shell_out).with("/usr/bin/profiles -R -p '#{new_resource.identifier}'").and_return(shell_out_success)
251
+ expect(provider).to receive(:shell_out).with("profiles -R -p '#{new_resource.identifier}'").and_return(shell_out_success)
252
252
  provider.action_remove()
253
253
  end
254
254
  end
@@ -20,52 +20,52 @@ require "spec_helper"
20
20
  require "ostruct"
21
21
 
22
22
  describe Chef::Provider::Package::Apt do
23
+ let(:logger) { double("Mixlib::Log::Child").as_null_object }
23
24
  # XXX: sorry this is ugly and was done quickly to get 12.0.2 out, this file needs a rewrite to use
24
25
  # let blocks and shared examples
25
- [ Chef::Resource::Package, Chef::Resource::AptPackage ].each do |resource_klass|
26
- describe "when the new_resource is a #{resource_klass}" do
27
26
 
28
- before(:each) do
29
- @node = Chef::Node.new
30
- @events = Chef::EventDispatch::Dispatcher.new
31
- @run_context = Chef::RunContext.new(@node, {}, @events)
32
- @new_resource = resource_klass.new("irssi", @run_context)
33
-
34
- @status = double("Status", :exitstatus => 0)
35
- @provider = Chef::Provider::Package::Apt.new(@new_resource, @run_context)
36
- @stdin = StringIO.new
37
- @stdout = <<-PKG_STATUS
27
+ before(:each) do
28
+ @node = Chef::Node.new
29
+ @events = Chef::EventDispatch::Dispatcher.new
30
+ @run_context = Chef::RunContext.new(@node, {}, @events)
31
+ allow(@run_context).to receive(:logger).and_return(logger)
32
+ @new_resource = Chef::Resource::AptPackage.new("irssi", @run_context)
33
+
34
+ @status = double("Status", :exitstatus => 0)
35
+ @provider = Chef::Provider::Package::Apt.new(@new_resource, @run_context)
36
+ @stdin = StringIO.new
37
+ @stdout = <<-PKG_STATUS
38
38
  irssi:
39
39
  Installed: (none)
40
40
  Candidate: 0.8.14-1ubuntu4
41
41
  Version table:
42
42
  0.8.14-1ubuntu4 0
43
43
  500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages
44
- PKG_STATUS
45
- @stderr = ""
46
- @shell_out = OpenStruct.new(:stdout => @stdout, :stdin => @stdin, :stderr => @stderr, :status => @status, :exitstatus => 0)
47
- @timeout = 900
48
- end
44
+ PKG_STATUS
45
+ @stderr = ""
46
+ @shell_out = OpenStruct.new(:stdout => @stdout, :stdin => @stdin, :stderr => @stderr, :status => @status, :exitstatus => 0)
47
+ @timeout = 900
48
+ end
49
49
 
50
- describe "when loading current resource" do
51
-
52
- it "should create a current resource with the name of the new_resource" do
53
- expect(@provider).to receive(:shell_out!).with(
54
- "apt-cache", "policy", @new_resource.package_name,
55
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
56
- :timeout => @timeout
57
- ).and_return(@shell_out)
58
- @provider.load_current_resource
59
-
60
- current_resource = @provider.current_resource
61
- expect(current_resource).to be_a(Chef::Resource::Package)
62
- expect(current_resource.name).to eq("irssi")
63
- expect(current_resource.package_name).to eq("irssi")
64
- expect(current_resource.version).to eql([nil])
65
- end
66
-
67
- it "should set the installed version if package has one" do
68
- @stdout.replace(<<-INSTALLED)
50
+ describe "when loading current resource" do
51
+
52
+ it "should create a current resource with the name of the new_resource" do
53
+ expect(@provider).to receive(:shell_out!).with(
54
+ "apt-cache", "policy", @new_resource.package_name,
55
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
56
+ :timeout => @timeout
57
+ ).and_return(@shell_out)
58
+ @provider.load_current_resource
59
+
60
+ current_resource = @provider.current_resource
61
+ expect(current_resource).to be_a(Chef::Resource::Package)
62
+ expect(current_resource.name).to eq("irssi")
63
+ expect(current_resource.package_name).to eq("irssi")
64
+ expect(current_resource.version).to eql([nil])
65
+ end
66
+
67
+ it "should set the installed version if package has one" do
68
+ @stdout.replace(<<-INSTALLED)
69
69
  sudo:
70
70
  Installed: 1.7.2p1-1ubuntu5.3
71
71
  Candidate: 1.7.2p1-1ubuntu5.3
@@ -76,54 +76,54 @@ sudo:
76
76
  100 /var/lib/dpkg/status
77
77
  1.7.2p1-1ubuntu5 0
78
78
  500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages
79
- INSTALLED
80
- expect(@provider).to receive(:shell_out!).and_return(@shell_out)
81
- @provider.load_current_resource
82
- expect(@provider.current_resource.version).to eq(["1.7.2p1-1ubuntu5.3"])
83
- expect(@provider.candidate_version).to eql(["1.7.2p1-1ubuntu5.3"])
84
- end
85
-
86
- # it is the superclasses responsibility to throw most exceptions
87
- it "if the package does not exist in the cache sets installed + candidate version to nil" do
88
- @new_resource.package_name("conic-smarms")
89
- policy_out = <<-POLICY_STDOUT
79
+ INSTALLED
80
+ expect(@provider).to receive(:shell_out!).and_return(@shell_out)
81
+ @provider.load_current_resource
82
+ expect(@provider.current_resource.version).to eq(["1.7.2p1-1ubuntu5.3"])
83
+ expect(@provider.candidate_version).to eql(["1.7.2p1-1ubuntu5.3"])
84
+ end
85
+
86
+ # it is the superclasses responsibility to throw most exceptions
87
+ it "if the package does not exist in the cache sets installed + candidate version to nil" do
88
+ @new_resource.package_name("conic-smarms")
89
+ policy_out = <<-POLICY_STDOUT
90
90
  N: Unable to locate package conic-smarms
91
- POLICY_STDOUT
92
- policy = double(:stdout => policy_out, :exitstatus => 0)
93
- expect(@provider).to receive(:shell_out!).with(
94
- "apt-cache", "policy", "conic-smarms",
95
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
96
- :timeout => @timeout
97
- ).and_return(policy)
98
- showpkg_out = <<-SHOWPKG_STDOUT
91
+ POLICY_STDOUT
92
+ policy = double(:stdout => policy_out, :exitstatus => 0)
93
+ expect(@provider).to receive(:shell_out!).with(
94
+ "apt-cache", "policy", "conic-smarms",
95
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
96
+ :timeout => @timeout
97
+ ).and_return(policy)
98
+ showpkg_out = <<-SHOWPKG_STDOUT
99
99
  N: Unable to locate package conic-smarms
100
- SHOWPKG_STDOUT
101
- showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
102
- expect(@provider).to receive(:shell_out!).with(
103
- "apt-cache", "showpkg", "conic-smarms",
104
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
105
- :timeout => @timeout
106
- ).and_return(showpkg)
107
- @provider.load_current_resource
108
- end
109
-
110
- # libmysqlclient-dev is a real package in newer versions of debian + ubuntu
111
- # list of virtual packages: http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt
112
- it "should not install the virtual package there is a single provider package and it is installed" do
113
- @new_resource.package_name("libmysqlclient15-dev")
114
- virtual_package_out = <<-VPKG_STDOUT
100
+ SHOWPKG_STDOUT
101
+ showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
102
+ expect(@provider).to receive(:shell_out!).with(
103
+ "apt-cache", "showpkg", "conic-smarms",
104
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
105
+ :timeout => @timeout
106
+ ).and_return(showpkg)
107
+ @provider.load_current_resource
108
+ end
109
+
110
+ # libmysqlclient-dev is a real package in newer versions of debian + ubuntu
111
+ # list of virtual packages: http://www.debian.org/doc/packaging-manuals/virtual-package-names-list.txt
112
+ it "should not install the virtual package there is a single provider package and it is installed" do
113
+ @new_resource.package_name("libmysqlclient15-dev")
114
+ virtual_package_out = <<-VPKG_STDOUT
115
115
  libmysqlclient15-dev:
116
116
  Installed: (none)
117
117
  Candidate: (none)
118
118
  Version table:
119
- VPKG_STDOUT
120
- virtual_package = double(:stdout => virtual_package_out, :exitstatus => 0)
121
- expect(@provider).to receive(:shell_out!).with(
122
- "apt-cache", "policy", "libmysqlclient15-dev",
123
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
124
- :timeout => @timeout
125
- ).and_return(virtual_package)
126
- showpkg_out = <<-SHOWPKG_STDOUT
119
+ VPKG_STDOUT
120
+ virtual_package = double(:stdout => virtual_package_out, :exitstatus => 0)
121
+ expect(@provider).to receive(:shell_out!).with(
122
+ "apt-cache", "policy", "libmysqlclient15-dev",
123
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
124
+ :timeout => @timeout
125
+ ).and_return(virtual_package)
126
+ showpkg_out = <<-SHOWPKG_STDOUT
127
127
  Package: libmysqlclient15-dev
128
128
  Versions:
129
129
 
@@ -140,14 +140,14 @@ Reverse Provides:
140
140
  libmysqlclient-dev 5.1.41-3ubuntu12.7
141
141
  libmysqlclient-dev 5.1.41-3ubuntu12.10
142
142
  libmysqlclient-dev 5.1.41-3ubuntu12
143
- SHOWPKG_STDOUT
144
- showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
145
- expect(@provider).to receive(:shell_out!).with(
146
- "apt-cache", "showpkg", "libmysqlclient15-dev",
147
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
148
- :timeout => @timeout
149
- ).and_return(showpkg)
150
- real_package_out = <<-RPKG_STDOUT
143
+ SHOWPKG_STDOUT
144
+ showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
145
+ expect(@provider).to receive(:shell_out!).with(
146
+ "apt-cache", "showpkg", "libmysqlclient15-dev",
147
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
148
+ :timeout => @timeout
149
+ ).and_return(showpkg)
150
+ real_package_out = <<-RPKG_STDOUT
151
151
  libmysqlclient-dev:
152
152
  Installed: 5.1.41-3ubuntu12.10
153
153
  Candidate: 5.1.41-3ubuntu12.10
@@ -159,31 +159,31 @@ libmysqlclient-dev:
159
159
  500 http://security.ubuntu.com/ubuntu/ lucid-security/main Packages
160
160
  5.1.41-3ubuntu12 0
161
161
  500 http://us.archive.ubuntu.com/ubuntu/ lucid/main Packages
162
- RPKG_STDOUT
163
- real_package = double(:stdout => real_package_out, :exitstatus => 0)
164
- expect(@provider).to receive(:shell_out!).with(
165
- "apt-cache", "policy", "libmysqlclient-dev",
166
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
167
- :timeout => @timeout
168
- ).and_return(real_package)
169
- @provider.load_current_resource
170
- end
171
-
172
- it "should raise an exception if you specify a virtual package with multiple provider packages" do
173
- @new_resource.package_name("mp3-decoder")
174
- virtual_package_out = <<-VPKG_STDOUT
162
+ RPKG_STDOUT
163
+ real_package = double(:stdout => real_package_out, :exitstatus => 0)
164
+ expect(@provider).to receive(:shell_out!).with(
165
+ "apt-cache", "policy", "libmysqlclient-dev",
166
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
167
+ :timeout => @timeout
168
+ ).and_return(real_package)
169
+ @provider.load_current_resource
170
+ end
171
+
172
+ it "should raise an exception if you specify a virtual package with multiple provider packages" do
173
+ @new_resource.package_name("mp3-decoder")
174
+ virtual_package_out = <<-VPKG_STDOUT
175
175
  mp3-decoder:
176
176
  Installed: (none)
177
177
  Candidate: (none)
178
178
  Version table:
179
- VPKG_STDOUT
180
- virtual_package = double(:stdout => virtual_package_out, :exitstatus => 0)
181
- expect(@provider).to receive(:shell_out!).with(
182
- "apt-cache", "policy", "mp3-decoder",
183
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
184
- :timeout => @timeout
185
- ).and_return(virtual_package)
186
- showpkg_out = <<-SHOWPKG_STDOUT
179
+ VPKG_STDOUT
180
+ virtual_package = double(:stdout => virtual_package_out, :exitstatus => 0)
181
+ expect(@provider).to receive(:shell_out!).with(
182
+ "apt-cache", "policy", "mp3-decoder",
183
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
184
+ :timeout => @timeout
185
+ ).and_return(virtual_package)
186
+ showpkg_out = <<-SHOWPKG_STDOUT
187
187
  Package: mp3-decoder
188
188
  Versions:
189
189
 
@@ -203,312 +203,332 @@ vlc 1.0.6-1ubuntu1
203
203
  opencubicplayer 1:0.1.17-2
204
204
  mpg321 0.2.10.6
205
205
  mpg123 1.12.1-0ubuntu1
206
- SHOWPKG_STDOUT
207
- showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
208
- expect(@provider).to receive(:shell_out!).with(
209
- "apt-cache", "showpkg", "mp3-decoder",
210
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
211
- :timeout => @timeout
212
- ).and_return(showpkg)
213
- expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package)
214
- end
215
-
216
- it "should run apt-cache policy with the default_release option, if there is one on the resource" do
217
- @new_resource = Chef::Resource::AptPackage.new("irssi", @run_context)
218
- @provider = Chef::Provider::Package::Apt.new(@new_resource, @run_context)
219
-
220
- @new_resource.default_release("lenny-backports")
221
- @new_resource.provider(nil)
222
- expect(@provider).to receive(:shell_out!).with(
223
- "apt-cache", "-o", "APT::Default-Release=lenny-backports", "policy", "irssi",
224
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
225
- :timeout => @timeout
226
- ).and_return(@shell_out)
227
- @provider.load_current_resource
228
- end
229
-
230
- it "raises an exception if a source is specified (CHEF-5113)" do
231
- @new_resource.source "pluto"
232
- expect(@provider).to receive(:shell_out!).with(
233
- "apt-cache", "policy", @new_resource.package_name,
234
- :env => { "DEBIAN_FRONTEND" => "noninteractive" } ,
235
- :timeout => @timeout
236
- ).and_return(@shell_out)
237
- expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package)
238
- end
206
+ SHOWPKG_STDOUT
207
+ showpkg = double(:stdout => showpkg_out, :exitstatus => 0)
208
+ expect(@provider).to receive(:shell_out!).with(
209
+ "apt-cache", "showpkg", "mp3-decoder",
210
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
211
+ :timeout => @timeout
212
+ ).and_return(showpkg)
213
+ expect { @provider.load_current_resource }.to raise_error(Chef::Exceptions::Package)
214
+ end
215
+
216
+ it "should run apt-cache policy with the default_release option, if there is one on the resource" do
217
+ @new_resource = Chef::Resource::AptPackage.new("irssi", @run_context)
218
+ @provider = Chef::Provider::Package::Apt.new(@new_resource, @run_context)
219
+
220
+ @new_resource.default_release("lenny-backports")
221
+ @new_resource.provider(nil)
222
+ expect(@provider).to receive(:shell_out!).with(
223
+ "apt-cache", "-o", "APT::Default-Release=lenny-backports", "policy", "irssi",
224
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
225
+ :timeout => @timeout
226
+ ).and_return(@shell_out)
227
+ @provider.load_current_resource
228
+ end
229
+
230
+ it "raises an exception if a source is specified (CHEF-5113)" do
231
+ @new_resource.source "pluto"
232
+ expect(@provider).to receive(:shell_out!).with(
233
+ "apt-cache", "policy", @new_resource.package_name,
234
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" } ,
235
+ :timeout => @timeout
236
+ ).and_return(@shell_out)
237
+ expect { @provider.run_action(:install) }.to raise_error(Chef::Exceptions::Package)
238
+ end
239
+ end
240
+
241
+ context "after loading the current resource" do
242
+ before do
243
+ @current_resource = Chef::Resource::AptPackage.new("irssi", @run_context)
244
+ @provider.current_resource = @current_resource
245
+ allow(@provider).to receive(:package_data).and_return({
246
+ "irssi" => {
247
+ virtual: false,
248
+ candidate_version: "0.8.12-7",
249
+ installed_version: nil,
250
+ },
251
+ "libmysqlclient15-dev" => {
252
+ virtual: true,
253
+ candidate_version: nil,
254
+ installed_version: nil,
255
+ },
256
+ })
257
+ end
258
+
259
+ describe "install_package" do
260
+ it "should run apt-get install with the package name and version" do
261
+ expect(@provider).to receive(:shell_out!). with(
262
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "install", "irssi=0.8.12-7",
263
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
264
+ :timeout => @timeout
265
+ )
266
+ @provider.install_package(["irssi"], ["0.8.12-7"])
267
+ end
268
+
269
+ it "should run apt-get install with the package name and version and options if specified" do
270
+ expect(@provider).to receive(:shell_out!).with(
271
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "--force-yes", "install", "irssi=0.8.12-7",
272
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
273
+ :timeout => @timeout
274
+ )
275
+ @new_resource.options("--force-yes")
276
+ @provider.install_package(["irssi"], ["0.8.12-7"])
277
+ end
278
+
279
+ it "should run apt-get install with the package name and version and default_release if there is one and provider is explicitly defined" do
280
+ @new_resource = nil
281
+ @new_resource = Chef::Resource::AptPackage.new("irssi", @run_context)
282
+ @new_resource.default_release("lenny-backports")
283
+ @new_resource.provider = nil
284
+ @provider.new_resource = @new_resource
285
+
286
+ expect(@provider).to receive(:shell_out!).with(
287
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "-o", "APT::Default-Release=lenny-backports", "install", "irssi=0.8.12-7",
288
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
289
+ :timeout => @timeout
290
+ )
291
+
292
+ @provider.install_package(["irssi"], ["0.8.12-7"])
293
+ end
294
+
295
+ it "should run apt-get install with the package name and quotes options if specified" do
296
+ expect(@provider).to receive(:shell_out!).with(
297
+ "apt-get", "-q", "-y", "--force-yes", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confnew", "install", "irssi=0.8.12-7",
298
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
299
+ :timeout => @timeout
300
+ )
301
+ @new_resource.options('--force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew"')
302
+ @provider.install_package(["irssi"], ["0.8.12-7"])
303
+ end
304
+ end
305
+
306
+ describe Chef::Resource::AptPackage, "upgrade_package" do
307
+
308
+ it "should run install_package with the name and version" do
309
+ expect(@provider).to receive(:install_package).with(["irssi"], ["0.8.12-7"])
310
+ @provider.upgrade_package(["irssi"], ["0.8.12-7"])
311
+ end
312
+ end
313
+
314
+ describe Chef::Resource::AptPackage, "remove_package" do
315
+
316
+ it "should run apt-get remove with the package name" do
317
+ expect(@provider).to receive(:shell_out!).with(
318
+ "apt-get", "-q", "-y", "remove", "irssi",
319
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
320
+ :timeout => @timeout
321
+ )
322
+ @provider.remove_package(["irssi"], ["0.8.12-7"])
323
+ end
324
+
325
+ it "should run apt-get remove with the package name and options if specified" do
326
+ expect(@provider).to receive(:shell_out!).with(
327
+ "apt-get", "-q", "-y", "--force-yes", "remove", "irssi",
328
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
329
+ :timeout => @timeout
330
+ )
331
+ @new_resource.options("--force-yes")
332
+
333
+ @provider.remove_package(["irssi"], ["0.8.12-7"])
334
+ end
335
+ end
336
+
337
+ describe "when purging a package" do
338
+
339
+ it "should run apt-get purge with the package name" do
340
+ expect(@provider).to receive(:shell_out!).with(
341
+ "apt-get", "-q", "-y", "purge", "irssi",
342
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
343
+ :timeout => @timeout
344
+ )
345
+ @provider.purge_package(["irssi"], ["0.8.12-7"])
346
+ end
347
+
348
+ it "should run apt-get purge with the package name and options if specified" do
349
+ expect(@provider).to receive(:shell_out!).with(
350
+ "apt-get", "-q", "-y", "--force-yes", "purge", "irssi",
351
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
352
+ :timeout => @timeout
353
+ )
354
+ @new_resource.options("--force-yes")
355
+
356
+ @provider.purge_package(["irssi"], ["0.8.12-7"])
357
+ end
358
+ end
359
+
360
+ describe "when preseeding a package" do
361
+ before(:each) do
362
+ allow(@provider).to receive(:get_preseed_file).and_return("/tmp/irssi-0.8.12-7.seed")
363
+ end
364
+
365
+ it "should get the full path to the preseed response file" do
366
+ file = "/tmp/irssi-0.8.12-7.seed"
367
+
368
+ expect(@provider).to receive(:shell_out!).with(
369
+ "debconf-set-selections", "/tmp/irssi-0.8.12-7.seed",
370
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
371
+ :timeout => @timeout
372
+ )
373
+
374
+ @provider.preseed_package(file)
375
+ end
376
+
377
+ it "should run debconf-set-selections on the preseed file if it has changed" do
378
+ expect(@provider).to receive(:shell_out!).with(
379
+ "debconf-set-selections", "/tmp/irssi-0.8.12-7.seed",
380
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
381
+ :timeout => @timeout
382
+ )
383
+ file = @provider.get_preseed_file("irssi", "0.8.12-7")
384
+ @provider.preseed_package(file)
385
+ end
386
+
387
+ it "should not run debconf-set-selections if the preseed file has not changed" do
388
+ allow(@provider).to receive(:check_all_packages_state)
389
+ @current_resource.version "0.8.11"
390
+ @new_resource.response_file "/tmp/file"
391
+ allow(@provider).to receive(:get_preseed_file).and_return(false)
392
+ expect(@provider).not_to receive(:shell_out!)
393
+ @provider.run_action(:reconfig)
394
+ end
395
+ end
396
+
397
+ describe "when reconfiguring a package" do
398
+ it "should run dpkg-reconfigure package" do
399
+ expect(@provider).to receive(:shell_out!).with(
400
+ "dpkg-reconfigure", "irssi",
401
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
402
+ :timeout => @timeout
403
+ )
404
+ @provider.reconfig_package("irssi", "0.8.12-7")
405
+ end
406
+ end
407
+
408
+ describe "when locking a package" do
409
+ it "should run apt-mark hold package" do
410
+ expect(@provider).to receive(:shell_out!).with(
411
+ "apt-mark", "hold", "irssi",
412
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
413
+ :timeout => @timeout
414
+ )
415
+ @provider.lock_package("irssi", "0.8.12-7")
416
+ end
417
+ it "should not lock if the package is already locked" do
418
+ allow(@provider).to receive(:shell_out_compact_timeout!).with(
419
+ "apt-mark", "showhold"
420
+ ).and_return(instance_double(
421
+ Mixlib::ShellOut, stdout: "irssi")
422
+ )
423
+ expect(logger).to receive(:trace).with("#{@provider.new_resource} is already locked")
424
+
425
+ @provider.new_resource.package_name = ["irssi"]
426
+ @provider.action_lock
427
+ end
428
+ end
429
+
430
+ describe "when unlocking a package" do
431
+ it "should run apt-mark unhold package" do
432
+ expect(@provider).to receive(:shell_out!).with(
433
+ "apt-mark", "unhold", "irssi",
434
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
435
+ :timeout => @timeout
436
+ )
437
+ @provider.unlock_package("irssi", "0.8.12-7")
438
+ end
439
+ it "should not unlock if the package is already unlocked" do
440
+ allow(@provider).to receive(:shell_out_compact_timeout!).with(
441
+ "apt-mark", "showhold"
442
+ ).and_return(instance_double(
443
+ Mixlib::ShellOut, stdout: "")
444
+ )
445
+ expect(logger).to receive(:trace).with("#{@provider.new_resource} is already unlocked")
446
+
447
+ @provider.new_resource.package_name = ["irssi"]
448
+ @provider.action_unlock
449
+ end
450
+ end
451
+
452
+ describe "when installing a virtual package" do
453
+ it "should install the package without specifying a version" do
454
+ @provider.package_data["libmysqlclient15-dev"][:virtual] = true
455
+ expect(@provider).to receive(:shell_out!).with(
456
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "install", "libmysqlclient15-dev",
457
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
458
+ :timeout => @timeout
459
+ )
460
+ @provider.install_package(["libmysqlclient15-dev"], ["not_a_real_version"])
461
+ end
462
+ end
463
+
464
+ describe "when removing a virtual package" do
465
+ it "should remove the resolved name instead of the virtual package name" do
466
+ expect(@provider).to receive(:resolve_virtual_package_name).with("libmysqlclient15-dev").and_return("libmysqlclient-dev")
467
+ expect(@provider).to receive(:shell_out!).with(
468
+ "apt-get", "-q", "-y", "remove", "libmysqlclient-dev",
469
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
470
+ :timeout => @timeout
471
+ )
472
+ @provider.remove_package(["libmysqlclient15-dev"], ["not_a_real_version"])
473
+ end
474
+ end
475
+
476
+ describe "when purging a virtual package" do
477
+ it "should purge the resolved name instead of the virtual package name" do
478
+ expect(@provider).to receive(:resolve_virtual_package_name).with("libmysqlclient15-dev").and_return("libmysqlclient-dev")
479
+ expect(@provider).to receive(:shell_out!).with(
480
+ "apt-get", "-q", "-y", "purge", "libmysqlclient-dev",
481
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
482
+ :timeout => @timeout
483
+ )
484
+ @provider.purge_package(["libmysqlclient15-dev"], ["not_a_real_version"])
485
+ end
486
+ end
487
+
488
+ describe "when installing multiple packages" do
489
+ it "can install a virtual package followed by a non-virtual package" do
490
+ # https://github.com/chef/chef/issues/2914
491
+ expect(@provider).to receive(:shell_out!).with(
492
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "install", "libmysqlclient15-dev", "irssi=0.8.12-7",
493
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
494
+ :timeout => @timeout
495
+ )
496
+ @provider.install_package(["libmysqlclient15-dev", "irssi"], ["not_a_real_version", "0.8.12-7"])
497
+ end
498
+ end
499
+
500
+ describe "#action_install" do
501
+ it "should run dpkg to compare versions if an existing version is installed" do
502
+ allow(@provider).to receive(:get_current_versions).and_return("1.4.0")
503
+ allow(@new_resource).to receive(:allow_downgrade).and_return(false)
504
+ expect(@provider).to receive(:shell_out_compact_timeout).with(
505
+ "dpkg", "--compare-versions", "1.4.0", "gt", "0.8.12-7"
506
+ ).and_return(double(error?: false))
507
+ @provider.run_action(:upgrade)
508
+ end
509
+
510
+ it "should install the package if the installed version is older" do
511
+ allow(@provider).to receive(:get_current_versions).and_return("0.4.0")
512
+ allow(@new_resource).to receive(:allow_downgrade).and_return(false)
513
+ expect(@provider).to receive(:version_compare).and_return(-1)
514
+ expect(@provider).to receive(:shell_out!).with(
515
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "install", "irssi=0.8.12-7",
516
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
517
+ :timeout => @timeout
518
+ )
519
+ @provider.run_action(:upgrade)
239
520
  end
240
521
 
241
- context "after loading the current resource" do
242
- before do
243
- @current_resource = resource_klass.new("irssi", @run_context)
244
- @provider.current_resource = @current_resource
245
- allow(@provider).to receive(:package_data).and_return({
246
- "irssi" => {
247
- virtual: false,
248
- candidate_version: "0.8.12-7",
249
- installed_version: nil,
250
- },
251
- "libmysqlclient15-dev" => {
252
- virtual: true,
253
- candidate_version: nil,
254
- installed_version: nil,
255
- },
256
- })
257
- end
258
-
259
- describe "install_package" do
260
- it "should run apt-get install with the package name and version" do
261
- expect(@provider).to receive(:shell_out!). with(
262
- "apt-get", "-q", "-y", "install", "irssi=0.8.12-7",
263
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
264
- :timeout => @timeout
265
- )
266
- @provider.install_package(["irssi"], ["0.8.12-7"])
267
- end
268
-
269
- it "should run apt-get install with the package name and version and options if specified" do
270
- expect(@provider).to receive(:shell_out!).with(
271
- "apt-get", "-q", "-y", "--force-yes", "install", "irssi=0.8.12-7",
272
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
273
- :timeout => @timeout
274
- )
275
- @new_resource.options("--force-yes")
276
- @provider.install_package(["irssi"], ["0.8.12-7"])
277
- end
278
-
279
- it "should run apt-get install with the package name and version and default_release if there is one and provider is explicitly defined" do
280
- @new_resource = nil
281
- @new_resource = Chef::Resource::AptPackage.new("irssi", @run_context)
282
- @new_resource.default_release("lenny-backports")
283
- @new_resource.provider = nil
284
- @provider.new_resource = @new_resource
285
-
286
- expect(@provider).to receive(:shell_out!).with(
287
- "apt-get", "-q", "-y", "-o", "APT::Default-Release=lenny-backports", "install", "irssi=0.8.12-7",
288
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
289
- :timeout => @timeout
290
- )
291
-
292
- @provider.install_package(["irssi"], ["0.8.12-7"])
293
- end
294
-
295
- it "should run apt-get install with the package name and quotes options if specified" do
296
- expect(@provider).to receive(:shell_out!).with(
297
- "apt-get", "-q", "-y", "--force-yes", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confnew", "install", "irssi=0.8.12-7",
298
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
299
- :timeout => @timeout
300
- )
301
- @new_resource.options('--force-yes -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confnew"')
302
- @provider.install_package(["irssi"], ["0.8.12-7"])
303
- end
304
- end
305
-
306
- describe resource_klass, "upgrade_package" do
307
-
308
- it "should run install_package with the name and version" do
309
- expect(@provider).to receive(:install_package).with(["irssi"], ["0.8.12-7"])
310
- @provider.upgrade_package(["irssi"], ["0.8.12-7"])
311
- end
312
- end
313
-
314
- describe resource_klass, "remove_package" do
315
-
316
- it "should run apt-get remove with the package name" do
317
- expect(@provider).to receive(:shell_out!).with(
318
- "apt-get", "-q", "-y", "remove", "irssi",
319
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
320
- :timeout => @timeout
321
- )
322
- @provider.remove_package(["irssi"], ["0.8.12-7"])
323
- end
324
-
325
- it "should run apt-get remove with the package name and options if specified" do
326
- expect(@provider).to receive(:shell_out!).with(
327
- "apt-get", "-q", "-y", "--force-yes", "remove", "irssi",
328
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
329
- :timeout => @timeout
330
- )
331
- @new_resource.options("--force-yes")
332
-
333
- @provider.remove_package(["irssi"], ["0.8.12-7"])
334
- end
335
- end
336
-
337
- describe "when purging a package" do
338
-
339
- it "should run apt-get purge with the package name" do
340
- expect(@provider).to receive(:shell_out!).with(
341
- "apt-get", "-q", "-y", "purge", "irssi",
342
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
343
- :timeout => @timeout
344
- )
345
- @provider.purge_package(["irssi"], ["0.8.12-7"])
346
- end
347
-
348
- it "should run apt-get purge with the package name and options if specified" do
349
- expect(@provider).to receive(:shell_out!).with(
350
- "apt-get", "-q", "-y", "--force-yes", "purge", "irssi",
351
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
352
- :timeout => @timeout
353
- )
354
- @new_resource.options("--force-yes")
355
-
356
- @provider.purge_package(["irssi"], ["0.8.12-7"])
357
- end
358
- end
359
-
360
- describe "when preseeding a package" do
361
- before(:each) do
362
- allow(@provider).to receive(:get_preseed_file).and_return("/tmp/irssi-0.8.12-7.seed")
363
- end
364
-
365
- it "should get the full path to the preseed response file" do
366
- file = "/tmp/irssi-0.8.12-7.seed"
367
-
368
- expect(@provider).to receive(:shell_out!).with(
369
- "debconf-set-selections", "/tmp/irssi-0.8.12-7.seed",
370
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
371
- :timeout => @timeout
372
- )
373
-
374
- @provider.preseed_package(file)
375
- end
376
-
377
- it "should run debconf-set-selections on the preseed file if it has changed" do
378
- expect(@provider).to receive(:shell_out!).with(
379
- "debconf-set-selections", "/tmp/irssi-0.8.12-7.seed",
380
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
381
- :timeout => @timeout
382
- )
383
- file = @provider.get_preseed_file("irssi", "0.8.12-7")
384
- @provider.preseed_package(file)
385
- end
386
-
387
- it "should not run debconf-set-selections if the preseed file has not changed" do
388
- allow(@provider).to receive(:check_all_packages_state)
389
- @current_resource.version "0.8.11"
390
- @new_resource.response_file "/tmp/file"
391
- allow(@provider).to receive(:get_preseed_file).and_return(false)
392
- expect(@provider).not_to receive(:shell_out!)
393
- @provider.run_action(:reconfig)
394
- end
395
- end
396
-
397
- describe "when reconfiguring a package" do
398
- it "should run dpkg-reconfigure package" do
399
- expect(@provider).to receive(:shell_out!).with(
400
- "dpkg-reconfigure", "irssi",
401
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
402
- :timeout => @timeout
403
- )
404
- @provider.reconfig_package("irssi", "0.8.12-7")
405
- end
406
- end
407
-
408
- describe "when locking a package" do
409
- it "should run apt-mark hold package" do
410
- expect(@provider).to receive(:shell_out!).with(
411
- "apt-mark", "hold", "irssi",
412
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
413
- :timeout => @timeout
414
- )
415
- @provider.lock_package("irssi", "0.8.12-7")
416
- end
417
- end
418
-
419
- describe "when unlocking a package" do
420
- it "should run apt-mark unhold package" do
421
- expect(@provider).to receive(:shell_out!).with(
422
- "apt-mark", "unhold", "irssi",
423
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
424
- :timeout => @timeout
425
- )
426
- @provider.unlock_package("irssi", "0.8.12-7")
427
- end
428
- end
429
-
430
- describe "when installing a virtual package" do
431
- it "should install the package without specifying a version" do
432
- @provider.package_data["libmysqlclient15-dev"][:virtual] = true
433
- expect(@provider).to receive(:shell_out!).with(
434
- "apt-get", "-q", "-y", "install", "libmysqlclient15-dev",
435
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
436
- :timeout => @timeout
437
- )
438
- @provider.install_package(["libmysqlclient15-dev"], ["not_a_real_version"])
439
- end
440
- end
441
-
442
- describe "when removing a virtual package" do
443
- it "should remove the resolved name instead of the virtual package name" do
444
- expect(@provider).to receive(:resolve_virtual_package_name).with("libmysqlclient15-dev").and_return("libmysqlclient-dev")
445
- expect(@provider).to receive(:shell_out!).with(
446
- "apt-get", "-q", "-y", "remove", "libmysqlclient-dev",
447
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
448
- :timeout => @timeout
449
- )
450
- @provider.remove_package(["libmysqlclient15-dev"], ["not_a_real_version"])
451
- end
452
- end
453
-
454
- describe "when purging a virtual package" do
455
- it "should purge the resolved name instead of the virtual package name" do
456
- expect(@provider).to receive(:resolve_virtual_package_name).with("libmysqlclient15-dev").and_return("libmysqlclient-dev")
457
- expect(@provider).to receive(:shell_out!).with(
458
- "apt-get", "-q", "-y", "purge", "libmysqlclient-dev",
459
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
460
- :timeout => @timeout
461
- )
462
- @provider.purge_package(["libmysqlclient15-dev"], ["not_a_real_version"])
463
- end
464
- end
465
-
466
- describe "when installing multiple packages" do
467
- it "can install a virtual package followed by a non-virtual package" do
468
- # https://github.com/chef/chef/issues/2914
469
- expect(@provider).to receive(:shell_out!).with(
470
- "apt-get", "-q", "-y", "install", "libmysqlclient15-dev", "irssi=0.8.12-7",
471
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
472
- :timeout => @timeout
473
- )
474
- @provider.install_package(["libmysqlclient15-dev", "irssi"], ["not_a_real_version", "0.8.12-7"])
475
- end
476
- end
477
-
478
- describe "#action_install" do
479
- it "should run dpkg to compare versions if an existing version is installed" do
480
- allow(@provider).to receive(:get_current_versions).and_return("1.4.0")
481
- allow(@new_resource).to receive(:allow_downgrade).and_return(false)
482
- expect(@provider).to receive(:shell_out_compact_timeout).with(
483
- "dpkg", "--compare-versions", "1.4.0", "gt", "0.8.12-7"
484
- ).and_return(double(error?: false))
485
- @provider.run_action(:upgrade)
486
- end
487
-
488
- it "should install the package if the installed version is older" do
489
- allow(@provider).to receive(:get_current_versions).and_return("0.4.0")
490
- allow(@new_resource).to receive(:allow_downgrade).and_return(false)
491
- expect(@provider).to receive(:version_compare).and_return(-1)
492
- expect(@provider).to receive(:shell_out!).with(
493
- "apt-get", "-q", "-y", "install", "irssi=0.8.12-7",
494
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
495
- :timeout => @timeout
496
- )
497
- @provider.run_action(:upgrade)
498
- end
499
-
500
- it "should not compare versions if an existing version is not installed" do
501
- allow(@provider).to receive(:get_current_versions).and_return(nil)
502
- allow(@new_resource).to receive(:allow_downgrade).and_return(false)
503
- expect(@provider).not_to receive(:version_compare)
504
- expect(@provider).to receive(:shell_out!).with(
505
- "apt-get", "-q", "-y", "install", "irssi=0.8.12-7",
506
- :env => { "DEBIAN_FRONTEND" => "noninteractive" },
507
- :timeout => @timeout
508
- )
509
- @provider.run_action(:upgrade)
510
- end
511
- end
522
+ it "should not compare versions if an existing version is not installed" do
523
+ allow(@provider).to receive(:get_current_versions).and_return(nil)
524
+ allow(@new_resource).to receive(:allow_downgrade).and_return(false)
525
+ expect(@provider).not_to receive(:version_compare)
526
+ expect(@provider).to receive(:shell_out!).with(
527
+ "apt-get", "-q", "-y", "-o", "Dpkg::Options::=--force-confdef", "-o", "Dpkg::Options::=--force-confold", "install", "irssi=0.8.12-7",
528
+ :env => { "DEBIAN_FRONTEND" => "noninteractive" },
529
+ :timeout => @timeout
530
+ )
531
+ @provider.run_action(:upgrade)
512
532
  end
513
533
  end
514
534
  end