[yum-commits] Branch 'yum-3_2_X' - 2 commits - test/skipbroken-tests.py test/testbase.py yum/__init__.py

Tim Lauridsen timlau at osuosl.org
Tue Nov 9 05:37:40 UTC 2010


 test/skipbroken-tests.py |   19 ++++++++++++++++++-
 test/testbase.py         |   12 +++++++-----
 yum/__init__.py          |   16 ++++++++++------
 3 files changed, 35 insertions(+), 12 deletions(-)

New commits:
commit 8f316cf1d9f04203d2a3f7445089a1a2ddc24d53
Merge: 35d04e2... 4f3577f...
Author: Tim Lauridsen <timlau at fedoraproject.org>
Date:   Tue Nov 9 06:37:19 2010 +0100

    Merge branch 'yum-3_2_X' of ssh://yum.baseurl.org/srv/projects/yum/git/yum into yum-3_2_X

commit 35d04e27d65dc87f293c10bf4b90d8988f5170a0
Author: Tim Lauridsen <timlau at fedoraproject.org>
Date:   Fri Nov 5 08:08:28 2010 +0100

    - Make downgrade testcase
    - fix test DepsolveProgressCallback to handle downgrade
    - fix skip-broken code to handle downgrades
    - prefix all skipbroken debug message with 'SKIPBROKEN:' for easier filtering

diff --git a/test/skipbroken-tests.py b/test/skipbroken-tests.py
index c1d0c1f..9f09e87 100644
--- a/test/skipbroken-tests.py
+++ b/test/skipbroken-tests.py
@@ -598,7 +598,24 @@ class SkipBrokenTests(DepsolveTests):
         self.tsInfo.addUpdate(u1, oldpo=i2)
         self.assertEquals('empty', *self.resolveCode(skip=True))
         self.assertResult([i1,i2])
-        
+ 
+    def testDowngrade1(self):
+        '''
+        bar require foolib=2.0 provided by foo-1.2
+        foo-1.2 is downgraded to foo-1.1 there only contains foolib=1.0
+        so bar requirement is broken and the downgrade should be removed from
+        transaction
+        '''
+        i1 = self.instPackage('foo', '1.2')
+        i1.addProvides('foolib', 'EQ', ('0', '2', '0'))
+        i2 = self.instPackage('bar', '1.0')
+        i2.addRequires('foolib', 'EQ', ('0', '2', '0'))
+        d1 = self.repoPackage('foo', '1.1')
+        d1.addProvides('foolib', 'EQ', ('0', '1', '0'))
+        self.tsInfo.addDowngrade(d1, oldpo=i1)
+        self.assertEquals('empty', *self.resolveCode(skip=True))
+        self.assertResult([i1, i2])
+       
 
     def testMissingfileReqIptabes(self):    
         '''
diff --git a/test/testbase.py b/test/testbase.py
index 81591ad..d0a15ad 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -131,15 +131,17 @@ class DepSolveProgressCallBack:
     
     def pkgAdded(self, pkgtup, mode):
         modedict = { 'i': _('installed'),
-                     'u': _('updated'),
-                     'od': _('obsoleted'),
-                     'o': _('obsoleting'),
+                     'u': _('an update'),
                      'e': _('erased'),
-                     'ud':_('update'),}
+                     'r': _('reinstalled'),
+                     'd': _('a downgrade'),
+                     'o': _('obsoleting'),
+                     'ud': _('updated'),
+                     'od': _('obsoleted'),}
         (n, a, e, v, r) = pkgtup
         modeterm = modedict[mode]
         self.verbose_logger.log(logginglevels.INFO_2,
-            _('---> Package %s.%s %s:%s-%s set to be %s'), n, a, e, v, r,
+            _('---> Package %s.%s %s:%s-%s will be %s'), n, a, e, v, r,
             modeterm)
         
     def start(self):
diff --git a/yum/__init__.py b/yum/__init__.py
index 234b599..11e019a 100644
--- a/yum/__init__.py
+++ b/yum/__init__.py
@@ -1057,7 +1057,7 @@ class YumBase(depsolve.Depsolve):
             # and skip-broken shouldn't care too much about speed.
             self.rpmdb.transactionReset()
             self.installedFileRequires = None # Kind of hacky
-            self.verbose_logger.debug(_("Skip-broken round %i"), count)
+            self.verbose_logger.debug("SKIPBROKEN: ########### Round %i ################" , count)
             self._printTransaction()        
             depTree = self._buildDepTree()
             startTs = set(self.tsInfo)
@@ -1114,7 +1114,7 @@ class YumBase(depsolve.Depsolve):
                 self._checkUpdatedLeftovers() # Cleanup updated leftovers
                 rescode, restring = self.resolveDeps()
         if rescode != 1:
-            self.verbose_logger.debug(_("Skip-broken took %i rounds "), count)
+            self.verbose_logger.debug("SKIPBROKEN: took %i rounds ", count)
             self.verbose_logger.info(_('\nPackages skipped because of dependency problems:'))
             skipped_list = [p for p in skipped_po]
             skipped_list.sort()
@@ -1228,14 +1228,14 @@ class YumBase(depsolve.Depsolve):
                   TS_AVAILABLE  : "available",
                   TS_UPDATED    : "updated"}
 
-        self.verbose_logger.log(logginglevels.DEBUG_2,"TSINFO: Current Transaction : %i member(s) " % len(self.tsInfo))
+        self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN: Current Transaction : %i member(s) " % len(self.tsInfo))
         for txmbr in sorted(self.tsInfo):
-            msg = "  %-11s : %s " % (state[txmbr.output_state],txmbr.po)
+            msg = "SKIPBROKEN:  %-11s : %s " % (state[txmbr.output_state],txmbr.po)
             self.verbose_logger.log(logginglevels.DEBUG_2, msg)
             for po,rel in sorted(txmbr.relatedto):
-                msg = "                   %s : %s" % (rel,po)
+                msg = "SKIPBROKEN:                   %s : %s" % (rel,po)
                 self.verbose_logger.log(logginglevels.DEBUG_2, msg)
-                
+        self.verbose_logger.log(logginglevels.DEBUG_2,"SKIPBROKEN:%s" % (60 * "="))
                                     
     def _getPackagesToRemove(self,po,deptree,toRemove):
         '''
@@ -1246,6 +1246,10 @@ class YumBase(depsolve.Depsolve):
             for pkg in (txmbr.updates + txmbr.obsoletes):
                 toRemove.add(pkg)
                 self._getDepsToRemove(pkg, deptree, toRemove)
+            # Remove related packages    
+            for (relative, relation) in txmbr.relatedto:
+                toRemove.add(relative)
+                self._getDepsToRemove(relative, deptree, toRemove)                
         self._getDepsToRemove(po, deptree, toRemove)
 
     def _getDepsToRemove(self,po, deptree, toRemove):


More information about the Yum-commits mailing list