summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLamont Granquist <lamont@scriptkiddie.org>2022-03-01 14:35:28 -0800
committerLamont Granquist <lamont@scriptkiddie.org>2022-03-01 19:05:55 -0800
commitfa543345c9b53760653417ae220a60112a2dbab0 (patch)
tree1944a03fd1b8ae47c0a3b2524a5978133e2207b2
parent1c8f84f84d267524076e2d0c5a69bc23be04f593 (diff)
downloadchef-fa543345c9b53760653417ae220a60112a2dbab0.tar.gz
Fix multiple regressions in yum_package provider
This fixes regressions from #10823 Closes #12557 addresses chef/customer-bugs#602 and chef/customer-bugs#599 Signed-off-by: Lamont Granquist <lamont@scriptkiddie.org>
-rw-r--r--lib/chef/provider/package/yum/python_helper.rb15
-rw-r--r--spec/functional/resource/dnf_package_spec.rb15
-rw-r--r--spec/functional/resource/yum_package_spec.rb15
3 files changed, 44 insertions, 1 deletions
diff --git a/lib/chef/provider/package/yum/python_helper.rb b/lib/chef/provider/package/yum/python_helper.rb
index bdf22b4ebd..c37daa4dbf 100644
--- a/lib/chef/provider/package/yum/python_helper.rb
+++ b/lib/chef/provider/package/yum/python_helper.rb
@@ -178,7 +178,20 @@ class Chef
#
# @api private
def combine_args(provides, version, arch)
- provides = provides.dup
+ provides = provides.to_s.strip
+ version = if !version.nil? && !version.empty?
+ version.to_s.strip
+ end
+ arch = if !arch.nil? && !arch.empty?
+ arch.to_s.strip
+ end
+ if version =~ /^[><=]/
+ if arch
+ return { "provides" => "#{provides}.#{arch} #{version}" }
+ else
+ return { "provides" => "#{provides} #{version}" }
+ end
+ end
maybe_arch = provides.rpartition(".").last
if is_arch?(maybe_arch)
arch = maybe_arch
diff --git a/spec/functional/resource/dnf_package_spec.rb b/spec/functional/resource/dnf_package_spec.rb
index 655ae41a85..f3cb35bf93 100644
--- a/spec/functional/resource/dnf_package_spec.rb
+++ b/spec/functional/resource/dnf_package_spec.rb
@@ -709,6 +709,21 @@ describe Chef::Resource::DnfPackage, :requires_root, external: exclude_test do
action :install
end.should_not_be_updated
end
+
+ it "works with constraints in the version property" do
+ flush_cache
+ dnf_package "chef_rpm" do
+ version ">= 1.10"
+ options default_options
+ action :install
+ end.should_be_updated
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
+ dnf_package "chef_rpm" do
+ version ">= 1.10"
+ options default_options
+ action :install
+ end.should_not_be_updated
+ end
end
context "with source arguments" do
diff --git a/spec/functional/resource/yum_package_spec.rb b/spec/functional/resource/yum_package_spec.rb
index 78684b6da3..27912f6d35 100644
--- a/spec/functional/resource/yum_package_spec.rb
+++ b/spec/functional/resource/yum_package_spec.rb
@@ -754,6 +754,21 @@ describe Chef::Resource::YumPackage, :requires_root, external: exclude_test do
action :install
end.should_not_be_updated
end
+
+ it "works with constraints in the version property" do
+ flush_cache
+ yum_package "chef_rpm" do
+ version ">= 1.10"
+ options default_options
+ action :install
+ end.should_be_updated
+ expect_matching_installed_version("^chef_rpm-1.10-1.#{pkg_arch}$")
+ yum_package "chef_rpm" do
+ version ">= 1.10"
+ options default_options
+ action :install
+ end.should_not_be_updated
+ end
end
context "with source arguments" do