summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2016-12-01 18:19:54 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2016-12-13 13:31:50 -0800
commit975c5f26733d8023503b6b6bfd47e5b3fc976749 (patch)
tree8333dc7bc097dde4960448d7ccbfe5388f9aab69
parent2c18dc771efe307fd23be8ee7c78177d6417e762 (diff)
downloadchef-975c5f26733d8023503b6b6bfd47e5b3fc976749.tar.gz
fix downgrades with local source using :install
Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r--lib/chef/provider/package/dnf.rb5
-rw-r--r--spec/functional/resource/dnf_package_spec.rb1
2 files changed, 4 insertions, 2 deletions
diff --git a/lib/chef/provider/package/dnf.rb b/lib/chef/provider/package/dnf.rb
index 8ae8324c42..ccd6ee4ad0 100644
--- a/lib/chef/provider/package/dnf.rb
+++ b/lib/chef/provider/package/dnf.rb
@@ -246,7 +246,10 @@ class Chef
def installed_version(package_name)
@installed_version ||= {}
if new_resource.source
- @installed_version[package_name] ||= python_helper.whatinstalled(resolve_source_to_version_obj.name, desired_name_versions[package_name], desired_name_archs[package_name])
+ @installed_version[package_name] ||= python_helper.whatinstalled(available_version(package_name).name, desired_name_versions[package_name], desired_name_archs[package_name])
+ if @installed_version[package_name] != available_version(package_name) # allow :install to force installs of direct package sources
+ @installed_version[package_name] = Version.new(nil, nil, nil)
+ end
else
@installed_version[package_name] ||= python_helper.whatinstalled(package_name, desired_name_versions[package_name], desired_name_archs[package_name])
end
diff --git a/spec/functional/resource/dnf_package_spec.rb b/spec/functional/resource/dnf_package_spec.rb
index bc2e4f0681..edebc5d48b 100644
--- a/spec/functional/resource/dnf_package_spec.rb
+++ b/spec/functional/resource/dnf_package_spec.rb
@@ -260,7 +260,6 @@ gpgcheck=0
end
it "downgrades with :install" do
- pending "busted due to idempotency check in the base provider"
preinstall("chef_rpm-1.10-1.fc24.x86_64.rpm")
dnf_package.package_name("#{CHEF_SPEC_ASSETS}/yumrepo/chef_rpm-1.2-1.fc24.x86_64.rpm")
dnf_package.run_action(:install)