diff options
author | Irving Popovetsky <irving@getchef.com> | 2015-09-28 13:33:36 -0700 |
---|---|---|
committer | Irving Popovetsky <irving@getchef.com> | 2015-09-29 10:00:54 -0700 |
commit | ad6c3e81e504ef8064d591201c09992a8f3f98d0 (patch) | |
tree | 2184466ee86aa079e4af46828a3fadee41aeb02f | |
parent | 8f65f75b2ae48ed33cfce1853edcdcc1a949b9c3 (diff) | |
download | chef-ad6c3e81e504ef8064d591201c09992a8f3f98d0.tar.gz |
Use much simpler regex for determining the rpm version
-rw-r--r-- | lib/chef/provider/package/rpm.rb | 4 | ||||
-rw-r--r-- | spec/unit/provider/package/rpm_spec.rb | 19 |
2 files changed, 20 insertions, 3 deletions
diff --git a/lib/chef/provider/package/rpm.rb b/lib/chef/provider/package/rpm.rb index c5d52a8384..6ce0dd689f 100644 --- a/lib/chef/provider/package/rpm.rb +++ b/lib/chef/provider/package/rpm.rb @@ -61,7 +61,7 @@ class Chef Chef::Log.debug("#{@new_resource} checking rpm status") shell_out_with_timeout!("rpm -qp --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@new_resource.source}").stdout.each_line do |line| case line - when /^([\w\d+_.-]+)\s([\w\d~_.-]+)$/ + when /^(\S+)\s(\S+)$/ @current_resource.package_name($1) @new_resource.version($2) @candidate_version = $2 @@ -78,7 +78,7 @@ class Chef @rpm_status = shell_out_with_timeout("rpm -q --queryformat '%{NAME} %{VERSION}-%{RELEASE}\n' #{@current_resource.package_name}") @rpm_status.stdout.each_line do |line| case line - when /^([\w\d+_.-]+)\s([\w\d~_.-]+)$/ + when /^(\S+)\s(\S+)$/ Chef::Log.debug("#{@new_resource} current version is #{$2}") @current_resource.version($2) end diff --git a/spec/unit/provider/package/rpm_spec.rb b/spec/unit/provider/package/rpm_spec.rb index e0e45d0b4f..ad9d694e34 100644 --- a/spec/unit/provider/package/rpm_spec.rb +++ b/spec/unit/provider/package/rpm_spec.rb @@ -256,6 +256,24 @@ describe Chef::Provider::Package::Rpm do end end + context "when the package name contains a plus symbol (chef#3671)" do + + let(:package_name) { "chef-server-core" } + + let(:package_source) { "/tmp/chef-server-core-12.2.0+20150713220422-1.el6.x86_64.rpm" } + + let(:rpm_qp_stdout) { "chef-server-core 12.2.0+20150713220422-1.el6" } + let(:rpm_q_stdout) { "chef-server-core 12.2.0+20150713220422-1.el6" } + + let(:rpm_qp_exitstatus) { 0 } + let(:rpm_q_exitstatus) { 0 } + + it "should correctly determine the candidate version and installed version" do + expect(provider.current_resource.package_name).to eq("chef-server-core") + expect(provider.new_resource.version).to eq("12.2.0+20150713220422-1.el6") + end + end + end context "when the source is given as an URI" do @@ -413,4 +431,3 @@ describe Chef::Provider::Package::Rpm do end - |