Please review pull request #224: (#8062) Consider package epoch version when comparing yum package versions opened by (jhelwig)

Description:

By including the epoch version in the version returned as the "latest"
available, we can now properly consider package updates where only the
epoch version has changed.

Signed-off-by: Jude Nagurney j...@pwan.org
Signed-off-by: Jacob Helwig ja...@puppetlabs.com

  • Opened: Wed Nov 16 22:49:16 UTC 2011
  • Based on: puppetlabs:2.7.x (4462eb5b4aa4b4983c790892349c83e02bc31d93)
  • Requested merge: jhelwig:tickets/2.7.x/8062-yum-epoch (b202146f2c1ee2db2e7db7e0f74d9b0b801648ee)

Diff follows:

diff --git a/lib/puppet/provider/package/yum.rb b/lib/puppet/provider/package/yum.rb
old mode 100755
new mode 100644
index c66c46c..9ba53b2
--- a/lib/puppet/provider/package/yum.rb
+++ b/lib/puppet/provider/package/yum.rb
@@ -87,7 +87,7 @@ Puppet::Type.type(:package).provide :yum, :parent => :rpm, :source => :rpm do
     unless upd.nil?
       # FIXME: there could be more than one update for a package
       # because of multiarch
-      return "#{upd[:version]}-#{upd[:release]}"
+      return "#{upd[:epoch]}:#{upd[:version]}-#{upd[:release]}"
     else
       # Yum didn't find updates, pretend the current
       # version is the latest
diff --git a/spec/unit/provider/package/yum_spec.rb b/spec/unit/provider/package/yum_spec.rb
index 601c240..5148ac0 100755
--- a/spec/unit/provider/package/yum_spec.rb
+++ b/spec/unit/provider/package/yum_spec.rb
@@ -30,16 +30,19 @@ describe provider do
       @provider.expects(:yum).with('-d', '0', '-e', '0', '-y', :install, 'mypackage')
       @provider.install
     end
+
     it 'should use :install to update' do
       @provider.expects(:install)
       @provider.update
     end
+
     it 'should be able to set version' do
       @resource.stubs(:should).with(:ensure).returns '1.2'
       @provider.expects(:yum).with('-d', '0', '-e', '0', '-y', :install, 'mypackage-1.2')
       @provider.stubs(:query).returns :ensure => '1.2'
       @provider.install
     end
+
     it 'should be able to downgrade' do
       @resource.stubs(:should).with(:ensure).returns '1.0'
       @provider.expects(:yum).with('-d', '0', '-e', '0', '-y', :downgrade, 'mypackage-1.0')
@@ -53,6 +56,7 @@ describe provider do
       @provider.expects(:yum).with('-y', :erase, 'mypackage')
       @provider.purge
     end
+
     it 'should use rpm to uninstall' do
       @provider.expects(:rpm).with('-e', 'mypackage-1-1.i386')
       @provider.uninstall
@@ -62,5 +66,45 @@ describe provider do
   it 'should be versionable' do
     provider.should be_versionable
   end
-end
 
+  describe '#latest' do
+    describe 'when latest_info is nil' do
+      before :each do
+        @provider.stubs(:latest_info).returns(nil)
+      end
+
+      it 'raises if ensure is absent and latest_info is nil' do
+        @provider.stubs(:properties).returns({:ensure => :absent})
+
+        expect { @provider.latest }.to raise_error(
+          Puppet::DevError,
+          'Tried to get latest on a missing package'
+        )
+      end
+
+      it 'returns the ensure value if the package is not already installed' do
+        @provider.stubs(:properties).returns({:ensure => '3.4.5'})
+
+        @provider.latest.should == '3.4.5'
+      end
+    end
+
+    describe 'when latest_info is populated' do
+      before :each do
+        @provider.stubs(:latest_info).returns({
+          :name     => 'mypackage',
+          :epoch    => '1',
+          :version  => '2.3.4',
+          :release  => '5',
+          :arch     => 'i686',
+          :provider => :yum,
+          :ensure   => '2.3.4-5'
+        })
+      end
+
+      it 'includes the epoch in the version string' do
+        @provider.latest.should == '1:2.3.4-5'
+      end
+    end
+  end
+end

    

--
You received this message because you are subscribed to the Google Groups "Puppet Developers" group.
To post to this group, send email to puppet-dev@googlegroups.com.
To unsubscribe from this group, send email to puppet-dev+unsubscr...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/puppet-dev?hl=en.

Reply via email to