diff --git a/lib/puppet/util/rpm_compare.rb b/lib/puppet/util/rpm_compare.rb index 4afa6c66c84..f83c2a7801b 100644 --- a/lib/puppet/util/rpm_compare.rb +++ b/lib/puppet/util/rpm_compare.rb @@ -7,7 +7,7 @@ module Puppet::Util::RpmCompare armv5tejl armv6l armv7l m68kmint s390 s390x ia64 x86_64 sh3 sh4 ].freeze - ARCH_REGEX = Regexp.new('\.' + ARCH_LIST.join('|\.')) + ARCH_REGEX = Regexp.new(ARCH_LIST.map { |arch| "\\.#{arch}" }.join('|')) # This is an attempt at implementing RPM's # lib/rpmvercmp.c rpmvercmp(a, b) in Ruby. diff --git a/spec/shared_examples/rhel_package_provider.rb b/spec/shared_examples/rhel_package_provider.rb index 28486b9c729..e05ac3ecd1d 100644 --- a/spec/shared_examples/rhel_package_provider.rb +++ b/spec/shared_examples/rhel_package_provider.rb @@ -172,6 +172,20 @@ allow(arch_provider).to receive(:query).and_return(:ensure => version) arch_provider.install end + + it "does not move '-noarch' to the end of version" do + version = '1.2.3' + resource = Puppet::Type.type(:package).new( + :name => "#{name}-noarch", + :ensure => version, + :provider =>provider_name + ) + expect(Puppet::Util::Execution).to receive(:execute).with(["/usr/bin/#{provider_name}", '-d', '0', '-e', error_level, '-y', :install, "#{name}-noarch-#{version}"]) + provider = provider_class.new + provider.resource = resource + allow(provider).to receive(:query).and_return(:ensure => version) + provider.install + end end describe 'when uninstalling' do diff --git a/spec/unit/util/rpm_compare_spec.rb b/spec/unit/util/rpm_compare_spec.rb index f8c24cc1008..6b4bd69ebf1 100644 --- a/spec/unit/util/rpm_compare_spec.rb +++ b/spec/unit/util/rpm_compare_spec.rb @@ -172,6 +172,11 @@ class RpmTest expect([version[:epoch], version[:version], version[:release]]).to \ eq([nil, '2.2', 'SNAPSHOT20121119105647']) end + + it 'parses .noarch' do + version = RpmTest.rpm_parse_evr('3.0.12-1.el5.centos.noarch') + expect(version[:arch]).to eq('noarch') + end end describe '.compare_values' do