diff options
author | Lamont Granquist <lamont@scriptkiddie.org> | 2022-03-01 14:35:28 -0800 |
---|---|---|
committer | Lamont Granquist <lamont@scriptkiddie.org> | 2022-03-01 19:05:55 -0800 |
commit | fa543345c9b53760653417ae220a60112a2dbab0 (patch) | |
tree | 1944a03fd1b8ae47c0a3b2524a5978133e2207b2 | |
parent | 1c8f84f84d267524076e2d0c5a69bc23be04f593 (diff) | |
download | chef-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.rb | 15 | ||||
-rw-r--r-- | spec/functional/resource/dnf_package_spec.rb | 15 | ||||
-rw-r--r-- | spec/functional/resource/yum_package_spec.rb | 15 |
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 |