diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2016-12-01 18:19:54 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2016-12-13 13:31:50 -0800 |
commit | 975c5f26733d8023503b6b6bfd47e5b3fc976749 (patch) | |
tree | 8333dc7bc097dde4960448d7ccbfe5388f9aab69 | |
parent | 2c18dc771efe307fd23be8ee7c78177d6417e762 (diff) | |
download | chef-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.rb | 5 | ||||
-rw-r--r-- | spec/functional/resource/dnf_package_spec.rb | 1 |
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) |