chef 16.18.30 → 17.10.163

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 (881) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +24 -33
  3. data/README.md +1 -1
  4. data/Rakefile +4 -4
  5. data/chef-universal-mingw32.gemspec +3 -3
  6. data/chef.gemspec +25 -30
  7. data/lib/chef/action_collection.rb +6 -26
  8. data/lib/chef/api_client.rb +1 -1
  9. data/lib/chef/application/base.rb +28 -3
  10. data/lib/chef/application/exit_code.rb +7 -21
  11. data/lib/chef/application.rb +3 -1
  12. data/lib/chef/applications.rb +0 -1
  13. data/lib/chef/chef_fs/command_line.rb +5 -2
  14. data/lib/chef/chef_fs/file_pattern.rb +3 -3
  15. data/lib/chef/chef_fs/file_system/chef_server/cookbook_file.rb +1 -1
  16. data/lib/chef/chef_fs/file_system/repository/base_file.rb +1 -1
  17. data/lib/chef/chef_fs/file_system/repository/file_system_entry.rb +1 -1
  18. data/lib/chef/chef_fs/file_system.rb +9 -10
  19. data/lib/chef/chef_fs/path_utils.rb +1 -1
  20. data/lib/chef/client.rb +10 -20
  21. data/lib/chef/compliance/default_attributes.rb +20 -7
  22. data/lib/chef/compliance/fetcher/automate.rb +0 -7
  23. data/lib/chef/compliance/input.rb +115 -0
  24. data/lib/chef/compliance/input_collection.rb +139 -0
  25. data/lib/chef/compliance/profile.rb +122 -0
  26. data/lib/chef/compliance/profile_collection.rb +109 -0
  27. data/lib/chef/compliance/reporter/automate.rb +18 -8
  28. data/lib/chef/compliance/reporter/chef_server_automate.rb +11 -6
  29. data/lib/chef/compliance/reporter/cli.rb +77 -0
  30. data/lib/chef/compliance/reporter/compliance_enforcer.rb +5 -1
  31. data/lib/chef/compliance/reporter/json_file.rb +8 -1
  32. data/lib/chef/compliance/runner.rb +177 -37
  33. data/lib/chef/compliance/waiver.rb +115 -0
  34. data/lib/chef/compliance/waiver_collection.rb +143 -0
  35. data/lib/chef/cookbook/cookbook_version_loader.rb +3 -3
  36. data/lib/chef/cookbook/synchronizer.rb +3 -5
  37. data/lib/chef/cookbook/syntax_check.rb +1 -1
  38. data/lib/chef/cookbook_loader.rb +2 -4
  39. data/lib/chef/cookbook_uploader.rb +1 -2
  40. data/lib/chef/cookbook_version.rb +1 -1
  41. data/lib/chef/data_bag_item.rb +11 -2
  42. data/lib/chef/data_collector.rb +0 -1
  43. data/lib/chef/delayed_evaluator.rb +4 -0
  44. data/lib/chef/deprecated.rb +6 -2
  45. data/lib/chef/dsl/chef_vault.rb +6 -6
  46. data/lib/chef/{knife/group_list.rb → dsl/compliance.rb} +11 -16
  47. data/lib/chef/dsl/declare_resource.rb +5 -10
  48. data/lib/chef/{knife/client_show.rb → dsl/reader_helpers.rb} +24 -21
  49. data/lib/chef/dsl/reboot_pending.rb +2 -3
  50. data/lib/chef/dsl/recipe.rb +4 -2
  51. data/lib/chef/{knife/data_bag_list.rb → dsl/render_helpers.rb} +19 -17
  52. data/lib/chef/dsl/secret.rb +170 -0
  53. data/lib/chef/dsl/toml.rb +116 -0
  54. data/lib/chef/dsl/universal.rb +7 -0
  55. data/lib/chef/dsl.rb +1 -0
  56. data/lib/chef/event_dispatch/base.rb +46 -3
  57. data/lib/chef/exceptions.rb +30 -0
  58. data/lib/chef/formatters/doc.rb +62 -14
  59. data/lib/chef/formatters/error_inspectors/resource_failure_inspector.rb +20 -22
  60. data/lib/chef/formatters/minimal.rb +6 -5
  61. data/lib/chef/group.rb +75 -0
  62. data/lib/chef/handler/slow_report.rb +66 -0
  63. data/lib/chef/handler.rb +46 -8
  64. data/lib/chef/http/basic_client.rb +15 -7
  65. data/lib/chef/http/ssl_policies.rb +3 -3
  66. data/lib/chef/http.rb +7 -3
  67. data/lib/chef/json_compat.rb +1 -1
  68. data/lib/chef/mixin/get_source_from_package.rb +1 -1
  69. data/lib/chef/mixin/homebrew_user.rb +15 -5
  70. data/lib/chef/mixin/openssl_helper.rb +17 -13
  71. data/lib/chef/mixin/powershell_exec.rb +27 -7
  72. data/lib/chef/mixin/properties.rb +6 -0
  73. data/lib/chef/mixin/why_run.rb +8 -2
  74. data/lib/chef/node/attribute.rb +6 -4
  75. data/lib/chef/node/immutable_collections.rb +13 -0
  76. data/lib/chef/node/mixin/deep_merge_cache.rb +11 -7
  77. data/lib/chef/node.rb +1 -1
  78. data/lib/chef/org.rb +3 -2
  79. data/lib/chef/platform/query_helpers.rb +2 -2
  80. data/lib/chef/policy_builder/expand_node_object.rb +1 -2
  81. data/lib/chef/policy_builder/policyfile.rb +84 -46
  82. data/lib/chef/powershell.rb +8 -6
  83. data/lib/chef/property.rb +18 -0
  84. data/lib/chef/provider/cron.rb +7 -4
  85. data/lib/chef/provider/directory.rb +8 -8
  86. data/lib/chef/provider/execute.rb +3 -2
  87. data/lib/chef/provider/file.rb +5 -3
  88. data/lib/chef/provider/git.rb +6 -8
  89. data/lib/chef/provider/group/groupadd.rb +3 -3
  90. data/lib/chef/provider/group/groupmod.rb +3 -3
  91. data/lib/chef/provider/group/pw.rb +3 -3
  92. data/lib/chef/provider/ifconfig/debian.rb +1 -1
  93. data/lib/chef/provider/ifconfig.rb +7 -7
  94. data/lib/chef/provider/launchd.rb +6 -6
  95. data/lib/chef/provider/link.rb +5 -5
  96. data/lib/chef/provider/lwrp_base.rb +1 -1
  97. data/lib/chef/provider/mount/aix.rb +3 -3
  98. data/lib/chef/provider/mount/linux.rb +16 -2
  99. data/lib/chef/provider/mount/mount.rb +6 -6
  100. data/lib/chef/provider/mount/windows.rb +1 -1
  101. data/lib/chef/provider/mount.rb +5 -5
  102. data/lib/chef/provider/package/apt.rb +27 -1
  103. data/lib/chef/provider/package/chocolatey.rb +14 -1
  104. data/lib/chef/provider/package/deb.rb +3 -3
  105. data/lib/chef/provider/package/dnf/dnf_helper.py +12 -11
  106. data/lib/chef/provider/package/dnf/python_helper.rb +9 -8
  107. data/lib/chef/provider/package/dnf.rb +1 -1
  108. data/lib/chef/provider/package/habitat.rb +168 -0
  109. data/lib/chef/provider/package/portage.rb +2 -2
  110. data/lib/chef/provider/package/powershell.rb +13 -10
  111. data/lib/chef/provider/package/rubygems.rb +15 -21
  112. data/lib/chef/provider/package/windows.rb +2 -4
  113. data/lib/chef/provider/package/yum/python_helper.rb +109 -35
  114. data/lib/chef/provider/package/yum/yum_helper.py +42 -60
  115. data/lib/chef/provider/package/yum.rb +40 -16
  116. data/lib/chef/provider/package/zypper.rb +7 -0
  117. data/lib/chef/provider/package.rb +80 -49
  118. data/lib/chef/provider/registry_key.rb +4 -3
  119. data/lib/chef/provider/remote_file/http.rb +1 -1
  120. data/lib/chef/provider/route.rb +2 -2
  121. data/lib/chef/provider/service/aixinit.rb +1 -1
  122. data/lib/chef/provider/service/debian.rb +1 -1
  123. data/lib/chef/provider/service/freebsd.rb +15 -21
  124. data/lib/chef/provider/service/macosx.rb +4 -4
  125. data/lib/chef/provider/service/systemd.rb +43 -14
  126. data/lib/chef/provider/service/upstart.rb +2 -13
  127. data/lib/chef/provider/service/windows.rb +16 -16
  128. data/lib/chef/provider/service.rb +6 -6
  129. data/lib/chef/provider/subversion.rb +18 -20
  130. data/lib/chef/provider/support/yum_repo.erb +1 -1
  131. data/lib/chef/provider/support/zypper_repo.erb +4 -2
  132. data/lib/chef/provider/systemd_unit.rb +53 -26
  133. data/lib/chef/provider/template/content.rb +2 -6
  134. data/lib/chef/provider/template.rb +1 -1
  135. data/lib/chef/provider/user/dscl.rb +1 -1
  136. data/lib/chef/provider/user/mac.rb +23 -26
  137. data/lib/chef/provider/user/pw.rb +1 -1
  138. data/lib/chef/provider/user/windows.rb +3 -3
  139. data/lib/chef/provider/user.rb +7 -3
  140. data/lib/chef/provider/windows_script.rb +1 -1
  141. data/lib/chef/provider/yum_repository.rb +27 -43
  142. data/lib/chef/provider/zypper_repository.rb +31 -35
  143. data/lib/chef/provider.rb +32 -4
  144. data/lib/chef/provider_resolver.rb +8 -2
  145. data/lib/chef/providers.rb +1 -2
  146. data/lib/chef/pwsh.rb +3 -2
  147. data/lib/chef/resource/alternatives.rb +6 -6
  148. data/lib/chef/resource/apt_package.rb +3 -3
  149. data/lib/chef/resource/apt_preference.rb +2 -2
  150. data/lib/chef/resource/apt_repository.rb +6 -6
  151. data/lib/chef/resource/apt_update.rb +5 -4
  152. data/lib/chef/resource/archive_file.rb +19 -17
  153. data/lib/chef/resource/breakpoint.rb +1 -1
  154. data/lib/chef/resource/build_essential.rb +2 -6
  155. data/lib/chef/resource/chef_client_config.rb +38 -6
  156. data/lib/chef/resource/chef_client_cron.rb +5 -5
  157. data/lib/chef/resource/chef_client_launchd.rb +7 -7
  158. data/lib/chef/resource/chef_client_scheduled_task.rb +61 -18
  159. data/lib/chef/resource/chef_client_systemd_timer.rb +6 -6
  160. data/lib/chef/resource/chef_client_trusted_certificate.rb +2 -2
  161. data/lib/chef/resource/chef_handler.rb +3 -7
  162. data/lib/chef/resource/chef_sleep.rb +1 -1
  163. data/lib/chef/resource/chef_vault_secret.rb +5 -10
  164. data/lib/chef/resource/chocolatey_config.rb +16 -20
  165. data/lib/chef/resource/chocolatey_feature.rb +3 -7
  166. data/lib/chef/resource/chocolatey_package.rb +3 -3
  167. data/lib/chef/resource/chocolatey_source.rb +28 -12
  168. data/lib/chef/resource/cron/_cron_shared.rb +2 -2
  169. data/lib/chef/resource/cron/cron.rb +75 -1
  170. data/lib/chef/resource/cron/cron_d.rb +5 -6
  171. data/lib/chef/resource/cron_access.rb +2 -4
  172. data/lib/chef/resource/directory.rb +1 -1
  173. data/lib/chef/resource/dmg_package.rb +6 -10
  174. data/lib/chef/resource/dnf_package.rb +4 -6
  175. data/lib/chef/resource/dpkg_package.rb +6 -1
  176. data/lib/chef/resource/dsc_resource.rb +1 -1
  177. data/lib/chef/resource/execute.rb +14 -12
  178. data/lib/chef/resource/file/verification/json.rb +50 -0
  179. data/lib/chef/resource/{user/dscl_user.rb → file/verification/yaml.rb} +26 -9
  180. data/lib/chef/resource/file.rb +1 -1
  181. data/lib/chef/resource/gem_package.rb +2 -1
  182. data/lib/chef/resource/group.rb +6 -6
  183. data/lib/chef/{knife/recipe_list.rb → resource/habitat/_habitat_shared.rb} +13 -17
  184. data/lib/chef/resource/habitat/habitat_package.rb +129 -0
  185. data/lib/chef/resource/habitat/habitat_sup.rb +329 -0
  186. data/lib/chef/resource/habitat/habitat_sup_systemd.rb +67 -0
  187. data/lib/chef/resource/habitat/habitat_sup_windows.rb +90 -0
  188. data/lib/chef/resource/habitat_config.rb +107 -0
  189. data/lib/chef/resource/habitat_install.rb +247 -0
  190. data/lib/chef/resource/habitat_service.rb +451 -0
  191. data/lib/chef/resource/habitat_user_toml.rb +92 -0
  192. data/lib/chef/resource/homebrew_cask.rb +10 -10
  193. data/lib/chef/resource/homebrew_package.rb +1 -1
  194. data/lib/chef/resource/homebrew_tap.rb +9 -16
  195. data/lib/chef/resource/homebrew_update.rb +2 -2
  196. data/lib/chef/resource/hostname.rb +68 -22
  197. data/lib/chef/resource/http_request.rb +1 -1
  198. data/lib/chef/resource/inspec_input.rb +127 -0
  199. data/lib/chef/resource/inspec_waiver.rb +184 -0
  200. data/lib/chef/resource/inspec_waiver_file_entry.rb +156 -0
  201. data/lib/chef/resource/kernel_module.rb +32 -18
  202. data/lib/chef/resource/launchd.rb +5 -8
  203. data/lib/chef/resource/locale.rb +7 -5
  204. data/lib/chef/resource/lwrp_base.rb +20 -1
  205. data/lib/chef/resource/macos_userdefaults.rb +54 -144
  206. data/lib/chef/resource/mdadm.rb +53 -7
  207. data/lib/chef/resource/mount.rb +2 -1
  208. data/lib/chef/resource/ohai_hint.rb +2 -6
  209. data/lib/chef/resource/openbsd_package.rb +17 -0
  210. data/lib/chef/resource/openssl_dhparam.rb +1 -2
  211. data/lib/chef/resource/openssl_ec_private_key.rb +3 -5
  212. data/lib/chef/resource/openssl_ec_public_key.rb +1 -3
  213. data/lib/chef/resource/openssl_rsa_private_key.rb +2 -4
  214. data/lib/chef/resource/openssl_rsa_public_key.rb +1 -3
  215. data/lib/chef/resource/openssl_x509_certificate.rb +4 -7
  216. data/lib/chef/resource/openssl_x509_crl.rb +1 -3
  217. data/lib/chef/resource/openssl_x509_request.rb +1 -3
  218. data/lib/chef/resource/osx_profile.rb +3 -3
  219. data/lib/chef/resource/plist.rb +8 -8
  220. data/lib/chef/resource/powershell_package_source.rb +235 -73
  221. data/lib/chef/resource/powershell_script.rb +1 -1
  222. data/lib/chef/resource/reboot.rb +38 -9
  223. data/lib/chef/resource/registry_key.rb +36 -48
  224. data/lib/chef/resource/remote_directory.rb +2 -2
  225. data/lib/chef/resource/remote_file.rb +103 -7
  226. data/lib/chef/resource/rhsm_errata.rb +16 -3
  227. data/lib/chef/resource/rhsm_errata_level.rb +11 -6
  228. data/lib/chef/resource/rhsm_register.rb +42 -3
  229. data/lib/chef/resource/rhsm_repo.rb +17 -6
  230. data/lib/chef/resource/rhsm_subscription.rb +2 -6
  231. data/lib/chef/resource/ruby_block.rb +100 -0
  232. data/lib/chef/resource/scm/git.rb +1 -1
  233. data/lib/chef/resource/scm/subversion.rb +1 -1
  234. data/lib/chef/resource/ssh_known_hosts_entry.rb +4 -7
  235. data/lib/chef/resource/sudo.rb +8 -12
  236. data/lib/chef/resource/support/HabService.dll.config.erb +19 -0
  237. data/lib/chef/resource/support/client.erb +11 -1
  238. data/lib/chef/resource/support/sup.toml.erb +179 -0
  239. data/lib/chef/resource/swap_file.rb +2 -6
  240. data/lib/chef/resource/sysctl.rb +2 -6
  241. data/lib/chef/resource/systemd_unit.rb +2 -2
  242. data/lib/chef/resource/template.rb +1 -1
  243. data/lib/chef/resource/timezone.rb +3 -5
  244. data/lib/chef/resource/user/mac_user.rb +1 -1
  245. data/lib/chef/resource/user_ulimit.rb +2 -2
  246. data/lib/chef/resource/windows_ad_join.rb +2 -6
  247. data/lib/chef/resource/windows_audit_policy.rb +2 -2
  248. data/lib/chef/resource/windows_auto_run.rb +3 -6
  249. data/lib/chef/resource/windows_certificate.rb +235 -90
  250. data/lib/chef/resource/windows_defender.rb +163 -0
  251. data/lib/chef/resource/windows_defender_exclusion.rb +125 -0
  252. data/lib/chef/resource/windows_dfs_folder.rb +2 -6
  253. data/lib/chef/resource/windows_dfs_namespace.rb +4 -8
  254. data/lib/chef/resource/windows_dfs_server.rb +1 -3
  255. data/lib/chef/resource/windows_dns_record.rb +2 -6
  256. data/lib/chef/resource/windows_dns_zone.rb +2 -6
  257. data/lib/chef/resource/windows_env.rb +6 -5
  258. data/lib/chef/resource/windows_feature.rb +3 -9
  259. data/lib/chef/resource/windows_feature_dism.rb +3 -9
  260. data/lib/chef/resource/windows_feature_powershell.rb +11 -12
  261. data/lib/chef/resource/windows_firewall_profile.rb +4 -4
  262. data/lib/chef/resource/windows_firewall_rule.rb +20 -9
  263. data/lib/chef/resource/windows_font.rb +3 -5
  264. data/lib/chef/resource/windows_pagefile.rb +111 -69
  265. data/lib/chef/resource/windows_path.rb +4 -4
  266. data/lib/chef/resource/windows_printer.rb +80 -61
  267. data/lib/chef/resource/windows_printer_port.rb +49 -66
  268. data/lib/chef/resource/windows_security_policy.rb +10 -10
  269. data/lib/chef/resource/windows_share.rb +14 -21
  270. data/lib/chef/resource/windows_shortcut.rb +4 -6
  271. data/lib/chef/resource/windows_task.rb +44 -17
  272. data/lib/chef/resource/windows_uac.rb +3 -5
  273. data/lib/chef/resource/windows_update_settings.rb +259 -0
  274. data/lib/chef/resource/windows_workgroup.rb +3 -4
  275. data/lib/chef/resource/yum_package.rb +11 -15
  276. data/lib/chef/resource/zypper_package.rb +4 -4
  277. data/lib/chef/resource/zypper_repository.rb +28 -8
  278. data/lib/chef/resource.rb +24 -27
  279. data/lib/chef/resource_builder.rb +8 -2
  280. data/lib/chef/resource_inspector.rb +6 -2
  281. data/lib/chef/resource_reporter.rb +1 -2
  282. data/lib/chef/resources.rb +15 -2
  283. data/lib/chef/run_context/cookbook_compiler.rb +112 -28
  284. data/lib/chef/run_context.rb +47 -1
  285. data/lib/chef/run_lock.rb +2 -2
  286. data/lib/chef/runner.rb +1 -1
  287. data/lib/chef/secret_fetcher/akeyless_vault.rb +57 -0
  288. data/lib/chef/secret_fetcher/aws_secrets_manager.rb +65 -0
  289. data/lib/chef/secret_fetcher/azure_key_vault.rb +134 -0
  290. data/lib/chef/secret_fetcher/base.rb +76 -0
  291. data/lib/chef/secret_fetcher/example.rb +46 -0
  292. data/lib/chef/secret_fetcher/hashi_vault.rb +134 -0
  293. data/lib/chef/secret_fetcher.rb +60 -0
  294. data/lib/chef/user.rb +0 -1
  295. data/lib/chef/user_v1.rb +3 -4
  296. data/lib/chef/util/dsc/configuration_generator.rb +2 -1
  297. data/lib/chef/util/dsc/local_configuration_manager.rb +1 -1
  298. data/lib/chef/version.rb +1 -1
  299. data/lib/chef/win32/api.rb +1 -1
  300. data/lib/chef/win32/registry.rb +4 -2
  301. data/spec/data/archive_file/test_archive.tar.gz +0 -0
  302. data/spec/data/cookbooks/openldap/libraries/openldap.rb +1 -1
  303. data/spec/data/lwrp/resources/bar.rb +2 -0
  304. data/spec/data/lwrp/resources/buck_passer.rb +1 -0
  305. data/spec/data/lwrp/resources/buck_passer_2.rb +1 -0
  306. data/spec/data/lwrp/resources/embedded_resource_accesses_providers_scope.rb +1 -0
  307. data/spec/data/lwrp/resources/foo.rb +2 -0
  308. data/spec/data/lwrp/resources/inline_compiler.rb +1 -0
  309. data/spec/data/lwrp/resources/monkey_name_printer.rb +1 -0
  310. data/spec/data/lwrp/resources/paint_drying_watcher.rb +1 -0
  311. data/spec/data/lwrp/resources/thumb_twiddler.rb +1 -0
  312. data/spec/data/lwrp/resources_with_default_attributes/nodeattr.rb +2 -0
  313. data/spec/data/lwrp_const_scoping/resources/conflict.rb +1 -0
  314. data/spec/data/lwrp_override/resources/foo.rb +1 -0
  315. data/spec/data/rubygems.org/nonexistent_gem-info +1 -0
  316. data/spec/data/rubygems.org/sexp_processor-info +49 -0
  317. data/spec/data/run_context/cookbooks/circular-dep1/resources/resource.rb +1 -0
  318. data/spec/data/run_context/cookbooks/circular-dep2/resources/resource.rb +1 -0
  319. data/spec/data/run_context/cookbooks/dependency1/resources/resource.rb +1 -0
  320. data/spec/data/run_context/cookbooks/dependency2/resources/resource.rb +1 -0
  321. data/spec/data/run_context/cookbooks/no-default-attr/resources/resource.rb +1 -0
  322. data/spec/data/run_context/cookbooks/test/resources/resource.rb +2 -0
  323. data/spec/data/run_context/cookbooks/test-with-circular-deps/resources/resource.rb +2 -0
  324. data/spec/data/run_context/cookbooks/test-with-deps/resources/resource.rb +1 -0
  325. data/spec/data/trusted_certs/example.crt +29 -20
  326. data/spec/data/trusted_certs/example_no_cn.crt +30 -34
  327. data/spec/data/trusted_certs/opscode.pem +33 -54
  328. data/spec/functional/assets/yumrepo/repodata/01a3b-filelists.sqlite.bz2 +0 -0
  329. data/spec/functional/assets/yumrepo/repodata/401dc-filelists.xml.gz +0 -0
  330. data/spec/functional/assets/yumrepo/repodata/5dc1e-primary.sqlite.bz2 +0 -0
  331. data/spec/functional/assets/yumrepo/repodata/6bf96-other.xml.gz +0 -0
  332. data/spec/functional/assets/yumrepo/repodata/7c365-other.sqlite.bz2 +0 -0
  333. data/spec/functional/assets/yumrepo/repodata/dabe2-primary.xml.gz +0 -0
  334. data/spec/functional/dsl/reboot_pending_spec.rb +3 -3
  335. data/spec/functional/dsl/registry_helper_spec.rb +2 -2
  336. data/spec/functional/mixin/from_file_spec.rb +1 -1
  337. data/spec/functional/resource/aixinit_service_spec.rb +7 -7
  338. data/spec/functional/resource/apt_package_spec.rb +1 -1
  339. data/spec/functional/resource/archive_file_spec.rb +88 -0
  340. data/spec/functional/resource/chocolatey_package_spec.rb +41 -20
  341. data/spec/functional/resource/cookbook_file_spec.rb +1 -1
  342. data/spec/functional/resource/dnf_package_spec.rb +997 -645
  343. data/spec/functional/resource/dpkg_package_spec.rb +16 -0
  344. data/spec/functional/resource/dsc_script_spec.rb +5 -5
  345. data/spec/functional/resource/group_spec.rb +39 -19
  346. data/spec/functional/resource/link_spec.rb +1 -1
  347. data/spec/functional/resource/macos_userdefaults_spec.rb +139 -0
  348. data/spec/functional/resource/powershell_package_source_spec.rb +5 -6
  349. data/spec/functional/resource/registry_spec.rb +89 -89
  350. data/spec/functional/resource/remote_file_spec.rb +1 -1
  351. data/spec/functional/resource/template_spec.rb +1 -1
  352. data/spec/functional/resource/user/mac_user_spec.rb +2 -2
  353. data/spec/functional/resource/windows_certificate_spec.rb +122 -37
  354. data/spec/functional/resource/windows_env_spec.rb +2 -2
  355. data/spec/functional/resource/windows_font_spec.rb +1 -2
  356. data/spec/functional/resource/windows_hostname_spec.rb +91 -0
  357. data/spec/functional/resource/windows_pagefile_spec.rb +125 -0
  358. data/spec/functional/resource/yum_package_spec.rb +1197 -451
  359. data/spec/functional/resource/zypper_package_spec.rb +17 -0
  360. data/spec/functional/shell_spec.rb +1 -0
  361. data/spec/functional/version_spec.rb +1 -1
  362. data/spec/functional/win32/registry_spec.rb +12 -9
  363. data/spec/integration/client/client_spec.rb +37 -23
  364. data/spec/integration/client/exit_code_spec.rb +1 -1
  365. data/spec/integration/client/fips_spec.rb +9 -1
  366. data/spec/integration/client/ipv6_spec.rb +1 -1
  367. data/spec/integration/client/open_ssl_spec.rb +20 -0
  368. data/spec/integration/compliance/compliance_spec.rb +62 -1
  369. data/spec/integration/ohai/ohai_spec.rb +7 -6
  370. data/spec/integration/recipes/accumulator_spec.rb +13 -1
  371. data/spec/integration/recipes/lwrp_inline_resources_spec.rb +5 -1
  372. data/spec/integration/recipes/lwrp_spec.rb +3 -1
  373. data/spec/integration/recipes/notifies_spec.rb +15 -1
  374. data/spec/integration/recipes/notifying_block_spec.rb +2 -1
  375. data/spec/integration/recipes/recipe_dsl_spec.rb +10 -10
  376. data/spec/integration/recipes/resource_action_spec.rb +6 -6
  377. data/spec/integration/recipes/unified_mode_spec.rb +71 -1
  378. data/spec/integration/recipes/use_partial_spec.rb +4 -1
  379. data/spec/spec_helper.rb +20 -18
  380. data/spec/support/chef_helpers.rb +1 -17
  381. data/spec/support/lib/chef/resource/with_state.rb +0 -1
  382. data/spec/support/lib/chef/resource/zen_follower.rb +0 -1
  383. data/spec/support/lib/chef/resource/zen_master.rb +0 -1
  384. data/spec/support/matchers/leak.rb +7 -9
  385. data/spec/support/platform_helpers.rb +14 -13
  386. data/spec/support/ruby_installer.rb +51 -0
  387. data/spec/support/shared/functional/execute_resource.rb +1 -1
  388. data/spec/support/shared/functional/file_resource.rb +2 -2
  389. data/spec/support/shared/functional/http.rb +9 -9
  390. data/spec/support/shared/integration/integration_helper.rb +0 -1
  391. data/spec/support/shared/unit/provider/file.rb +3 -9
  392. data/spec/support/shared/unit/provider/useradd_based_user_provider.rb +1 -1
  393. data/spec/support/shared/unit/script_resource.rb +2 -2
  394. data/spec/unit/application/base_spec.rb +40 -0
  395. data/spec/unit/application/solo_spec.rb +2 -2
  396. data/spec/unit/chef_fs/diff_spec.rb +1 -1
  397. data/spec/unit/chef_fs/file_system/repository/directory_spec.rb +1 -1
  398. data/spec/unit/chef_fs/file_system_spec.rb +1 -1
  399. data/spec/unit/client_spec.rb +0 -16
  400. data/spec/unit/compliance/fetcher/automate_spec.rb +0 -16
  401. data/spec/unit/compliance/input_spec.rb +104 -0
  402. data/spec/unit/compliance/profile_spec.rb +120 -0
  403. data/spec/unit/compliance/reporter/automate_spec.rb +26 -2
  404. data/spec/unit/compliance/reporter/chef_server_automate_spec.rb +21 -1
  405. data/spec/unit/compliance/reporter/compliance_enforcer_spec.rb +4 -3
  406. data/spec/unit/compliance/runner_spec.rb +137 -6
  407. data/spec/unit/compliance/waiver_spec.rb +104 -0
  408. data/spec/unit/data_bag_item_spec.rb +1 -6
  409. data/spec/unit/dsl/reboot_pending_spec.rb +3 -3
  410. data/spec/unit/dsl/registry_helper_spec.rb +7 -7
  411. data/spec/unit/dsl/render_helpers_spec.rb +102 -0
  412. data/spec/unit/dsl/secret_spec.rb +175 -0
  413. data/spec/unit/file_access_control_spec.rb +1 -1
  414. data/spec/unit/formatters/doc_spec.rb +1 -1
  415. data/spec/unit/guard_interpreter/resource_guard_interpreter_spec.rb +1 -1
  416. data/spec/unit/handler_spec.rb +8 -2
  417. data/spec/unit/http/basic_client_spec.rb +30 -0
  418. data/spec/unit/http_spec.rb +8 -2
  419. data/spec/unit/lwrp_spec.rb +3 -3
  420. data/spec/unit/mixin/default_paths_spec.rb +1 -1
  421. data/spec/unit/mixin/homebrew_user_spec.rb +30 -7
  422. data/spec/unit/mixin/openssl_helper_spec.rb +1 -1
  423. data/spec/unit/mixin/params_validate_spec.rb +4 -3
  424. data/spec/unit/mixin/powershell_exec_spec.rb +9 -9
  425. data/spec/unit/mixin/powershell_out_spec.rb +2 -2
  426. data/spec/unit/mixin/securable_spec.rb +3 -3
  427. data/spec/unit/mixin/why_run_spec.rb +53 -0
  428. data/spec/unit/node/attribute_spec.rb +1 -1
  429. data/spec/unit/node_spec.rb +78 -0
  430. data/spec/unit/org_group_spec.rb +45 -0
  431. data/spec/unit/platform/query_helpers_spec.rb +5 -5
  432. data/spec/unit/policy_builder/dynamic_spec.rb +0 -5
  433. data/spec/unit/policy_builder/policyfile_spec.rb +133 -55
  434. data/spec/unit/property_spec.rb +23 -22
  435. data/spec/unit/provider/apt_update_spec.rb +3 -1
  436. data/spec/unit/provider/cron_spec.rb +46 -1
  437. data/spec/unit/provider/dsc_script_spec.rb +8 -8
  438. data/spec/unit/provider/group/gpasswd_spec.rb +2 -2
  439. data/spec/unit/provider/group/groupadd_spec.rb +1 -0
  440. data/spec/unit/provider/group/groupmod_spec.rb +2 -2
  441. data/spec/unit/provider/group/pw_spec.rb +2 -2
  442. data/spec/unit/provider/group/usermod_spec.rb +4 -4
  443. data/spec/unit/provider/group_spec.rb +1 -1
  444. data/spec/unit/provider/ifconfig/aix_spec.rb +14 -14
  445. data/spec/unit/provider/ifconfig/debian_spec.rb +1 -1
  446. data/spec/unit/provider/ifconfig/redhat_spec.rb +1 -1
  447. data/spec/unit/provider/ifconfig_spec.rb +5 -3
  448. data/spec/unit/provider/link_spec.rb +14 -8
  449. data/spec/unit/provider/mount/aix_spec.rb +1 -1
  450. data/spec/unit/provider/mount/linux_spec.rb +16 -3
  451. data/spec/unit/provider/package/apt_spec.rb +84 -18
  452. data/spec/unit/provider/package/bff_spec.rb +1 -0
  453. data/spec/unit/provider/package/chocolatey_spec.rb +20 -3
  454. data/spec/unit/provider/package/deb_spec.rb +3 -3
  455. data/spec/unit/provider/package/dnf/python_helper_spec.rb +1 -0
  456. data/spec/unit/provider/package/powershell_spec.rb +114 -114
  457. data/spec/unit/provider/package/rubygems_spec.rb +27 -36
  458. data/spec/unit/provider/package/solaris_spec.rb +1 -0
  459. data/spec/unit/provider/package/windows_spec.rb +1 -1
  460. data/spec/unit/provider/package/yum/python_helper_spec.rb +1 -0
  461. data/spec/unit/provider/registry_key_spec.rb +4 -4
  462. data/spec/unit/provider/remote_file/cache_control_data_spec.rb +3 -3
  463. data/spec/unit/provider/remote_file/http_spec.rb +10 -0
  464. data/spec/unit/provider/service/arch_service_spec.rb +3 -2
  465. data/spec/unit/provider/service/debian_service_spec.rb +2 -0
  466. data/spec/unit/provider/service/gentoo_service_spec.rb +3 -2
  467. data/spec/unit/provider/service/macosx_spec.rb +3 -2
  468. data/spec/unit/provider/service/redhat_spec.rb +4 -1
  469. data/spec/unit/provider/service/simple_service_spec.rb +6 -4
  470. data/spec/unit/provider/service/systemd_service_spec.rb +138 -23
  471. data/spec/unit/provider/service/upstart_service_spec.rb +3 -32
  472. data/spec/unit/provider/service/windows_spec.rb +7 -7
  473. data/spec/unit/provider/subversion_spec.rb +6 -6
  474. data/spec/unit/provider/systemd_unit_spec.rb +79 -60
  475. data/spec/unit/provider/template_spec.rb +2 -2
  476. data/spec/unit/provider/user/linux_spec.rb +55 -0
  477. data/spec/unit/provider/user/solaris_spec.rb +1 -1
  478. data/spec/unit/provider/user_spec.rb +2 -0
  479. data/spec/unit/provider/windows_env_spec.rb +1 -1
  480. data/spec/unit/provider/zypper_repository_spec.rb +6 -13
  481. data/spec/unit/provider_spec.rb +23 -8
  482. data/spec/unit/resource/archive_file_spec.rb +400 -2
  483. data/spec/unit/resource/chef_client_config_spec.rb +8 -0
  484. data/spec/unit/resource/chef_client_scheduled_task_spec.rb +69 -0
  485. data/spec/unit/resource/chef_client_systemd_timer_spec.rb +1 -1
  486. data/spec/unit/resource/chocolatey_config_spec.rb +1 -1
  487. data/spec/unit/resource/chocolatey_feature_spec.rb +1 -1
  488. data/spec/unit/resource/chocolatey_source_spec.rb +1 -1
  489. data/spec/unit/resource/conditional_spec.rb +4 -4
  490. data/spec/unit/resource/dpkg_package_spec.rb +12 -0
  491. data/spec/unit/resource/file/verification/json_spec.rb +72 -0
  492. data/spec/unit/resource/file/verification/yaml_spec.rb +67 -0
  493. data/spec/unit/resource/inspec_input_spec.rb +300 -0
  494. data/spec/unit/resource/inspec_waiver_file_entry_spec.rb +80 -0
  495. data/spec/unit/resource/inspec_waiver_spec.rb +312 -0
  496. data/spec/unit/resource/kernel_module_spec.rb +2 -1
  497. data/spec/unit/resource/macos_user_defaults_spec.rb +36 -96
  498. data/spec/unit/resource/powershell_package_source_spec.rb +63 -62
  499. data/spec/unit/resource/powershell_script_spec.rb +2 -2
  500. data/spec/unit/resource/registry_key_spec.rb +10 -10
  501. data/spec/unit/resource/rhsm_register_spec.rb +42 -0
  502. data/spec/unit/resource/windows_auto_run_spec.rb +1 -1
  503. data/spec/unit/resource/windows_defender_exclusion_spec.rb +62 -0
  504. data/spec/unit/resource/windows_defender_spec.rb +71 -0
  505. data/spec/unit/resource/windows_feature_powershell_spec.rb +1 -1
  506. data/spec/unit/resource/windows_firewall_rule_spec.rb +14 -9
  507. data/spec/unit/resource/windows_pagefile_spec.rb +4 -9
  508. data/spec/unit/resource/windows_task_spec.rb +4 -4
  509. data/spec/unit/resource/windows_update_settings_spec.rb +64 -0
  510. data/spec/unit/resource/zypper_repository_spec.rb +1 -1
  511. data/spec/unit/resource_reporter_spec.rb +2 -2
  512. data/spec/unit/resource_spec.rb +56 -23
  513. data/spec/unit/run_context_spec.rb +16 -0
  514. data/spec/unit/secret_fetcher/akeyless_vault_spec.rb +37 -0
  515. data/spec/unit/secret_fetcher/aws_secrets_manager_spec.rb +70 -0
  516. data/spec/unit/secret_fetcher/azure_key_vault_spec.rb +149 -0
  517. data/spec/unit/secret_fetcher/hashi_vault_spec.rb +126 -0
  518. data/spec/unit/secret_fetcher_spec.rb +82 -0
  519. data/spec/unit/user_spec.rb +1 -1
  520. data/spec/unit/user_v1_spec.rb +6 -4
  521. data/spec/unit/util/backup_spec.rb +1 -1
  522. data/spec/unit/util/dsc/local_configuration_manager_spec.rb +2 -2
  523. data/spec/unit/win32/registry_spec.rb +3 -3
  524. data/tasks/rspec.rb +10 -6
  525. metadata +181 -532
  526. data/bin/knife +0 -24
  527. data/lib/chef/application/knife.rb +0 -234
  528. data/lib/chef/application/windows_service.rb +0 -338
  529. data/lib/chef/application/windows_service_manager.rb +0 -205
  530. data/lib/chef/chef_fs/knife.rb +0 -160
  531. data/lib/chef/chef_fs/parallelizer/flatten_enumerable.rb +0 -35
  532. data/lib/chef/chef_fs/parallelizer/parallel_enumerable.rb +0 -278
  533. data/lib/chef/chef_fs/parallelizer.rb +0 -102
  534. data/lib/chef/cookbook_site_streaming_uploader.rb +0 -244
  535. data/lib/chef/knife/acl_add.rb +0 -57
  536. data/lib/chef/knife/acl_base.rb +0 -183
  537. data/lib/chef/knife/acl_bulk_add.rb +0 -78
  538. data/lib/chef/knife/acl_bulk_remove.rb +0 -83
  539. data/lib/chef/knife/acl_remove.rb +0 -62
  540. data/lib/chef/knife/acl_show.rb +0 -56
  541. data/lib/chef/knife/bootstrap/chef_vault_handler.rb +0 -162
  542. data/lib/chef/knife/bootstrap/client_builder.rb +0 -212
  543. data/lib/chef/knife/bootstrap/templates/README.md +0 -11
  544. data/lib/chef/knife/bootstrap/templates/chef-full.erb +0 -242
  545. data/lib/chef/knife/bootstrap/templates/windows-chef-client-msi.erb +0 -278
  546. data/lib/chef/knife/bootstrap/train_connector.rb +0 -336
  547. data/lib/chef/knife/bootstrap.rb +0 -1192
  548. data/lib/chef/knife/client_bulk_delete.rb +0 -104
  549. data/lib/chef/knife/client_create.rb +0 -101
  550. data/lib/chef/knife/client_delete.rb +0 -62
  551. data/lib/chef/knife/client_edit.rb +0 -52
  552. data/lib/chef/knife/client_key_create.rb +0 -73
  553. data/lib/chef/knife/client_key_delete.rb +0 -80
  554. data/lib/chef/knife/client_key_edit.rb +0 -83
  555. data/lib/chef/knife/client_key_list.rb +0 -73
  556. data/lib/chef/knife/client_key_show.rb +0 -80
  557. data/lib/chef/knife/client_list.rb +0 -41
  558. data/lib/chef/knife/client_reregister.rb +0 -58
  559. data/lib/chef/knife/config_get.rb +0 -39
  560. data/lib/chef/knife/config_get_profile.rb +0 -37
  561. data/lib/chef/knife/config_list.rb +0 -139
  562. data/lib/chef/knife/config_list_profiles.rb +0 -37
  563. data/lib/chef/knife/config_show.rb +0 -127
  564. data/lib/chef/knife/config_use.rb +0 -61
  565. data/lib/chef/knife/config_use_profile.rb +0 -47
  566. data/lib/chef/knife/configure.rb +0 -150
  567. data/lib/chef/knife/configure_client.rb +0 -48
  568. data/lib/chef/knife/cookbook_bulk_delete.rb +0 -71
  569. data/lib/chef/knife/cookbook_delete.rb +0 -151
  570. data/lib/chef/knife/cookbook_download.rb +0 -142
  571. data/lib/chef/knife/cookbook_list.rb +0 -47
  572. data/lib/chef/knife/cookbook_metadata.rb +0 -106
  573. data/lib/chef/knife/cookbook_metadata_from_file.rb +0 -49
  574. data/lib/chef/knife/cookbook_show.rb +0 -98
  575. data/lib/chef/knife/cookbook_upload.rb +0 -292
  576. data/lib/chef/knife/core/bootstrap_context.rb +0 -264
  577. data/lib/chef/knife/core/cookbook_scm_repo.rb +0 -159
  578. data/lib/chef/knife/core/formatting_options.rb +0 -49
  579. data/lib/chef/knife/core/gem_glob_loader.rb +0 -138
  580. data/lib/chef/knife/core/generic_presenter.rb +0 -232
  581. data/lib/chef/knife/core/hashed_command_loader.rb +0 -100
  582. data/lib/chef/knife/core/node_editor.rb +0 -130
  583. data/lib/chef/knife/core/node_presenter.rb +0 -133
  584. data/lib/chef/knife/core/object_loader.rb +0 -115
  585. data/lib/chef/knife/core/status_presenter.rb +0 -147
  586. data/lib/chef/knife/core/subcommand_loader.rb +0 -203
  587. data/lib/chef/knife/core/text_formatter.rb +0 -85
  588. data/lib/chef/knife/core/ui.rb +0 -338
  589. data/lib/chef/knife/core/windows_bootstrap_context.rb +0 -405
  590. data/lib/chef/knife/data_bag_create.rb +0 -81
  591. data/lib/chef/knife/data_bag_delete.rb +0 -49
  592. data/lib/chef/knife/data_bag_edit.rb +0 -74
  593. data/lib/chef/knife/data_bag_from_file.rb +0 -113
  594. data/lib/chef/knife/data_bag_secret_options.rb +0 -122
  595. data/lib/chef/knife/data_bag_show.rb +0 -69
  596. data/lib/chef/knife/delete.rb +0 -125
  597. data/lib/chef/knife/deps.rb +0 -156
  598. data/lib/chef/knife/diff.rb +0 -83
  599. data/lib/chef/knife/download.rb +0 -84
  600. data/lib/chef/knife/edit.rb +0 -88
  601. data/lib/chef/knife/environment_compare.rb +0 -128
  602. data/lib/chef/knife/environment_create.rb +0 -52
  603. data/lib/chef/knife/environment_delete.rb +0 -44
  604. data/lib/chef/knife/environment_edit.rb +0 -44
  605. data/lib/chef/knife/environment_from_file.rb +0 -84
  606. data/lib/chef/knife/environment_list.rb +0 -41
  607. data/lib/chef/knife/environment_show.rb +0 -47
  608. data/lib/chef/knife/exec.rb +0 -99
  609. data/lib/chef/knife/group_add.rb +0 -55
  610. data/lib/chef/knife/group_create.rb +0 -49
  611. data/lib/chef/knife/group_destroy.rb +0 -53
  612. data/lib/chef/knife/group_remove.rb +0 -56
  613. data/lib/chef/knife/group_show.rb +0 -49
  614. data/lib/chef/knife/key_create.rb +0 -112
  615. data/lib/chef/knife/key_create_base.rb +0 -50
  616. data/lib/chef/knife/key_delete.rb +0 -55
  617. data/lib/chef/knife/key_edit.rb +0 -118
  618. data/lib/chef/knife/key_edit_base.rb +0 -55
  619. data/lib/chef/knife/key_list.rb +0 -90
  620. data/lib/chef/knife/key_list_base.rb +0 -45
  621. data/lib/chef/knife/key_show.rb +0 -53
  622. data/lib/chef/knife/list.rb +0 -177
  623. data/lib/chef/knife/node_bulk_delete.rb +0 -75
  624. data/lib/chef/knife/node_create.rb +0 -47
  625. data/lib/chef/knife/node_delete.rb +0 -46
  626. data/lib/chef/knife/node_edit.rb +0 -70
  627. data/lib/chef/knife/node_environment_set.rb +0 -53
  628. data/lib/chef/knife/node_from_file.rb +0 -51
  629. data/lib/chef/knife/node_list.rb +0 -44
  630. data/lib/chef/knife/node_policy_set.rb +0 -79
  631. data/lib/chef/knife/node_run_list_add.rb +0 -104
  632. data/lib/chef/knife/node_run_list_remove.rb +0 -67
  633. data/lib/chef/knife/node_run_list_set.rb +0 -66
  634. data/lib/chef/knife/node_show.rb +0 -63
  635. data/lib/chef/knife/null.rb +0 -12
  636. data/lib/chef/knife/raw.rb +0 -123
  637. data/lib/chef/knife/rehash.rb +0 -50
  638. data/lib/chef/knife/role_bulk_delete.rb +0 -66
  639. data/lib/chef/knife/role_create.rb +0 -53
  640. data/lib/chef/knife/role_delete.rb +0 -46
  641. data/lib/chef/knife/role_edit.rb +0 -45
  642. data/lib/chef/knife/role_env_run_list_add.rb +0 -87
  643. data/lib/chef/knife/role_env_run_list_clear.rb +0 -55
  644. data/lib/chef/knife/role_env_run_list_remove.rb +0 -57
  645. data/lib/chef/knife/role_env_run_list_replace.rb +0 -60
  646. data/lib/chef/knife/role_env_run_list_set.rb +0 -70
  647. data/lib/chef/knife/role_from_file.rb +0 -51
  648. data/lib/chef/knife/role_list.rb +0 -42
  649. data/lib/chef/knife/role_run_list_add.rb +0 -87
  650. data/lib/chef/knife/role_run_list_clear.rb +0 -55
  651. data/lib/chef/knife/role_run_list_remove.rb +0 -56
  652. data/lib/chef/knife/role_run_list_replace.rb +0 -60
  653. data/lib/chef/knife/role_run_list_set.rb +0 -69
  654. data/lib/chef/knife/role_show.rb +0 -48
  655. data/lib/chef/knife/search.rb +0 -194
  656. data/lib/chef/knife/serve.rb +0 -65
  657. data/lib/chef/knife/show.rb +0 -72
  658. data/lib/chef/knife/ssh.rb +0 -645
  659. data/lib/chef/knife/ssl_check.rb +0 -284
  660. data/lib/chef/knife/ssl_fetch.rb +0 -161
  661. data/lib/chef/knife/status.rb +0 -95
  662. data/lib/chef/knife/supermarket_download.rb +0 -121
  663. data/lib/chef/knife/supermarket_install.rb +0 -192
  664. data/lib/chef/knife/supermarket_list.rb +0 -76
  665. data/lib/chef/knife/supermarket_search.rb +0 -53
  666. data/lib/chef/knife/supermarket_share.rb +0 -166
  667. data/lib/chef/knife/supermarket_show.rb +0 -66
  668. data/lib/chef/knife/supermarket_unshare.rb +0 -61
  669. data/lib/chef/knife/tag_create.rb +0 -52
  670. data/lib/chef/knife/tag_delete.rb +0 -60
  671. data/lib/chef/knife/tag_list.rb +0 -47
  672. data/lib/chef/knife/upload.rb +0 -86
  673. data/lib/chef/knife/user_create.rb +0 -107
  674. data/lib/chef/knife/user_delete.rb +0 -44
  675. data/lib/chef/knife/user_dissociate.rb +0 -42
  676. data/lib/chef/knife/user_edit.rb +0 -52
  677. data/lib/chef/knife/user_invite_add.rb +0 -43
  678. data/lib/chef/knife/user_invite_list.rb +0 -34
  679. data/lib/chef/knife/user_invite_rescind.rb +0 -63
  680. data/lib/chef/knife/user_key_create.rb +0 -73
  681. data/lib/chef/knife/user_key_delete.rb +0 -80
  682. data/lib/chef/knife/user_key_edit.rb +0 -83
  683. data/lib/chef/knife/user_key_list.rb +0 -73
  684. data/lib/chef/knife/user_key_show.rb +0 -80
  685. data/lib/chef/knife/user_list.rb +0 -42
  686. data/lib/chef/knife/user_reregister.rb +0 -59
  687. data/lib/chef/knife/user_show.rb +0 -48
  688. data/lib/chef/knife/xargs.rb +0 -282
  689. data/lib/chef/knife/yaml_convert.rb +0 -91
  690. data/lib/chef/knife.rb +0 -665
  691. data/lib/chef/provider/group/suse.rb +0 -82
  692. data/lib/chef/provider/package/yum/simplejson/LICENSE.txt +0 -79
  693. data/lib/chef/provider/package/yum/simplejson/__init__.py +0 -318
  694. data/lib/chef/provider/package/yum/simplejson/__init__.pyc +0 -0
  695. data/lib/chef/provider/package/yum/simplejson/decoder.py +0 -354
  696. data/lib/chef/provider/package/yum/simplejson/decoder.pyc +0 -0
  697. data/lib/chef/provider/package/yum/simplejson/encoder.py +0 -440
  698. data/lib/chef/provider/package/yum/simplejson/encoder.pyc +0 -0
  699. data/lib/chef/provider/package/yum/simplejson/scanner.py +0 -65
  700. data/lib/chef/provider/package/yum/simplejson/scanner.pyc +0 -0
  701. data/lib/chef/provider/package/yum/simplejson/tool.py +0 -37
  702. data/spec/functional/knife/configure_spec.rb +0 -33
  703. data/spec/functional/knife/cookbook_delete_spec.rb +0 -156
  704. data/spec/functional/knife/exec_spec.rb +0 -55
  705. data/spec/functional/knife/rehash_spec.rb +0 -39
  706. data/spec/functional/knife/smoke_test.rb +0 -42
  707. data/spec/functional/knife/ssh_spec.rb +0 -352
  708. data/spec/functional/resource/user/dscl_spec.rb +0 -188
  709. data/spec/functional/resource/windows_service_spec.rb +0 -105
  710. data/spec/functional/win32/service_manager_spec.rb +0 -220
  711. data/spec/integration/knife/chef_fs_data_store_spec.rb +0 -557
  712. data/spec/integration/knife/chef_repo_path_spec.rb +0 -962
  713. data/spec/integration/knife/chef_repository_file_system_spec.rb +0 -200
  714. data/spec/integration/knife/chefignore_spec.rb +0 -301
  715. data/spec/integration/knife/client_bulk_delete_spec.rb +0 -131
  716. data/spec/integration/knife/client_create_spec.rb +0 -70
  717. data/spec/integration/knife/client_delete_spec.rb +0 -64
  718. data/spec/integration/knife/client_key_create_spec.rb +0 -66
  719. data/spec/integration/knife/client_key_delete_spec.rb +0 -43
  720. data/spec/integration/knife/client_key_list_spec.rb +0 -61
  721. data/spec/integration/knife/client_key_show_spec.rb +0 -45
  722. data/spec/integration/knife/client_list_spec.rb +0 -49
  723. data/spec/integration/knife/client_show_spec.rb +0 -37
  724. data/spec/integration/knife/common_options_spec.rb +0 -174
  725. data/spec/integration/knife/config_list_spec.rb +0 -220
  726. data/spec/integration/knife/config_show_spec.rb +0 -192
  727. data/spec/integration/knife/config_use_spec.rb +0 -198
  728. data/spec/integration/knife/cookbook_api_ipv6_spec.rb +0 -113
  729. data/spec/integration/knife/cookbook_bulk_delete_spec.rb +0 -65
  730. data/spec/integration/knife/cookbook_download_spec.rb +0 -72
  731. data/spec/integration/knife/cookbook_list_spec.rb +0 -55
  732. data/spec/integration/knife/cookbook_show_spec.rb +0 -149
  733. data/spec/integration/knife/cookbook_upload_spec.rb +0 -128
  734. data/spec/integration/knife/data_bag_create_spec.rb +0 -125
  735. data/spec/integration/knife/data_bag_delete_spec.rb +0 -59
  736. data/spec/integration/knife/data_bag_edit_spec.rb +0 -105
  737. data/spec/integration/knife/data_bag_from_file_spec.rb +0 -116
  738. data/spec/integration/knife/data_bag_list_spec.rb +0 -44
  739. data/spec/integration/knife/data_bag_show_spec.rb +0 -95
  740. data/spec/integration/knife/delete_spec.rb +0 -1018
  741. data/spec/integration/knife/deps_spec.rb +0 -703
  742. data/spec/integration/knife/diff_spec.rb +0 -605
  743. data/spec/integration/knife/download_spec.rb +0 -1336
  744. data/spec/integration/knife/environment_compare_spec.rb +0 -75
  745. data/spec/integration/knife/environment_create_spec.rb +0 -41
  746. data/spec/integration/knife/environment_delete_spec.rb +0 -37
  747. data/spec/integration/knife/environment_from_file_spec.rb +0 -116
  748. data/spec/integration/knife/environment_list_spec.rb +0 -42
  749. data/spec/integration/knife/environment_show_spec.rb +0 -77
  750. data/spec/integration/knife/list_spec.rb +0 -1060
  751. data/spec/integration/knife/node_bulk_delete_spec.rb +0 -52
  752. data/spec/integration/knife/node_create_spec.rb +0 -47
  753. data/spec/integration/knife/node_delete_spec.rb +0 -48
  754. data/spec/integration/knife/node_environment_set_spec.rb +0 -46
  755. data/spec/integration/knife/node_from_file_spec.rb +0 -59
  756. data/spec/integration/knife/node_list_spec.rb +0 -45
  757. data/spec/integration/knife/node_run_list_add_spec.rb +0 -54
  758. data/spec/integration/knife/node_run_list_remove_spec.rb +0 -36
  759. data/spec/integration/knife/node_run_list_set_spec.rb +0 -41
  760. data/spec/integration/knife/node_show_spec.rb +0 -36
  761. data/spec/integration/knife/raw_spec.rb +0 -297
  762. data/spec/integration/knife/redirection_spec.rb +0 -64
  763. data/spec/integration/knife/role_bulk_delete_spec.rb +0 -52
  764. data/spec/integration/knife/role_create_spec.rb +0 -41
  765. data/spec/integration/knife/role_delete_spec.rb +0 -48
  766. data/spec/integration/knife/role_from_file_spec.rb +0 -96
  767. data/spec/integration/knife/role_list_spec.rb +0 -45
  768. data/spec/integration/knife/role_show_spec.rb +0 -51
  769. data/spec/integration/knife/search_node_spec.rb +0 -40
  770. data/spec/integration/knife/serve_spec.rb +0 -92
  771. data/spec/integration/knife/show_spec.rb +0 -197
  772. data/spec/integration/knife/upload_spec.rb +0 -1616
  773. data/spec/support/shared/functional/win32_service.rb +0 -57
  774. data/spec/unit/application/knife_spec.rb +0 -241
  775. data/spec/unit/chef_fs/parallelizer_spec.rb +0 -479
  776. data/spec/unit/cookbook_site_streaming_uploader_spec.rb +0 -198
  777. data/spec/unit/knife/bootstrap/chef_vault_handler_spec.rb +0 -152
  778. data/spec/unit/knife/bootstrap/client_builder_spec.rb +0 -207
  779. data/spec/unit/knife/bootstrap/train_connector_spec.rb +0 -244
  780. data/spec/unit/knife/bootstrap_spec.rb +0 -2220
  781. data/spec/unit/knife/client_bulk_delete_spec.rb +0 -166
  782. data/spec/unit/knife/client_create_spec.rb +0 -169
  783. data/spec/unit/knife/client_delete_spec.rb +0 -99
  784. data/spec/unit/knife/client_edit_spec.rb +0 -53
  785. data/spec/unit/knife/client_list_spec.rb +0 -34
  786. data/spec/unit/knife/client_reregister_spec.rb +0 -62
  787. data/spec/unit/knife/client_show_spec.rb +0 -52
  788. data/spec/unit/knife/configure_client_spec.rb +0 -81
  789. data/spec/unit/knife/configure_spec.rb +0 -190
  790. data/spec/unit/knife/cookbook_bulk_delete_spec.rb +0 -87
  791. data/spec/unit/knife/cookbook_delete_spec.rb +0 -239
  792. data/spec/unit/knife/cookbook_download_spec.rb +0 -255
  793. data/spec/unit/knife/cookbook_list_spec.rb +0 -88
  794. data/spec/unit/knife/cookbook_metadata_from_file_spec.rb +0 -72
  795. data/spec/unit/knife/cookbook_metadata_spec.rb +0 -182
  796. data/spec/unit/knife/cookbook_show_spec.rb +0 -253
  797. data/spec/unit/knife/cookbook_upload_spec.rb +0 -364
  798. data/spec/unit/knife/core/bootstrap_context_spec.rb +0 -287
  799. data/spec/unit/knife/core/cookbook_scm_repo_spec.rb +0 -187
  800. data/spec/unit/knife/core/gem_glob_loader_spec.rb +0 -209
  801. data/spec/unit/knife/core/hashed_command_loader_spec.rb +0 -112
  802. data/spec/unit/knife/core/node_editor_spec.rb +0 -211
  803. data/spec/unit/knife/core/object_loader_spec.rb +0 -81
  804. data/spec/unit/knife/core/status_presenter_spec.rb +0 -54
  805. data/spec/unit/knife/core/subcommand_loader_spec.rb +0 -64
  806. data/spec/unit/knife/core/ui_spec.rb +0 -656
  807. data/spec/unit/knife/core/windows_bootstrap_context_spec.rb +0 -238
  808. data/spec/unit/knife/data_bag_create_spec.rb +0 -175
  809. data/spec/unit/knife/data_bag_edit_spec.rb +0 -126
  810. data/spec/unit/knife/data_bag_from_file_spec.rb +0 -174
  811. data/spec/unit/knife/data_bag_secret_options_spec.rb +0 -173
  812. data/spec/unit/knife/data_bag_show_spec.rb +0 -139
  813. data/spec/unit/knife/environment_compare_spec.rb +0 -112
  814. data/spec/unit/knife/environment_create_spec.rb +0 -91
  815. data/spec/unit/knife/environment_delete_spec.rb +0 -71
  816. data/spec/unit/knife/environment_edit_spec.rb +0 -79
  817. data/spec/unit/knife/environment_from_file_spec.rb +0 -90
  818. data/spec/unit/knife/environment_list_spec.rb +0 -54
  819. data/spec/unit/knife/environment_show_spec.rb +0 -52
  820. data/spec/unit/knife/key_create_spec.rb +0 -223
  821. data/spec/unit/knife/key_delete_spec.rb +0 -133
  822. data/spec/unit/knife/key_edit_spec.rb +0 -264
  823. data/spec/unit/knife/key_helper.rb +0 -74
  824. data/spec/unit/knife/key_list_spec.rb +0 -216
  825. data/spec/unit/knife/key_show_spec.rb +0 -126
  826. data/spec/unit/knife/node_bulk_delete_spec.rb +0 -94
  827. data/spec/unit/knife/node_delete_spec.rb +0 -77
  828. data/spec/unit/knife/node_edit_spec.rb +0 -116
  829. data/spec/unit/knife/node_environment_set_spec.rb +0 -61
  830. data/spec/unit/knife/node_from_file_spec.rb +0 -59
  831. data/spec/unit/knife/node_list_spec.rb +0 -62
  832. data/spec/unit/knife/node_policy_set_spec.rb +0 -122
  833. data/spec/unit/knife/node_run_list_add_spec.rb +0 -145
  834. data/spec/unit/knife/node_run_list_remove_spec.rb +0 -106
  835. data/spec/unit/knife/node_run_list_set_spec.rb +0 -115
  836. data/spec/unit/knife/node_show_spec.rb +0 -65
  837. data/spec/unit/knife/raw_spec.rb +0 -43
  838. data/spec/unit/knife/role_bulk_delete_spec.rb +0 -80
  839. data/spec/unit/knife/role_create_spec.rb +0 -80
  840. data/spec/unit/knife/role_delete_spec.rb +0 -67
  841. data/spec/unit/knife/role_edit_spec.rb +0 -77
  842. data/spec/unit/knife/role_env_run_list_add_spec.rb +0 -217
  843. data/spec/unit/knife/role_env_run_list_clear_spec.rb +0 -94
  844. data/spec/unit/knife/role_env_run_list_remove_spec.rb +0 -102
  845. data/spec/unit/knife/role_env_run_list_replace_spec.rb +0 -105
  846. data/spec/unit/knife/role_env_run_list_set_spec.rb +0 -99
  847. data/spec/unit/knife/role_from_file_spec.rb +0 -69
  848. data/spec/unit/knife/role_list_spec.rb +0 -54
  849. data/spec/unit/knife/role_run_list_add_spec.rb +0 -179
  850. data/spec/unit/knife/role_run_list_clear_spec.rb +0 -84
  851. data/spec/unit/knife/role_run_list_remove_spec.rb +0 -92
  852. data/spec/unit/knife/role_run_list_replace_spec.rb +0 -98
  853. data/spec/unit/knife/role_run_list_set_spec.rb +0 -89
  854. data/spec/unit/knife/role_show_spec.rb +0 -59
  855. data/spec/unit/knife/ssh_spec.rb +0 -403
  856. data/spec/unit/knife/ssl_check_spec.rb +0 -256
  857. data/spec/unit/knife/ssl_fetch_spec.rb +0 -222
  858. data/spec/unit/knife/status_spec.rb +0 -112
  859. data/spec/unit/knife/supermarket_download_spec.rb +0 -152
  860. data/spec/unit/knife/supermarket_install_spec.rb +0 -202
  861. data/spec/unit/knife/supermarket_list_spec.rb +0 -70
  862. data/spec/unit/knife/supermarket_search_spec.rb +0 -85
  863. data/spec/unit/knife/supermarket_share_spec.rb +0 -208
  864. data/spec/unit/knife/supermarket_unshare_spec.rb +0 -78
  865. data/spec/unit/knife/tag_create_spec.rb +0 -23
  866. data/spec/unit/knife/tag_delete_spec.rb +0 -25
  867. data/spec/unit/knife/tag_list_spec.rb +0 -23
  868. data/spec/unit/knife/user_create_spec.rb +0 -184
  869. data/spec/unit/knife/user_delete_spec.rb +0 -46
  870. data/spec/unit/knife/user_edit_spec.rb +0 -48
  871. data/spec/unit/knife/user_list_spec.rb +0 -36
  872. data/spec/unit/knife/user_reregister_spec.rb +0 -56
  873. data/spec/unit/knife/user_show_spec.rb +0 -46
  874. data/spec/unit/knife_spec.rb +0 -634
  875. data/spec/unit/provider/group/suse_spec.rb +0 -90
  876. data/spec/unit/provider/user/dscl_spec.rb +0 -699
  877. data/spec/unit/windows_service_spec.rb +0 -118
  878. /data/spec/functional/assets/chocolatey_feed/{test-A.1.0.nupkg → test-A.1.0.0.nupkg} +0 -0
  879. /data/spec/functional/assets/chocolatey_feed/{test-A.1.5.nupkg → test-A.1.5.0.nupkg} +0 -0
  880. /data/spec/functional/assets/chocolatey_feed/{test-A.2.0.nupkg → test-A.2.0.0.nupkg} +0 -0
  881. /data/spec/functional/assets/chocolatey_feed/{test-B.1.0.nupkg → test-B.1.0.0.nupkg} +0 -0
@@ -19,8 +19,9 @@ require "spec_helper"
19
19
  require "chef/mixin/shell_out"
20
20
 
21
21
  # run this test only for following platforms.
22
- exclude_test = !(%w{rhel fedora amazon}.include?(ohai[:platform_family]) && !File.exist?("/usr/bin/dnf"))
23
- describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
22
+ exclude_test = !(%w{rhel fedora amazon}.include?(OHAI_SYSTEM[:platform_family]) && !File.exist?("/usr/bin/dnf"))
23
+ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test, not_rhel6: true do
24
+ include RecipeDSLHelper
24
25
  include Chef::Mixin::ShellOut
25
26
 
26
27
  # NOTE: every single test here either needs to explicitly call flush_cache or needs to explicitly
@@ -38,11 +39,17 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
38
39
  flush_cache
39
40
  end
40
41
 
42
+ def expect_matching_installed_version(version)
43
+ expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(version)
44
+ end
45
+
41
46
  before(:all) do
42
47
  shell_out!("yum -y install yum-utils")
43
48
  end
44
49
 
45
50
  before(:each) do
51
+ # force errors to fail and not retry
52
+ ENV["YUM_HELPER_NO_RETRIES"] = "true"
46
53
  File.open("/etc/yum.repos.d/chef-yum-localtesting.repo", "w+") do |f|
47
54
  f.write <<~EOF
48
55
  [chef-yum-localtesting]
@@ -58,6 +65,7 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
58
65
 
59
66
  EOF
60
67
  end
68
+ # ensure we don't have any stray chef_rpms installed
61
69
  shell_out!("rpm -qa --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' | grep chef_rpm | xargs -r rpm -e")
62
70
  # next line is useful cleanup if you happen to have been testing both yum + dnf func tests on the same box and
63
71
  # have some dnf garbage left around
@@ -69,580 +77,1038 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
69
77
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
70
78
  end
71
79
 
72
- let(:run_context) do
73
- Chef::RunContext.new(Chef::Node.new, {}, Chef::EventDispatch::Dispatcher.new)
74
- end
75
-
76
- let(:package_name) { "chef_rpm" }
77
- let(:yum_package) do
78
- r = Chef::Resource::YumPackage.new(package_name, run_context)
79
- r.options("--nogpgcheck")
80
- r
81
- end
80
+ let(:default_options) { "--nogpgcheck --disablerepo=* --enablerepo=chef-yum-localtesting" }
82
81
 
83
82
  def pkg_arch
84
- ohai[:kernel][:machine]
83
+ OHAI_SYSTEM[:kernel][:machine]
85
84
  end
86
85
 
87
86
  describe ":install" do
88
87
  context "vanilla use case" do
89
- let(:package_name) { "chef_rpm" }
90
-
91
88
  it "installs if the package is not installed" do
92
89
  flush_cache
93
- yum_package.run_action(:install)
94
- expect(yum_package.updated_by_last_action?).to be true
95
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
90
+ yum_package "chef_rpm" do
91
+ options default_options
92
+ action :install
93
+ end.should_be_updated
94
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
96
95
  end
97
96
 
98
97
  it "does not install if the package is installed" do
99
98
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
100
- yum_package.run_action(:install)
101
- expect(yum_package.updated_by_last_action?).to be false
102
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
99
+ yum_package "chef_rpm" do
100
+ options default_options
101
+ action :install
102
+ end.should_not_be_updated
103
103
  end
104
104
 
105
105
  it "does not install twice" do
106
106
  flush_cache
107
- yum_package.run_action(:install)
108
- expect(yum_package.updated_by_last_action?).to be true
109
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
110
- yum_package.run_action(:install)
111
- expect(yum_package.updated_by_last_action?).to be false
112
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
107
+ yum_package "chef_rpm" do
108
+ options default_options
109
+ action :install
110
+ end.should_be_updated
111
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
112
+ yum_package "chef_rpm" do
113
+ options default_options
114
+ action :install
115
+ end.should_not_be_updated
116
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
113
117
  end
114
118
 
115
119
  it "does not install if the prior version package is installed" do
116
120
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
117
- yum_package.run_action(:install)
118
- expect(yum_package.updated_by_last_action?).to be false
119
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
121
+ yum_package "chef_rpm" do
122
+ options default_options
123
+ action :install
124
+ end.should_not_be_updated
125
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
120
126
  end
121
127
 
122
128
  it "does not install if the i686 package is installed", :intel_64bit do
123
129
  skip "FIXME: do nothing, or install the #{pkg_arch} version?"
124
130
  preinstall("chef_rpm-1.10-1.i686.rpm")
125
- yum_package.run_action(:install)
126
- expect(yum_package.updated_by_last_action?).to be false
127
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
131
+ yum_package "chef_rpm" do
132
+ options default_options
133
+ action :install
134
+ end.should_not_be_updated
135
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
128
136
  end
129
137
 
130
138
  it "does not install if the prior version i686 package is installed", :intel_64bit do
131
139
  skip "FIXME: do nothing, or install the #{pkg_arch} version?"
132
140
  preinstall("chef_rpm-1.2-1.i686.rpm")
133
- yum_package.run_action(:install)
134
- expect(yum_package.updated_by_last_action?).to be false
135
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.i686$")
141
+ yum_package "chef_rpm" do
142
+ options default_options
143
+ action :install
144
+ end.should_not_be_updated
145
+ expect_matching_installed_version("^chef_rpm-1.2-1.i686$")
146
+ end
147
+ end
148
+
149
+ context "expanded idempotency checks with version variants" do
150
+
151
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
152
+ # python helper periodically before every top level context to get more FDs.
153
+ before(:all) do
154
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
155
+ end
156
+
157
+ # 0:1*-1 doesn't work on yum/el6
158
+ %w{1.10 1* 1.10-1 1*-1 1.10-* 1*-* 0:1* *:1.10-* *:1*-* 0:1.10 0:1.10-1}.each do |vstring|
159
+ it "installs the rpm when #{vstring} is in the package_name" do
160
+ flush_cache
161
+ yum_package "chef_rpm-#{vstring}" do
162
+ options default_options
163
+ action :install
164
+ end.should_be_updated
165
+ end
166
+
167
+ it "is idempotent when #{vstring} is in the package_name" do
168
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
169
+ yum_package "chef_rpm-#{vstring}" do
170
+ options default_options
171
+ action :install
172
+ end.should_not_be_updated
173
+ end
174
+
175
+ it "installs the rpm when #{vstring} is in the version property" do
176
+ flush_cache
177
+ yum_package "chef_rpm" do
178
+ options default_options
179
+ version vstring
180
+ action :install
181
+ end.should_be_updated
182
+ end
183
+
184
+ it "is idempotent when #{vstring} is in the version property" do
185
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
186
+ yum_package "chef_rpm" do
187
+ options default_options
188
+ version vstring
189
+ action :install
190
+ end.should_not_be_updated
191
+ end
192
+
193
+ it "upgrades the rpm when #{vstring} is in the package_name" do
194
+ flush_cache
195
+ yum_package "chef_rpm-#{vstring}" do
196
+ options default_options
197
+ action :upgrade
198
+ end.should_be_updated
199
+ end
200
+
201
+ it "is idempotent when #{vstring} is in the package_name" do
202
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
203
+ yum_package "chef_rpm-#{vstring}" do
204
+ options default_options
205
+ action :upgrade
206
+ end.should_not_be_updated
207
+ end
208
+
209
+ it "upgrades the rpm when #{vstring} is in the version property" do
210
+ flush_cache
211
+ yum_package "chef_rpm" do
212
+ options default_options
213
+ version vstring
214
+ action :upgrade
215
+ end.should_be_updated
216
+ end
217
+
218
+ it "is idempotent when #{vstring} is in the version property" do
219
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
220
+ yum_package "chef_rpm" do
221
+ options default_options
222
+ version vstring
223
+ action :upgrade
224
+ end.should_not_be_updated
225
+ end
226
+ end
227
+
228
+ # 0:1*-1 doesn't work on yum/el6
229
+ %w{1.2 1* 1.2-1 1*-1 1.2-* 1*-* 0:1* *:1.2-* *:1*-* 0:1.2 0:1.2-1}.each do |vstring|
230
+ it "is idempotent when #{vstring} is in the version property and there is a candidate version" do
231
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
232
+ yum_package "chef_rpm" do
233
+ options default_options
234
+ version vstring
235
+ action :install
236
+ end.should_not_be_updated
237
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
238
+ end
239
+ end
240
+
241
+ # 0:1.2 0:1*-1 doesn't work on yum/el6
242
+ %w{1.2 1.2-1 1.2-* *:1.2-* 0:1.2-1}.each do |vstring|
243
+ it "is idempotent when #{vstring} is in the version property on upgrade and it doesn't match the candidate version" do
244
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
245
+ yum_package "chef_rpm" do
246
+ options default_options
247
+ version vstring
248
+ action :upgrade
249
+ end.should_not_be_updated
250
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
251
+ end
252
+ end
253
+
254
+ # 0:1.2-1 0:1.2 0:1*-1 doesn't work on yum/el6
255
+ %w{1* 1*-1 1*-* 0:1* *:1*-*}.each do |vstring|
256
+ it "upgrades when #{vstring} is in the version property on upgrade and it matches the candidate version" do
257
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
258
+ yum_package "chef_rpm" do
259
+ options default_options
260
+ version vstring
261
+ action :upgrade
262
+ end.should_be_updated
263
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
264
+ yum_package "chef_rpm" do
265
+ options default_options
266
+ version vstring
267
+ action :upgrade
268
+ end.should_not_be_updated
269
+ end
136
270
  end
137
271
  end
138
272
 
139
273
  context "with versions or globs in the name" do
274
+
275
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
276
+ # python helper periodically before every top level context to get more FDs.
277
+ before(:all) do
278
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
279
+ end
280
+
140
281
  it "works with a version" do
141
282
  flush_cache
142
- yum_package.package_name("chef_rpm-1.10")
143
- yum_package.run_action(:install)
144
- expect(yum_package.updated_by_last_action?).to be true
145
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
283
+ yum_package "chef_rpm-1.10" do
284
+ options default_options
285
+ action :install
286
+ end.should_be_updated
287
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
288
+ yum_package "chef_rpm-1.10" do
289
+ options default_options
290
+ action :install
291
+ end.should_not_be_updated
146
292
  end
147
293
 
148
294
  it "works with an older version" do
149
295
  flush_cache
150
- yum_package.package_name("chef_rpm-1.2")
151
- yum_package.run_action(:install)
152
- expect(yum_package.updated_by_last_action?).to be true
153
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
296
+ yum_package "chef_rpm-1.2" do
297
+ options default_options
298
+ action :install
299
+ end.should_be_updated
300
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
301
+ yum_package "chef_rpm-1.2" do
302
+ options default_options
303
+ action :install
304
+ end.should_not_be_updated
154
305
  end
155
306
 
156
307
  it "works with an evra" do
157
308
  flush_cache
158
- yum_package.package_name("chef_rpm-0:1.2-1.#{pkg_arch}")
159
- yum_package.run_action(:install)
160
- expect(yum_package.updated_by_last_action?).to be true
161
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
309
+ yum_package "chef_rpm-0:1.2-1.#{pkg_arch}" do
310
+ options default_options
311
+ action :install
312
+ end.should_be_updated
313
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
314
+ yum_package "chef_rpm-0:1.2-1.#{pkg_arch}" do
315
+ options default_options
316
+ action :install
317
+ end.should_not_be_updated
162
318
  end
163
319
 
164
320
  it "works with version and release" do
165
321
  flush_cache
166
- yum_package.package_name("chef_rpm-1.2-1")
167
- yum_package.run_action(:install)
168
- expect(yum_package.updated_by_last_action?).to be true
169
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
322
+ yum_package "chef_rpm-1.2-1" do
323
+ options default_options
324
+ action :install
325
+ end.should_be_updated
326
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
327
+ yum_package "chef_rpm-1.2-1" do
328
+ options default_options
329
+ action :install
330
+ end.should_not_be_updated
170
331
  end
171
332
 
172
333
  it "works with a version glob" do
173
334
  flush_cache
174
- yum_package.package_name("chef_rpm-1*")
175
- yum_package.run_action(:install)
176
- expect(yum_package.updated_by_last_action?).to be true
177
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
335
+ yum_package "chef_rpm-1*" do
336
+ options default_options
337
+ action :install
338
+ end.should_be_updated
339
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
340
+ yum_package "chef_rpm-1*" do
341
+ options default_options
342
+ action :install
343
+ end.should_not_be_updated
178
344
  end
179
345
 
180
346
  it "works with a name glob + version glob" do
181
347
  flush_cache
182
- yum_package.package_name("chef_rp*-1*")
183
- yum_package.run_action(:install)
184
- expect(yum_package.updated_by_last_action?).to be true
185
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
348
+ yum_package "chef_rp*-1*" do
349
+ options default_options
350
+ action :install
351
+ end.should_be_updated
352
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
353
+ yum_package "chef_rp*-1*" do
354
+ options default_options
355
+ action :install
356
+ end.should_not_be_updated
186
357
  end
187
358
 
188
359
  it "upgrades when the installed version does not match the version string" do
189
360
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
190
- yum_package.package_name("chef_rpm-1.10")
191
- yum_package.run_action(:install)
192
- expect(yum_package.updated_by_last_action?).to be true
193
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}")
361
+ yum_package "chef_rpm-1.10" do
362
+ options default_options
363
+ action :install
364
+ end.should_be_updated
365
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}")
366
+ yum_package "chef_rpm-1.10" do
367
+ options default_options
368
+ action :install
369
+ end.should_not_be_updated
194
370
  end
195
371
 
196
372
  it "downgrades when the installed version is higher than the package_name version" do
197
373
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
198
- yum_package.allow_downgrade true
199
- yum_package.package_name("chef_rpm-1.2")
200
- yum_package.run_action(:install)
201
- expect(yum_package.updated_by_last_action?).to be true
202
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
374
+ yum_package "chef_rpm-1.2" do
375
+ options default_options
376
+ action :install
377
+ end.should_be_updated
378
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
379
+ yum_package "chef_rpm-1.2" do
380
+ options default_options
381
+ action :install
382
+ end.should_not_be_updated
203
383
  end
204
384
  end
205
385
 
206
386
  # version only matches the actual yum version, does not work with epoch or release or combined evr
207
387
  context "with version property" do
388
+
389
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
390
+ # python helper periodically before every top level context to get more FDs.
391
+ before(:all) do
392
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
393
+ end
394
+
208
395
  it "matches the full version" do
209
396
  flush_cache
210
- yum_package.package_name("chef_rpm")
211
- yum_package.version("1.10")
212
- yum_package.run_action(:install)
213
- expect(yum_package.updated_by_last_action?).to be true
214
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
397
+ yum_package "chef_rpm" do
398
+ options default_options
399
+ version "1.10"
400
+ action :install
401
+ end.should_be_updated
402
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
403
+ yum_package "chef_rpm" do
404
+ options default_options
405
+ version "1.10"
406
+ action :install
407
+ end.should_not_be_updated
215
408
  end
216
409
 
217
410
  it "matches with a glob" do
218
- # we are unlikely to ever fix this. if you've found this comment you should use e.g. "tcpdump-4*" in
219
- # the name field rather than trying to use a name of "tcpdump" and a version of "4*".
220
- pending "this does not work, is not easily supported by the underlying yum libraries, but does work in the new dnf_package provider"
221
411
  flush_cache
222
- yum_package.package_name("chef_rpm")
223
- yum_package.version("1*")
224
- yum_package.run_action(:install)
225
- expect(yum_package.updated_by_last_action?).to be true
226
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
412
+ yum_package "chef_rpm" do
413
+ options default_options
414
+ version "1*"
415
+ action :install
416
+ end.should_be_updated
417
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
418
+ yum_package "chef_rpm" do
419
+ options default_options
420
+ version "1*"
421
+ action :install
422
+ end.should_not_be_updated
227
423
  end
228
424
 
229
425
  it "matches the vr" do
230
426
  flush_cache
231
- yum_package.package_name("chef_rpm")
232
- yum_package.version("1.10-1")
233
- yum_package.run_action(:install)
234
- expect(yum_package.updated_by_last_action?).to be true
235
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
427
+ yum_package "chef_rpm" do
428
+ options default_options
429
+ version "1.10-1"
430
+ action :install
431
+ end.should_be_updated
432
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
433
+ yum_package "chef_rpm" do
434
+ options default_options
435
+ version "1.10-1"
436
+ action :install
437
+ end.should_not_be_updated
236
438
  end
237
439
 
238
440
  it "matches the evr" do
239
441
  flush_cache
240
- yum_package.package_name("chef_rpm")
241
- yum_package.version("0:1.10-1")
242
- yum_package.run_action(:install)
243
- expect(yum_package.updated_by_last_action?).to be true
244
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
442
+ yum_package "chef_rpm" do
443
+ options default_options
444
+ version "0:1.10-1"
445
+ action :install
446
+ end.should_be_updated
447
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
448
+ yum_package "chef_rpm" do
449
+ options default_options
450
+ version "0:1.10-1"
451
+ action :install
452
+ end.should_not_be_updated
245
453
  end
246
454
 
247
455
  it "matches with a vr glob" do
248
- pending "doesn't work on command line either"
249
456
  flush_cache
250
- yum_package.package_name("chef_rpm")
251
- yum_package.version("1.10-1*")
252
- yum_package.run_action(:install)
253
- expect(yum_package.updated_by_last_action?).to be true
254
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
457
+ yum_package "chef_rpm" do
458
+ options default_options
459
+ version "1.10-1*"
460
+ action :install
461
+ end.should_be_updated
462
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
463
+ yum_package "chef_rpm" do
464
+ options default_options
465
+ version "1.10-1*"
466
+ action :install
467
+ end.should_not_be_updated
255
468
  end
256
469
 
257
470
  it "matches with an evr glob" do
258
- pending "doesn't work on command line either"
259
471
  flush_cache
260
- yum_package.package_name("chef_rpm")
261
- yum_package.version("0:1.10-1*")
262
- yum_package.run_action(:install)
263
- expect(yum_package.updated_by_last_action?).to be true
264
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
472
+ yum_package "chef_rpm" do
473
+ options default_options
474
+ version "0:1.10-1*"
475
+ action :install
476
+ end.should_be_updated
477
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
478
+ yum_package "chef_rpm" do
479
+ options default_options
480
+ version "0:1.10-1*"
481
+ action :install
482
+ end.should_not_be_updated
265
483
  end
266
484
  end
267
485
 
268
486
  context "downgrades" do
269
- it "downgrades the package when allow_downgrade" do
487
+
488
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
489
+ # python helper periodically before every top level context to get more FDs.
490
+ before(:all) do
491
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
492
+ end
493
+
494
+ it "downgrades the package when allow_downgrade is true" do
270
495
  flush_cache
271
496
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
272
- yum_package.package_name("chef_rpm")
273
- yum_package.allow_downgrade true
274
- yum_package.version("1.2-1")
275
- yum_package.run_action(:install)
276
- expect(yum_package.updated_by_last_action?).to be true
277
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
497
+ yum_package "chef_rpm" do
498
+ options default_options
499
+ version "1.2-1"
500
+ action :install
501
+ end.should_be_updated
502
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
503
+ yum_package "chef_rpm" do
504
+ options default_options
505
+ version "1.2-1"
506
+ action :install
507
+ end.should_not_be_updated
508
+ end
509
+
510
+ it "does not downgrade the package when allow_downgrade is false" do
511
+ flush_cache
512
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
513
+ yum_package "chef_rpm" do
514
+ options default_options
515
+ allow_downgrade false
516
+ version "1.2-1"
517
+ action :install
518
+ end.should_not_be_updated
519
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
278
520
  end
279
521
  end
280
522
 
281
523
  context "with arches", :intel_64bit do
524
+
525
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
526
+ # python helper periodically before every top level context to get more FDs.
527
+ before(:all) do
528
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
529
+ end
530
+
282
531
  it "installs with 64-bit arch in the name" do
283
532
  flush_cache
284
- yum_package.package_name("chef_rpm.#{pkg_arch}")
285
- yum_package.run_action(:install)
286
- expect(yum_package.updated_by_last_action?).to be true
287
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
533
+ yum_package "chef_rpm.#{pkg_arch}" do
534
+ options default_options
535
+ action :install
536
+ end.should_be_updated
537
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
538
+ yum_package "chef_rpm.#{pkg_arch}" do
539
+ options default_options
540
+ action :install
541
+ end.should_not_be_updated
288
542
  end
289
543
 
290
544
  it "installs with 32-bit arch in the name" do
291
545
  flush_cache
292
- yum_package.package_name("chef_rpm.i686")
293
- yum_package.run_action(:install)
294
- expect(yum_package.updated_by_last_action?).to be true
295
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
546
+ yum_package "chef_rpm.i686" do
547
+ options default_options
548
+ action :install
549
+ end.should_be_updated
550
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
551
+ yum_package "chef_rpm.i686" do
552
+ options default_options
553
+ action :install
554
+ end.should_not_be_updated
296
555
  end
297
556
 
298
557
  it "installs with 64-bit arch in the property" do
299
558
  flush_cache
300
- yum_package.package_name("chef_rpm")
301
- yum_package.arch((pkg_arch).to_s)
302
- yum_package.run_action(:install)
303
- expect(yum_package.updated_by_last_action?).to be true
304
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
559
+ yum_package "chef_rpm" do
560
+ options default_options
561
+ arch pkg_arch
562
+ action :install
563
+ end.should_be_updated
564
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
565
+ yum_package "chef_rpm" do
566
+ options default_options
567
+ arch pkg_arch
568
+ action :install
569
+ end.should_not_be_updated
305
570
  end
306
571
 
307
572
  it "installs with 32-bit arch in the property" do
308
573
  flush_cache
309
- yum_package.package_name("chef_rpm")
310
- yum_package.arch("i686")
311
- yum_package.run_action(:install)
312
- expect(yum_package.updated_by_last_action?).to be true
313
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
574
+ yum_package "chef_rpm" do
575
+ options default_options
576
+ arch "i686"
577
+ action :install
578
+ end.should_be_updated
579
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
580
+ yum_package "chef_rpm" do
581
+ options default_options
582
+ arch "i686"
583
+ action :install
584
+ end.should_not_be_updated
585
+ end
586
+
587
+ it "installs when the 32-bit arch is in the name and the version is in the property" do
588
+ flush_cache
589
+ yum_package "chef_rpm.i686" do
590
+ options default_options
591
+ version "1.10-1"
592
+ action :install
593
+ end.should_be_updated
594
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
595
+ yum_package "chef_rpm.i686" do
596
+ options default_options
597
+ version "1.10-1"
598
+ action :install
599
+ end.should_not_be_updated
600
+ end
601
+
602
+ it "installs when the 64-bit arch is in the name and the version is in the property" do
603
+ flush_cache
604
+ yum_package "chef_rpm.#{pkg_arch}" do
605
+ options default_options
606
+ version "1.10-1"
607
+ action :install
608
+ end.should_be_updated
609
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
610
+ yum_package "chef_rpm.#{pkg_arch}" do
611
+ options default_options
612
+ version "1.10-1"
613
+ action :install
614
+ end.should_not_be_updated
314
615
  end
315
616
  end
316
617
 
317
618
  context "with constraints" do
619
+
620
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
621
+ # python helper periodically before every top level context to get more FDs.
622
+ before(:all) do
623
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
624
+ end
625
+
318
626
  it "with nothing installed, it installs the latest version" do
319
627
  flush_cache
320
- yum_package.package_name("chef_rpm >= 1.2")
321
- yum_package.run_action(:install)
322
- expect(yum_package.updated_by_last_action?).to be true
323
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
628
+ yum_package "chef_rpm >= 1.2" do
629
+ options default_options
630
+ action :install
631
+ end.should_be_updated
632
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
633
+ yum_package "chef_rpm >= 1.2" do
634
+ options default_options
635
+ action :install
636
+ end.should_not_be_updated
324
637
  end
325
638
 
326
639
  it "when it is met, it does nothing" do
327
640
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
328
- yum_package.package_name("chef_rpm >= 1.2")
329
- yum_package.run_action(:install)
330
- expect(yum_package.updated_by_last_action?).to be false
331
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
641
+ yum_package "chef_rpm >= 1.2" do
642
+ options default_options
643
+ action :install
644
+ end.should_not_be_updated
645
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
332
646
  end
333
647
 
334
648
  it "when it is met, it does nothing" do
335
649
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
336
- yum_package.package_name("chef_rpm >= 1.2")
337
- yum_package.run_action(:install)
338
- expect(yum_package.updated_by_last_action?).to be false
339
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
650
+ yum_package "chef_rpm >= 1.2" do
651
+ options default_options
652
+ action :install
653
+ end.should_not_be_updated
654
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
340
655
  end
341
656
 
342
- it "with nothing intalled, it installs the latest version" do
657
+ it "with nothing installed, it installs the latest version" do
343
658
  flush_cache
344
- yum_package.package_name("chef_rpm > 1.2")
345
- yum_package.run_action(:install)
346
- expect(yum_package.updated_by_last_action?).to be true
347
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
659
+ yum_package "chef_rpm > 1.2" do
660
+ options default_options
661
+ action :install
662
+ end.should_be_updated
663
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
664
+ yum_package "chef_rpm > 1.2" do
665
+ options default_options
666
+ action :install
667
+ end.should_not_be_updated
348
668
  end
349
669
 
350
670
  it "when it is not met by an installed rpm, it upgrades" do
351
671
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
352
- yum_package.package_name("chef_rpm > 1.2")
353
- yum_package.run_action(:install)
354
- expect(yum_package.updated_by_last_action?).to be true
355
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
672
+ yum_package "chef_rpm > 1.2" do
673
+ options default_options
674
+ action :install
675
+ end.should_be_updated
676
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
677
+ yum_package "chef_rpm > 1.2" do
678
+ options default_options
679
+ action :install
680
+ end.should_not_be_updated
356
681
  end
357
682
 
358
683
  it "with an equality constraint, when it is not met by an installed rpm, it upgrades" do
359
684
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
360
- yum_package.package_name("chef_rpm = 1.10")
361
- yum_package.run_action(:install)
362
- expect(yum_package.updated_by_last_action?).to be true
363
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
685
+ yum_package "chef_rpm = 1.10" do
686
+ options default_options
687
+ action :install
688
+ end.should_be_updated
689
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
690
+ yum_package "chef_rpm = 1.10" do
691
+ options default_options
692
+ action :install
693
+ end.should_not_be_updated
364
694
  end
365
695
 
366
696
  it "with an equality constraint, when it is met by an installed rpm, it does nothing" do
367
697
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
368
- yum_package.package_name("chef_rpm = 1.2")
369
- yum_package.run_action(:install)
370
- expect(yum_package.updated_by_last_action?).to be false
371
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
698
+ yum_package "chef_rpm = 1.2" do
699
+ options default_options
700
+ action :install
701
+ end.should_not_be_updated
702
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
372
703
  end
373
704
 
374
705
  it "when it is met by an installed rpm, it does nothing" do
375
706
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
376
- yum_package.package_name("chef_rpm > 1.2")
377
- yum_package.run_action(:install)
378
- expect(yum_package.updated_by_last_action?).to be false
379
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
707
+ yum_package "chef_rpm > 1.2" do
708
+ options default_options
709
+ action :install
710
+ end.should_not_be_updated
711
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
380
712
  end
381
713
 
382
- it "when there is no solution to the contraint" do
714
+ it "when there is no solution to the constraint" do
383
715
  flush_cache
384
- yum_package.package_name("chef_rpm > 2.0")
385
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
716
+ expect {
717
+ yum_package "chef_rpm > 2.0"
718
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
386
719
  end
387
720
 
388
- it "when there is no solution to the contraint but an rpm is preinstalled" do
721
+ it "when there is no solution to the constraint but an rpm is preinstalled" do
389
722
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
390
- yum_package.package_name("chef_rpm > 2.0")
391
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
723
+ expect {
724
+ yum_package "chef_rpm > 2.0"
725
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
392
726
  end
393
727
 
394
728
  it "with a less than constraint, when nothing is installed, it installs" do
395
729
  flush_cache
396
- yum_package.allow_downgrade true
397
- yum_package.package_name("chef_rpm < 1.10")
398
- yum_package.run_action(:install)
399
- expect(yum_package.updated_by_last_action?).to be true
400
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
730
+ yum_package "chef_rpm < 1.10" do
731
+ options default_options
732
+ action :install
733
+ end.should_be_updated
734
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
735
+ yum_package "chef_rpm < 1.10" do
736
+ options default_options
737
+ action :install
738
+ end.should_not_be_updated
401
739
  end
402
740
 
403
741
  it "with a less than constraint, when the install version matches, it does nothing" do
404
742
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
405
- yum_package.allow_downgrade true
406
- yum_package.package_name("chef_rpm < 1.10")
407
- yum_package.run_action(:install)
408
- expect(yum_package.updated_by_last_action?).to be false
409
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
743
+ yum_package "chef_rpm < 1.10" do
744
+ options default_options
745
+ action :install
746
+ end.should_not_be_updated
747
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
410
748
  end
411
749
 
750
+ # literally no idea why this fails on our rhel6 tester and only that one box and only this one test
412
751
  it "with a less than constraint, when the install version fails, it should downgrade" do
413
752
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
414
- yum_package.allow_downgrade true
415
- yum_package.package_name("chef_rpm < 1.10")
416
- yum_package.run_action(:install)
417
- expect(yum_package.updated_by_last_action?).to be true
418
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
753
+ yum_package "chef_rpm < 1.10" do
754
+ options default_options
755
+ action :install
756
+ end.should_be_updated
757
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
758
+ yum_package "chef_rpm < 1.10" do
759
+ options default_options
760
+ action :install
761
+ end.should_not_be_updated
762
+ end
763
+
764
+ it "works with constraints in the version property" do
765
+ flush_cache
766
+ yum_package "chef_rpm" do
767
+ version ">= 1.10"
768
+ options default_options
769
+ action :install
770
+ end.should_be_updated
771
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
772
+ yum_package "chef_rpm" do
773
+ version ">= 1.10"
774
+ options default_options
775
+ action :install
776
+ end.should_not_be_updated
419
777
  end
420
778
  end
421
779
 
422
780
  context "with source arguments" do
781
+
782
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
783
+ # python helper periodically before every top level context to get more FDs.
784
+ before(:all) do
785
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
786
+ end
787
+
423
788
  it "raises an exception when the package does not exist" do
424
789
  flush_cache
425
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm")
426
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
790
+ expect {
791
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm"
792
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
427
793
  end
428
794
 
429
795
  it "does not raise a hard exception in why-run mode when the package does not exist" do
430
796
  Chef::Config[:why_run] = true
431
797
  flush_cache
432
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm")
433
- yum_package.run_action(:install)
434
- expect { yum_package.run_action(:install) }.not_to raise_error
798
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/this-file-better-not-exist.rpm" do
799
+ options default_options
800
+ action :install
801
+ end
435
802
  end
436
803
 
437
804
  it "installs the package when using the source argument" do
438
805
  flush_cache
439
- yum_package.name "something"
440
- yum_package.package_name "somethingelse"
441
- yum_package.source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
442
- yum_package.run_action(:install)
443
- expect(yum_package.updated_by_last_action?).to be true
444
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
806
+ yum_package "something" do
807
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
808
+ options default_options
809
+ package_name "somethingelse"
810
+ name "something"
811
+ action :install
812
+ end.should_be_updated
813
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
814
+ yum_package "something" do
815
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
816
+ options default_options
817
+ package_name "somethingelse"
818
+ name "something"
819
+ action :install
820
+ end.should_not_be_updated
445
821
  end
446
822
 
447
823
  it "installs the package when the name is a path to a file" do
448
824
  flush_cache
449
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
450
- yum_package.run_action(:install)
451
- expect(yum_package.updated_by_last_action?).to be true
452
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
453
- end
454
-
455
- it "downgrade on a local file is ignored when allow_downgrade is false" do
456
- preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
457
- yum_package.allow_downgrade false
458
- yum_package.version "1.2-1"
459
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
460
- yum_package.run_action(:install)
461
- expect(yum_package.updated_by_last_action?).to be false
462
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
825
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
826
+ options default_options
827
+ action :install
828
+ end.should_be_updated
829
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
830
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
831
+ options default_options
832
+ action :install
833
+ end.should_not_be_updated
463
834
  end
464
835
 
465
836
  it "downgrade on a local file with allow_downgrade true works" do
466
837
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
467
- yum_package.version "1.2-1"
468
- yum_package.allow_downgrade true
469
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
470
- yum_package.run_action(:install)
471
- expect(yum_package.updated_by_last_action?).to be true
472
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
838
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
839
+ options default_options
840
+ version "1.2-1"
841
+ action :install
842
+ end.should_be_updated
843
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
844
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
845
+ options default_options
846
+ version "1.2-1"
847
+ action :install
848
+ end.should_not_be_updated
849
+ end
850
+
851
+ it "downgrade on a local file with allow_downgrade false does not downgrade" do
852
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
853
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
854
+ options default_options
855
+ allow_downgrade false
856
+ version "1.2-1"
857
+ action :install
858
+ end.should_not_be_updated
859
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
473
860
  end
474
861
 
475
862
  it "does not downgrade the package with :install" do
476
863
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
477
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
478
- yum_package.run_action(:install)
479
- expect(yum_package.updated_by_last_action?).to be false
480
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
864
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
865
+ options default_options
866
+ action :install
867
+ end.should_not_be_updated
868
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
481
869
  end
482
870
 
483
871
  it "does not upgrade the package with :install" do
484
872
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
485
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm")
486
- yum_package.run_action(:install)
487
- expect(yum_package.updated_by_last_action?).to be false
488
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
873
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm" do
874
+ options default_options
875
+ action :install
876
+ end.should_not_be_updated
877
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
489
878
  end
490
879
 
491
880
  it "is idempotent when the package is already installed" do
492
881
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
493
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
494
- yum_package.run_action(:install)
495
- expect(yum_package.updated_by_last_action?).to be false
496
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
882
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
883
+ options default_options
884
+ action :install
885
+ end.should_not_be_updated
886
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
497
887
  end
498
888
 
499
889
  it "is idempotent when the package is already installed and there is a version string" do
500
890
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
501
- yum_package.version "1.2-1"
502
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
503
- yum_package.run_action(:install)
504
- expect(yum_package.updated_by_last_action?).to be false
505
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
506
- end
507
-
508
- it "is idempotent when the package is already installed and there is a version string with arch" do
509
- preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
510
- yum_package.version "1.2-1.#{pkg_arch}"
511
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
512
- yum_package.run_action(:install)
513
- expect(yum_package.updated_by_last_action?).to be false
514
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
891
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
892
+ options default_options
893
+ version "1.2-1"
894
+ action :install
895
+ end.should_not_be_updated
896
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
515
897
  end
516
898
  end
517
899
 
518
900
  context "with no available version" do
901
+
902
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
903
+ # python helper periodically before every top level context to get more FDs.
904
+ before(:all) do
905
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
906
+ end
907
+
519
908
  it "works when a package is installed" do
520
909
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
521
910
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
522
- yum_package.run_action(:install)
523
- expect(yum_package.updated_by_last_action?).to be false
524
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
911
+ yum_package "chef_rpm" do
912
+ options "--nogpgcheck"
913
+ action :install
914
+ end.should_not_be_updated
915
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
525
916
  end
526
917
 
527
918
  it "works with a local source" do
528
919
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
529
920
  flush_cache
530
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
531
- yum_package.run_action(:install)
532
- expect(yum_package.updated_by_last_action?).to be true
533
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
921
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
922
+ options "--nogpgcheck"
923
+ action :install
924
+ end.should_be_updated
925
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
926
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
927
+ options "--nogpgcheck"
928
+ action :install
929
+ end.should_not_be_updated
534
930
  end
535
931
  end
536
932
 
537
933
  context "multipackage with arches", :intel_64bit do
934
+
935
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
936
+ # python helper periodically before every top level context to get more FDs.
937
+ before(:all) do
938
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
939
+ end
940
+
538
941
  it "installs two rpms" do
539
942
  flush_cache
540
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
541
- yum_package.run_action(:install)
542
- expect(yum_package.updated_by_last_action?).to be true
543
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
544
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
943
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
944
+ options default_options
945
+ action :install
946
+ end.should_be_updated
947
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
948
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
949
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
950
+ options default_options
951
+ action :install
952
+ end.should_not_be_updated
545
953
  end
546
954
 
547
955
  it "does nothing if both are installed" do
548
956
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
549
957
  flush_cache
550
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
551
- yum_package.run_action(:install)
552
- expect(yum_package.updated_by_last_action?).to be false
958
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
959
+ options default_options
960
+ action :install
961
+ end.should_not_be_updated
553
962
  end
554
963
 
555
964
  it "installs the second rpm if the first is installed" do
556
965
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
557
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
558
- yum_package.run_action(:install)
559
- expect(yum_package.updated_by_last_action?).to be true
560
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
561
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
966
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
967
+ options default_options
968
+ action :install
969
+ end.should_be_updated
970
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
971
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
972
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
973
+ options default_options
974
+ action :install
975
+ end.should_not_be_updated
562
976
  end
563
977
 
564
978
  it "installs the first rpm if the second is installed" do
565
979
  preinstall("chef_rpm-1.10-1.i686.rpm")
566
- yum_package.package_name([ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] )
567
- yum_package.run_action(:install)
568
- expect(yum_package.updated_by_last_action?).to be true
569
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
570
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
980
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
981
+ options default_options
982
+ action :install
983
+ end.should_be_updated
984
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
985
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
986
+ yum_package [ "chef_rpm.#{pkg_arch}", "chef_rpm.i686" ] do
987
+ options default_options
988
+ action :install
989
+ end.should_not_be_updated
571
990
  end
572
991
 
573
992
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
574
993
  it "installs two rpms with multi-arch" do
575
994
  flush_cache
576
- yum_package.package_name(%w{chef_rpm chef_rpm} )
577
- yum_package.arch([pkg_arch, "i686"])
578
- yum_package.run_action(:install)
579
- expect(yum_package.updated_by_last_action?).to be true
580
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
581
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
995
+ yum_package %w{chef_rpm chef_rpm} do
996
+ options default_options
997
+ arch [pkg_arch, "i686"]
998
+ action :install
999
+ end.should_be_updated
1000
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
1001
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
1002
+ yum_package %w{chef_rpm chef_rpm} do
1003
+ options default_options
1004
+ arch [pkg_arch, "i686"]
1005
+ action :install
1006
+ end.should_not_be_updated
582
1007
  end
583
1008
 
584
1009
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
585
1010
  it "installs the second rpm if the first is installed (muti-arch)" do
586
1011
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
587
- yum_package.package_name(%w{chef_rpm chef_rpm} )
588
- yum_package.arch([pkg_arch, "i686"])
589
- yum_package.run_action(:install)
590
- expect(yum_package.updated_by_last_action?).to be true
591
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
592
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
1012
+ yum_package %w{chef_rpm chef_rpm} do
1013
+ options default_options
1014
+ arch [pkg_arch, "i686"]
1015
+ action :install
1016
+ end.should_be_updated
1017
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
1018
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
1019
+ yum_package %w{chef_rpm chef_rpm} do
1020
+ options default_options
1021
+ action :install
1022
+ end.should_not_be_updated
593
1023
  end
594
1024
 
595
1025
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
596
1026
  it "installs the first rpm if the second is installed (muti-arch)" do
597
1027
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
598
- yum_package.package_name(%w{chef_rpm chef_rpm} )
599
- yum_package.arch([pkg_arch, "i686"])
600
- yum_package.run_action(:install)
601
- expect(yum_package.updated_by_last_action?).to be true
602
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.#{pkg_arch}$/)
603
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match(/^chef_rpm-1.10-1.i686$/)
1028
+ yum_package %w{chef_rpm chef_rpm} do
1029
+ options default_options
1030
+ arch [pkg_arch, "i686"]
1031
+ action :install
1032
+ end.should_be_updated
1033
+ expect_matching_installed_version(/^chef_rpm-1.10-1.#{pkg_arch}$/)
1034
+ expect_matching_installed_version(/^chef_rpm-1.10-1.i686$/)
1035
+ yum_package %w{chef_rpm chef_rpm} do
1036
+ options default_options
1037
+ action :install
1038
+ end.should_not_be_updated
604
1039
  end
605
1040
 
606
1041
  # unlikely to work consistently correct, okay to deprecate the arch-array in favor of the arch in the name
607
1042
  it "does nothing if both are installed (muti-arch)" do
608
1043
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
609
- yum_package.package_name(%w{chef_rpm chef_rpm} )
610
- yum_package.arch([pkg_arch, "i686"])
611
- yum_package.run_action(:install)
612
- expect(yum_package.updated_by_last_action?).to be false
1044
+ yum_package %w{chef_rpm chef_rpm} do
1045
+ options default_options
1046
+ arch [pkg_arch, "i686"]
1047
+ action :install
1048
+ end.should_not_be_updated
613
1049
  end
614
1050
  end
615
1051
 
616
1052
  context "repo controls" do
1053
+
1054
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
1055
+ # python helper periodically before every top level context to get more FDs.
1056
+ before(:all) do
1057
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
1058
+ end
1059
+
617
1060
  it "should fail with the repo disabled" do
618
1061
  flush_cache
619
- yum_package.options("--disablerepo=chef-yum-localtesting")
620
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
1062
+ expect {
1063
+ yum_package "chef_rpm" do
1064
+ options "--nogpgcheck --disablerepo=chef-yum-localtesting"
1065
+ action :install
1066
+ end
1067
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
621
1068
  end
622
1069
 
623
1070
  it "should work with disablerepo first" do
624
1071
  flush_cache
625
- yum_package.options(["--disablerepo=*", "--enablerepo=chef-yum-localtesting"])
626
- yum_package.run_action(:install)
627
- expect(yum_package.updated_by_last_action?).to be true
628
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1072
+ yum_package "chef_rpm" do
1073
+ options ["--nogpgcheck", "--disablerepo=*", "--enablerepo=chef-yum-localtesting"]
1074
+ action :install
1075
+ end.should_be_updated
1076
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1077
+ yum_package "chef_rpm" do
1078
+ options ["--nogpgcheck", "--disablerepo=*", "--enablerepo=chef-yum-localtesting"]
1079
+ action :install
1080
+ end.should_not_be_updated
629
1081
  end
630
1082
 
631
1083
  it "should work to enable a disabled repo" do
632
1084
  shell_out!("yum-config-manager --disable chef-yum-localtesting")
633
1085
  flush_cache
634
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
1086
+ expect {
1087
+ yum_package "chef_rpm" do
1088
+ options "--nogpgcheck"
1089
+ action :install
1090
+ end
1091
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
635
1092
  flush_cache
636
- yum_package.options("--enablerepo=chef-yum-localtesting")
637
- yum_package.run_action(:install)
638
- expect(yum_package.updated_by_last_action?).to be true
639
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1093
+ yum_package "chef_rpm" do
1094
+ options "--nogpgcheck --enablerepo=chef-yum-localtesting"
1095
+ action :install
1096
+ end.should_be_updated
1097
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1098
+ yum_package "chef_rpm" do
1099
+ options "--nogpgcheck --enablerepo=chef-yum-localtesting"
1100
+ action :install
1101
+ end.should_not_be_updated
640
1102
  end
641
1103
 
642
1104
  it "should work to disable a repo" do
643
1105
  flush_cache
644
- yum_package.options("--disablerepo=chef-yum-localtesting --enablerepo=chef-yum-empty")
645
- expect { yum_package.run_action(:install) }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
1106
+ expect {
1107
+ yum_package "chef_rpm" do
1108
+ options "--disablerepo=chef-yum-localtesting --enablerepo=chef-yum-empty"
1109
+ action :install
1110
+ end
1111
+ }.to raise_error(Chef::Exceptions::Package, /No candidate version available/)
646
1112
  end
647
1113
 
648
1114
  it "when an idempotent install action is run, does not leave repos disabled" do
@@ -652,65 +1118,125 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
652
1118
  # accomplishes both those goals (it would be easier if we had other rpms in this repo, but with
653
1119
  # one rpm we need to do this).
654
1120
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
655
- yum_package.options("--disablerepo=chef-yum-localtesting")
656
- yum_package.run_action(:upgrade)
657
- expect(yum_package.updated_by_last_action?).to be false
658
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1121
+ yum_package "chef_rpm" do
1122
+ options "--nogpgcheck --disablerepo=chef-yum-localtesting"
1123
+ action :upgrade
1124
+ end.should_not_be_updated
1125
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
659
1126
  # now we're still using the same cache in the yum_helper.py cache and we test to see if the
660
1127
  # repo that we temporarily disabled is enabled on this pass.
661
- yum_package.package_name("chef_rpm-1.10-1.#{pkg_arch}")
662
- yum_package.options(nil)
663
- yum_package.run_action(:install)
664
- expect(yum_package.updated_by_last_action?).to be true
665
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1128
+ yum_package "chef_rpm-1.10-1.#{pkg_arch}" do
1129
+ options "--nogpgcheck"
1130
+ action :install
1131
+ end.should_be_updated
1132
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1133
+ yum_package "chef_rpm-1.10-1.#{pkg_arch}" do
1134
+ options "--nogpgcheck"
1135
+ action :install
1136
+ end.should_not_be_updated
666
1137
  end
667
1138
  end
668
1139
  end
669
1140
 
670
1141
  describe ":upgrade" do
671
1142
 
1143
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
1144
+ # python helper periodically before every top level context to get more FDs.
1145
+ before(:all) do
1146
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
1147
+ end
1148
+
1149
+ context "downgrades" do
1150
+ it "just works by default" do
1151
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1152
+ yum_package "chef_rpm" do
1153
+ options default_options
1154
+ version "1.2"
1155
+ action :install
1156
+ end.should_be_updated
1157
+ expect(shell_out("rpm -q chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}")
1158
+ yum_package "chef_rpm" do
1159
+ options default_options
1160
+ version "1.2"
1161
+ action :install
1162
+ end.should_not_be_updated
1163
+ end
1164
+ end
1165
+
672
1166
  context "with source arguments" do
673
1167
  it "installs the package when using the source argument" do
674
1168
  flush_cache
675
- yum_package.name "something"
676
- yum_package.package_name "somethingelse"
677
- yum_package.source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
678
- yum_package.run_action(:upgrade)
679
- expect(yum_package.updated_by_last_action?).to be true
680
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1169
+ yum_package "something" do
1170
+ options default_options
1171
+ package_name "somethingelse"
1172
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
1173
+ action :upgrade
1174
+ end.should_be_updated
1175
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1176
+ yum_package "something" do
1177
+ options default_options
1178
+ package_name "somethingelse"
1179
+ source("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
1180
+ action :upgrade
1181
+ end.should_not_be_updated
681
1182
  end
682
1183
 
683
1184
  it "installs the package when the name is a path to a file" do
684
1185
  flush_cache
685
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
686
- yum_package.run_action(:upgrade)
687
- expect(yum_package.updated_by_last_action?).to be true
688
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1186
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1187
+ options default_options
1188
+ action :upgrade
1189
+ end.should_be_updated
1190
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1191
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1192
+ options default_options
1193
+ action :upgrade
1194
+ end.should_not_be_updated
689
1195
  end
690
1196
 
691
1197
  it "downgrades the package when allow_downgrade is true" do
692
1198
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
693
- yum_package.allow_downgrade true
694
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
695
- yum_package.run_action(:upgrade)
696
- expect(yum_package.updated_by_last_action?).to be true
697
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1199
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1200
+ options default_options
1201
+ action :upgrade
1202
+ end.should_be_updated
1203
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1204
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1205
+ options default_options
1206
+ action :upgrade
1207
+ end.should_not_be_updated
1208
+ end
1209
+
1210
+ it "does not downgrade the package when allow_downgrade is false" do
1211
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1212
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1213
+ options default_options
1214
+ allow_downgrade false
1215
+ action :upgrade
1216
+ end.should_not_be_updated
1217
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
698
1218
  end
699
1219
 
700
1220
  it "upgrades the package" do
701
1221
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
702
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm")
703
- yum_package.run_action(:upgrade)
704
- expect(yum_package.updated_by_last_action?).to be true
705
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1222
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm" do
1223
+ options default_options
1224
+ action :upgrade
1225
+ end.should_be_updated
1226
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1227
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.10-1.#{pkg_arch}.rpm" do
1228
+ options default_options
1229
+ action :upgrade
1230
+ end.should_not_be_updated
706
1231
  end
707
1232
 
708
1233
  it "is idempotent when the package is already installed" do
709
1234
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
710
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
711
- yum_package.run_action(:upgrade)
712
- expect(yum_package.updated_by_last_action?).to be false
713
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1235
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1236
+ options default_options
1237
+ action :upgrade
1238
+ end.should_not_be_updated
1239
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
714
1240
  end
715
1241
  end
716
1242
 
@@ -718,204 +1244,389 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
718
1244
  it "works when a package is installed" do
719
1245
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
720
1246
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
721
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
722
- yum_package.run_action(:upgrade)
723
- expect(yum_package.updated_by_last_action?).to be false
724
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1247
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1248
+ options "--nogpgcheck"
1249
+ action :upgrade
1250
+ end.should_not_be_updated
1251
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
725
1252
  end
726
1253
 
727
1254
  it "works with a local source" do
728
1255
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
729
1256
  flush_cache
730
- yum_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm")
731
- yum_package.run_action(:upgrade)
732
- expect(yum_package.updated_by_last_action?).to be true
733
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1257
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1258
+ options "--nogpgcheck"
1259
+ action :upgrade
1260
+ end.should_be_updated
1261
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1262
+ yum_package "#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.#{pkg_arch}.rpm" do
1263
+ options "--nogpgcheck"
1264
+ action :upgrade
1265
+ end.should_not_be_updated
734
1266
  end
735
1267
  end
736
1268
 
737
1269
  context "version pinning" do
738
- it "with an equality pin in the name it upgrades a prior package" do
1270
+ it "with a full version pin it installs a later package" do
1271
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1272
+ yum_package "chef_rpm" do
1273
+ options default_options
1274
+ version "1.10-1"
1275
+ action :upgrade
1276
+ end.should_be_updated
1277
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1278
+ yum_package "chef_rpm" do
1279
+ options default_options
1280
+ version "1.10-1"
1281
+ action :upgrade
1282
+ end.should_not_be_updated
1283
+ end
1284
+
1285
+ it "with a full version pin in the name it downgrades the package" do
1286
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1287
+ yum_package "chef_rpm" do
1288
+ options default_options
1289
+ version "1.2-1"
1290
+ action :upgrade
1291
+ end.should_be_updated
1292
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1293
+ yum_package "chef_rpm" do
1294
+ options default_options
1295
+ version "1.2-1"
1296
+ action :upgrade
1297
+ end.should_not_be_updated
1298
+ end
1299
+
1300
+ it "with a partial (no release) version pin it installs a later package" do
1301
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1302
+ yum_package "chef_rpm" do
1303
+ options default_options
1304
+ version "1.10"
1305
+ action :upgrade
1306
+ end.should_be_updated
1307
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1308
+ yum_package "chef_rpm" do
1309
+ options default_options
1310
+ version "1.10"
1311
+ action :upgrade
1312
+ end.should_not_be_updated
1313
+ end
1314
+
1315
+ it "with a partial (no release) version pin in the name it downgrades the package" do
1316
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1317
+ yum_package "chef_rpm" do
1318
+ options default_options
1319
+ version("1.2")
1320
+ action :upgrade
1321
+ end.should_be_updated
1322
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1323
+ yum_package "chef_rpm" do
1324
+ options default_options
1325
+ version("1.2")
1326
+ action :upgrade
1327
+ end.should_not_be_updated
1328
+ end
1329
+
1330
+ it "with a full version pin it installs a later package" do
739
1331
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
740
- yum_package.package_name("chef_rpm-1.10")
741
- yum_package.run_action(:upgrade)
742
- expect(yum_package.updated_by_last_action?).to be true
743
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1332
+ yum_package "chef_rpm-1.10-1" do
1333
+ options default_options
1334
+ action :upgrade
1335
+ end.should_be_updated
1336
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1337
+ yum_package "chef_rpm-1.10-1" do
1338
+ options default_options
1339
+ action :upgrade
1340
+ end.should_not_be_updated
1341
+ end
1342
+
1343
+ it "with a full version pin in the name it downgrades the package" do
1344
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1345
+ yum_package "chef_rpm-1.2-1" do
1346
+ options default_options
1347
+ action :upgrade
1348
+ end.should_be_updated
1349
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1350
+ yum_package "chef_rpm-1.2-1" do
1351
+ options default_options
1352
+ action :upgrade
1353
+ end.should_not_be_updated
1354
+ end
1355
+
1356
+ it "with a partial (no release) version pin it installs a later package" do
1357
+ preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
1358
+ yum_package "chef_rpm-1.10" do
1359
+ options default_options
1360
+ action :upgrade
1361
+ end.should_be_updated
1362
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1363
+ yum_package "chef_rpm-1.10" do
1364
+ options default_options
1365
+ action :upgrade
1366
+ end.should_not_be_updated
1367
+ end
1368
+
1369
+ it "with a partial (no release) version pin in the name it downgrades the package" do
1370
+ preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
1371
+ yum_package "chef_rpm-1.2" do
1372
+ options default_options
1373
+ action :upgrade
1374
+ end.should_be_updated
1375
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1376
+ yum_package "chef_rpm-1.2" do
1377
+ options default_options
1378
+ action :upgrade
1379
+ end.should_not_be_updated
744
1380
  end
745
1381
 
746
1382
  it "with a prco equality pin in the name it upgrades a prior package" do
747
1383
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
748
- yum_package.package_name("chef_rpm == 1.10")
749
- yum_package.run_action(:upgrade)
750
- expect(yum_package.updated_by_last_action?).to be true
751
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
752
- end
753
-
754
- it "with an equality pin in the name it downgrades a later package" do
755
- preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
756
- yum_package.allow_downgrade true
757
- yum_package.package_name("chef_rpm-1.2")
758
- yum_package.run_action(:upgrade)
759
- expect(yum_package.updated_by_last_action?).to be true
760
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1384
+ yum_package "chef_rpm = 1.10" do
1385
+ options default_options
1386
+ action :upgrade
1387
+ end.should_be_updated
1388
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1389
+ yum_package "chef_rpm = 1.10" do
1390
+ options default_options
1391
+ action :upgrade
1392
+ end.should_not_be_updated
761
1393
  end
762
1394
 
763
1395
  it "with a prco equality pin in the name it downgrades a later package" do
764
1396
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
765
- yum_package.allow_downgrade true
766
- yum_package.package_name("chef_rpm == 1.2")
767
- yum_package.run_action(:upgrade)
768
- expect(yum_package.updated_by_last_action?).to be true
769
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1397
+ yum_package "chef_rpm = 1.2" do
1398
+ options default_options
1399
+ action :upgrade
1400
+ end.should_be_updated
1401
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1402
+ yum_package "chef_rpm = 1.2" do
1403
+ options default_options
1404
+ action :upgrade
1405
+ end.should_not_be_updated
770
1406
  end
771
1407
 
772
1408
  it "with a > pin in the name and no rpm installed it installs" do
773
1409
  flush_cache
774
- yum_package.package_name("chef_rpm > 1.2")
775
- yum_package.run_action(:upgrade)
776
- expect(yum_package.updated_by_last_action?).to be true
777
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1410
+ yum_package "chef_rpm > 1.2" do
1411
+ options default_options
1412
+ action :upgrade
1413
+ end.should_be_updated
1414
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1415
+ yum_package "chef_rpm > 1.2" do
1416
+ options default_options
1417
+ action :upgrade
1418
+ end.should_not_be_updated
778
1419
  end
779
1420
 
780
1421
  it "with a < pin in the name and no rpm installed it installs" do
781
1422
  flush_cache
782
- yum_package.package_name("chef_rpm < 1.10")
783
- yum_package.run_action(:upgrade)
784
- expect(yum_package.updated_by_last_action?).to be true
785
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1423
+ yum_package "chef_rpm < 1.10" do
1424
+ options default_options
1425
+ action :upgrade
1426
+ end.should_be_updated
1427
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1428
+ yum_package "chef_rpm < 1.10" do
1429
+ options default_options
1430
+ action :upgrade
1431
+ end.should_not_be_updated
786
1432
  end
787
1433
 
788
1434
  it "with a > pin in the name and matching rpm installed it does nothing" do
789
1435
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
790
- yum_package.package_name("chef_rpm > 1.2")
791
- yum_package.run_action(:upgrade)
792
- expect(yum_package.updated_by_last_action?).to be false
793
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1436
+ yum_package "chef_rpm > 1.2" do
1437
+ options default_options
1438
+ action :upgrade
1439
+ end.should_not_be_updated
1440
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
794
1441
  end
795
1442
 
796
1443
  it "with a < pin in the name and no rpm installed it installs" do
797
1444
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
798
- yum_package.package_name("chef_rpm < 1.10")
799
- yum_package.run_action(:upgrade)
800
- expect(yum_package.updated_by_last_action?).to be false
801
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1445
+ yum_package "chef_rpm < 1.10" do
1446
+ options default_options
1447
+ action :upgrade
1448
+ end.should_not_be_updated
1449
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
802
1450
  end
803
1451
 
804
1452
  it "with a > pin in the name and non-matching rpm installed it upgrades" do
805
1453
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
806
- yum_package.package_name("chef_rpm > 1.2")
807
- yum_package.run_action(:upgrade)
808
- expect(yum_package.updated_by_last_action?).to be true
809
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1454
+ yum_package "chef_rpm > 1.2" do
1455
+ options default_options
1456
+ action :upgrade
1457
+ end.should_be_updated
1458
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1459
+ yum_package "chef_rpm > 1.2" do
1460
+ options default_options
1461
+ action :upgrade
1462
+ end.should_not_be_updated
810
1463
  end
811
1464
 
812
1465
  it "with a < pin in the name and non-matching rpm installed it downgrades" do
813
1466
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
814
- yum_package.allow_downgrade true
815
- yum_package.package_name("chef_rpm < 1.10")
816
- yum_package.run_action(:upgrade)
817
- expect(yum_package.updated_by_last_action?).to be true
818
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.#{pkg_arch}$")
1467
+ yum_package "chef_rpm < 1.10" do
1468
+ options default_options
1469
+ action :upgrade
1470
+ end.should_be_updated
1471
+ expect_matching_installed_version("^chef_rpm-1.2-1.#{pkg_arch}$")
1472
+ yum_package "chef_rpm < 1.10" do
1473
+ options default_options
1474
+ action :upgrade
1475
+ end.should_not_be_updated
819
1476
  end
820
1477
  end
821
1478
  end
822
1479
 
823
1480
  describe ":remove" do
1481
+
1482
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
1483
+ # python helper periodically before every top level context to get more FDs.
1484
+ before(:all) do
1485
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
1486
+ end
1487
+
824
1488
  context "vanilla use case" do
825
- let(:package_name) { "chef_rpm" }
826
1489
  it "does nothing if the package is not installed" do
827
1490
  flush_cache
828
- yum_package.run_action(:remove)
829
- expect(yum_package.updated_by_last_action?).to be false
830
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1491
+ yum_package "chef_rpm" do
1492
+ options default_options
1493
+ action :remove
1494
+ end.should_not_be_updated
1495
+ expect_matching_installed_version("^package chef_rpm is not installed$")
831
1496
  end
832
1497
 
833
1498
  it "removes the package if the package is installed" do
834
1499
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
835
- yum_package.run_action(:remove)
836
- expect(yum_package.updated_by_last_action?).to be true
837
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1500
+ yum_package "chef_rpm" do
1501
+ options default_options
1502
+ action :remove
1503
+ end.should_be_updated
1504
+ expect_matching_installed_version("^package chef_rpm is not installed$")
838
1505
  end
839
1506
 
840
1507
  it "does not remove the package twice" do
841
1508
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
842
- yum_package.run_action(:remove)
843
- expect(yum_package.updated_by_last_action?).to be true
844
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
845
- yum_package.run_action(:remove)
846
- expect(yum_package.updated_by_last_action?).to be false
847
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1509
+ yum_package "chef_rpm" do
1510
+ options default_options
1511
+ action :remove
1512
+ end.should_be_updated
1513
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1514
+ yum_package "chef_rpm" do
1515
+ options default_options
1516
+ action :remove
1517
+ end.should_not_be_updated
1518
+ expect_matching_installed_version("^package chef_rpm is not installed$")
848
1519
  end
849
1520
 
850
1521
  it "removes the package if the prior version package is installed" do
851
1522
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
852
- yum_package.run_action(:remove)
853
- expect(yum_package.updated_by_last_action?).to be true
854
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1523
+ yum_package "chef_rpm" do
1524
+ options default_options
1525
+ action :remove
1526
+ end.should_be_updated
1527
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1528
+ yum_package "chef_rpm" do
1529
+ options default_options
1530
+ action :remove
1531
+ end.should_not_be_updated
855
1532
  end
856
1533
 
857
1534
  it "removes the package if the i686 package is installed", :intel_64bit do
858
1535
  skip "FIXME: should this be fixed or is the current behavior correct?"
859
1536
  preinstall("chef_rpm-1.10-1.i686.rpm")
860
- yum_package.run_action(:remove)
861
- expect(yum_package.updated_by_last_action?).to be true
862
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1537
+ yum_package "chef_rpm" do
1538
+ options default_options
1539
+ action :remove
1540
+ end.should_be_updated
1541
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1542
+ yum_package "chef_rpm" do
1543
+ options default_options
1544
+ action :remove
1545
+ end.should_not_be_updated
863
1546
  end
864
1547
 
865
1548
  it "removes the package if the prior version i686 package is installed", :intel_64bit do
866
1549
  skip "FIXME: should this be fixed or is the current behavior correct?"
867
1550
  preinstall("chef_rpm-1.2-1.i686.rpm")
868
- yum_package.run_action(:remove)
869
- expect(yum_package.updated_by_last_action?).to be true
870
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1551
+ yum_package "chef_rpm" do
1552
+ options default_options
1553
+ action :remove
1554
+ end.should_be_updated
1555
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1556
+ yum_package "chef_rpm" do
1557
+ options default_options
1558
+ action :remove
1559
+ end.should_not_be_updated
871
1560
  end
872
1561
  end
873
1562
 
874
1563
  context "with 64-bit arch", :intel_64bit do
875
- let(:package_name) { "chef_rpm.#{pkg_arch}" }
876
1564
  it "does nothing if the package is not installed" do
877
1565
  flush_cache
878
- yum_package.run_action(:remove)
879
- expect(yum_package.updated_by_last_action?).to be false
880
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1566
+ yum_package "chef_rpm.#{pkg_arch}" do
1567
+ options default_options
1568
+ action :remove
1569
+ end.should_not_be_updated
1570
+ expect_matching_installed_version("^package chef_rpm is not installed$")
881
1571
  end
882
1572
 
883
1573
  it "removes the package if the package is installed" do
884
1574
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm")
885
- yum_package.run_action(:remove)
886
- expect(yum_package.updated_by_last_action?).to be true
887
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1575
+ yum_package "chef_rpm.#{pkg_arch}" do
1576
+ options default_options
1577
+ action :remove
1578
+ end.should_be_updated
1579
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1580
+ yum_package "chef_rpm.#{pkg_arch}" do
1581
+ options default_options
1582
+ action :remove
1583
+ end.should_not_be_updated
888
1584
  end
889
1585
 
890
1586
  it "removes the package if the prior version package is installed" do
891
1587
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
892
- yum_package.run_action(:remove)
893
- expect(yum_package.updated_by_last_action?).to be true
894
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1588
+ yum_package "chef_rpm.#{pkg_arch}" do
1589
+ options default_options
1590
+ action :remove
1591
+ end.should_be_updated
1592
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1593
+ yum_package "chef_rpm.#{pkg_arch}" do
1594
+ options default_options
1595
+ action :remove
1596
+ end.should_not_be_updated
895
1597
  end
896
1598
 
897
1599
  it "does nothing if the i686 package is installed" do
898
1600
  preinstall("chef_rpm-1.10-1.i686.rpm")
899
- yum_package.run_action(:remove)
900
- expect(yum_package.updated_by_last_action?).to be false
901
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.i686$")
1601
+ yum_package "chef_rpm.#{pkg_arch}" do
1602
+ options default_options
1603
+ action :remove
1604
+ end.should_not_be_updated
1605
+ expect_matching_installed_version("^chef_rpm-1.10-1.i686$")
902
1606
  end
903
1607
 
904
1608
  it "does nothing if the prior version i686 package is installed" do
905
1609
  preinstall("chef_rpm-1.2-1.i686.rpm")
906
- yum_package.run_action(:remove)
907
- expect(yum_package.updated_by_last_action?).to be false
908
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.2-1.i686$")
1610
+ yum_package "chef_rpm.#{pkg_arch}" do
1611
+ options default_options
1612
+ action :remove
1613
+ end.should_not_be_updated
1614
+ expect_matching_installed_version("^chef_rpm-1.2-1.i686$")
909
1615
  end
910
1616
  end
911
1617
 
912
1618
  context "with 32-bit arch", :intel_64bit do
913
- let(:package_name) { "chef_rpm.i686" }
914
1619
  it "removes only the 32-bit arch if both are installed" do
915
1620
  preinstall("chef_rpm-1.10-1.#{pkg_arch}.rpm", "chef_rpm-1.10-1.i686.rpm")
916
- yum_package.run_action(:remove)
917
- expect(yum_package.updated_by_last_action?).to be true
918
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^chef_rpm-1.10-1.#{pkg_arch}$")
1621
+ yum_package "chef_rpm.i686" do
1622
+ options default_options
1623
+ action :remove
1624
+ end.should_be_updated
1625
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
1626
+ yum_package "chef_rpm.i686" do
1627
+ options default_options
1628
+ action :remove
1629
+ end.should_not_be_updated
919
1630
  end
920
1631
  end
921
1632
 
@@ -923,14 +1634,27 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
923
1634
  it "works when a package is installed" do
924
1635
  FileUtils.rm_f "/etc/yum.repos.d/chef-yum-localtesting.repo"
925
1636
  preinstall("chef_rpm-1.2-1.#{pkg_arch}.rpm")
926
- yum_package.run_action(:remove)
927
- expect(yum_package.updated_by_last_action?).to be true
928
- expect(shell_out("rpm -q --queryformat '%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n' chef_rpm").stdout.chomp).to match("^package chef_rpm is not installed$")
1637
+ yum_package "chef_rpm" do
1638
+ options "--nogpgcheck"
1639
+ action :remove
1640
+ end.should_be_updated
1641
+ expect_matching_installed_version("^package chef_rpm is not installed$")
1642
+ yum_package "chef_rpm" do
1643
+ options "--nogpgcheck"
1644
+ action :remove
1645
+ end.should_not_be_updated
929
1646
  end
930
1647
  end
931
1648
  end
932
1649
 
933
1650
  describe ":lock and :unlock" do
1651
+
1652
+ # XXX: this is necessary for RHEL6 due to a file descriptor leak so we need to bounce the
1653
+ # python helper periodically before every top level context to get more FDs.
1654
+ before(:all) do
1655
+ Chef::Provider::Package::Yum::PythonHelper.instance.restart
1656
+ end
1657
+
934
1658
  before(:all) do
935
1659
  shell_out!("yum -y install yum-versionlock")
936
1660
  end
@@ -941,53 +1665,75 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
941
1665
 
942
1666
  it "locks an rpm" do
943
1667
  flush_cache
944
- yum_package.package_name("chef_rpm")
945
- yum_package.run_action(:lock)
946
- expect(yum_package.updated_by_last_action?).to be true
1668
+ yum_package "chef_rpm" do
1669
+ options default_options
1670
+ action :lock
1671
+ end.should_be_updated
947
1672
  expect(shell_out("yum versionlock list").stdout.chomp).to match("^0:chef_rpm-")
1673
+ yum_package "chef_rpm" do
1674
+ options default_options
1675
+ action :lock
1676
+ end.should_not_be_updated
948
1677
  end
949
1678
 
950
1679
  it "does not lock if its already locked" do
951
1680
  flush_cache
952
1681
  shell_out!("yum versionlock add chef_rpm")
953
- yum_package.package_name("chef_rpm")
954
- yum_package.run_action(:lock)
955
- expect(yum_package.updated_by_last_action?).to be false
1682
+ yum_package "chef_rpm" do
1683
+ options default_options
1684
+ action :lock
1685
+ end.should_not_be_updated
956
1686
  expect(shell_out("yum versionlock list").stdout.chomp).to match("^0:chef_rpm-")
957
1687
  end
958
1688
 
959
1689
  it "unlocks an rpm" do
960
1690
  flush_cache
961
1691
  shell_out!("yum versionlock add chef_rpm")
962
- yum_package.package_name("chef_rpm")
963
- yum_package.run_action(:unlock)
964
- expect(yum_package.updated_by_last_action?).to be true
1692
+ yum_package "chef_rpm" do
1693
+ options default_options
1694
+ action :unlock
1695
+ end.should_be_updated
965
1696
  expect(shell_out("yum versionlock list").stdout.chomp).not_to match("^0:chef_rpm-")
1697
+ yum_package "chef_rpm" do
1698
+ options default_options
1699
+ action :unlock
1700
+ end.should_not_be_updated
966
1701
  end
967
1702
 
968
1703
  it "does not unlock an already locked rpm" do
969
1704
  flush_cache
970
- yum_package.package_name("chef_rpm")
971
- yum_package.run_action(:unlock)
972
- expect(yum_package.updated_by_last_action?).to be false
1705
+ yum_package "chef_rpm" do
1706
+ options default_options
1707
+ action :unlock
1708
+ end.should_not_be_updated
973
1709
  expect(shell_out("yum versionlock list").stdout.chomp).not_to match("^0:chef_rpm-")
974
1710
  end
975
1711
 
976
1712
  it "check that we can lock based on provides" do
977
1713
  flush_cache
978
- yum_package.package_name("chef_rpm_provides")
979
- yum_package.run_action(:lock)
980
- expect(yum_package.updated_by_last_action?).to be true
1714
+ yum_package "chef_rpm_provides" do
1715
+ options default_options
1716
+ action :lock
1717
+ end.should_be_updated
981
1718
  expect(shell_out("yum versionlock list").stdout.chomp).to match("^0:chef_rpm-")
1719
+ yum_package "chef_rpm_provides" do
1720
+ options default_options
1721
+ action :lock
1722
+ end.should_not_be_updated
982
1723
  end
983
1724
 
984
1725
  it "check that we can unlock based on provides" do
985
1726
  flush_cache
986
1727
  shell_out!("yum versionlock add chef_rpm")
987
- yum_package.package_name("chef_rpm_provides")
988
- yum_package.run_action(:unlock)
989
- expect(yum_package.updated_by_last_action?).to be true
1728
+ yum_package "chef_rpm_provides" do
1729
+ options default_options
1730
+ action :unlock
1731
+ end.should_be_updated
990
1732
  expect(shell_out("yum versionlock list").stdout.chomp).not_to match("^0:chef_rpm-")
1733
+ yum_package "chef_rpm_provides" do
1734
+ options default_options
1735
+ action :unlock
1736
+ end.should_not_be_updated
991
1737
  end
992
1738
  end
993
1739
  end