diff options
author | Irving Popovetsky <irving@getchef.com> | 2015-09-28 13:33:36 -0700 |
---|---|---|
committer | Irving Popovetsky <irving@getchef.com> | 2015-09-28 13:33:36 -0700 |
commit | 0f720e4e2c18ab96b8d58f95dbf1b14bfee4de6d (patch) | |
tree | d1426151a632cc7133138ced4816b509a2682792 | |
parent | 8d32fdd4377476a9f7dc36a864ccdaa17c32b3a1 (diff) | |
download | chef-irving/issue3671.tar.gz |
Use much simpler regex for determining the rpm versionirving/issue3671
-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 - |