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

Tim Lauridsen timlau at osuosl.org
Wed Oct 29 07:51:25 UTC 2008


 test/skipbroken-tests.py |   40 ++++++++++++++++++++++++++-
 test/testbase.py         |   69 +++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 108 insertions(+), 1 deletion(-)

New commits:
commit 923c037cb78a703060780fcca94b0d199f49d550
Author: Tim Lauridsen <timlau at fedoraproject.org>
Date:   Wed Oct 29 08:51:10 2008 +0100

    Added depsolve callbacks to skipbroken tests, to get better output if a test fails

diff --git a/test/skipbroken-tests.py b/test/skipbroken-tests.py
index 977a0c2..e2e88b2 100644
--- a/test/skipbroken-tests.py
+++ b/test/skipbroken-tests.py
@@ -384,6 +384,44 @@ class SkipBrokenTests(DepsolveTests):
         self.assertEquals('ok', *self.resolveCode(skip=True))
         self.assertResult([po1,po2,po3])               
 
+
+    def testInstalledFail(self):
+        """
+        """
+        a1 = self.instPackage('a', '1', arch='x86_64')
+        a1.addProvides("liba.so.1()(64bit)")
+        a2 = self.repoPackage('a', '2', arch='x86_64')
+        a2.addProvides("liba.so.2()(64bit)")
+        
+        b1 = self.instPackage('b', '1', arch='x86_64')
+        b1.addProvides("libb.so.1()(64bit)")
+        b2 = self.repoPackage('b', '2', arch='x86_64')
+        b2.addProvides("libb.so.2()(64bit)")
+        
+        c1 = self.instPackage('c', '1', arch='x86_64')
+        c1.addRequires("liba.so.1()(64bit)")
+        c2 = self.repoPackage('c', '2', arch='x86_64')
+        c2.addRequires("liba.so.2()(64bit)")
+
+        d1 = self.instPackage('d', '1', arch='x86_64')
+        d1.addRequires("libb.so.1()(64bit)")
+        d2 = self.repoPackage('d', '2', arch='x86_64')
+        d2.addRequires("libb.so.1()(64bit)")
+
+        e1 = self.instPackage('e', '1', arch='x86_64')
+        e2 = self.repoPackage('e', '2', arch='x86_64')
+
+        f1 = self.instPackage('f', '1', arch='x86_64')
+        f2 = self.repoPackage('f', '2', arch='x86_64')
+
+        self.tsInfo.addUpdate(a2, oldpo=a1)
+        self.tsInfo.addUpdate(b2, oldpo=b1)
+        self.tsInfo.addUpdate(c2, oldpo=c1)
+        self.tsInfo.addUpdate(d2, oldpo=d1)
+        self.tsInfo.addUpdate(e2, oldpo=e1)
+        self.tsInfo.addUpdate(f2, oldpo=f1)
+        self.assertEquals('err', *self.resolveCode(skip=False))
+        #self.assertResult([a2,b2,c2,d2,e2,f2])
     
     def resolveCode(self,skip = False):
         solver = YumBase()
@@ -392,6 +430,7 @@ class SkipBrokenTests(DepsolveTests):
         solver.tsInfo = solver._tsInfo = self.tsInfo
         solver.rpmdb = self.rpmdb
         solver.pkgSack = self.xsack
+        solver.dsCallback = DepSolveProgressCallBack()
         
         for po in self.rpmdb:
             po.repoid = po.repo.id = "installed"
@@ -415,4 +454,3 @@ def setup_logging():
     verbose.propagate = False
     verbose.addHandler(console_stdout)
     verbose.setLevel(2)
-
diff --git a/test/testbase.py b/test/testbase.py
index ccab847..51224bc 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -3,6 +3,8 @@ import sys
 import unittest
 
 import settestpath
+import logging
+import yum.logginglevels as logginglevels
 
 new_behavior = "NEW_BEHAVIOR" in os.environ.keys()
 
@@ -19,6 +21,10 @@ from rpmUtils import arch
 ### Helper classes ##########################################
 #############################################################
 
+# Dummy translation wrapper
+def _(msg):
+    return msg
+
 class FakeConf(object):
 
     def __init__(self):
@@ -81,6 +87,65 @@ class _Container(object):
     pass
 
 
+class DepSolveProgressCallBack:
+    """provides text output callback functions for Dependency Solver callback"""
+    
+    def __init__(self):
+        """requires yum-cli log and errorlog functions as arguments"""
+        self.verbose_logger = logging.getLogger("yum.verbose.cli")
+        self.loops = 0
+    
+    def pkgAdded(self, pkgtup, mode):
+        modedict = { 'i': _('installed'),
+                     'u': _('updated'),
+                     'o': _('obsoleted'),
+                     'e': _('erased')}
+        (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,
+            modeterm)
+        
+    def start(self):
+        self.loops += 1
+        
+    def tscheck(self):
+        self.verbose_logger.log(logginglevels.INFO_2, _('--> Running transaction check'))
+        
+    def restartLoop(self):
+        self.loops += 1
+        self.verbose_logger.log(logginglevels.INFO_2,
+            _('--> Restarting Dependency Resolution with new changes.'))
+        self.verbose_logger.debug('---> Loop Number: %d', self.loops)
+    
+    def end(self):
+        self.verbose_logger.log(logginglevels.INFO_2,
+            _('--> Finished Dependency Resolution'))
+
+    
+    def procReq(self, name, formatted_req):
+        self.verbose_logger.log(logginglevels.INFO_2,
+            _('--> Processing Dependency: %s for package: %s'), formatted_req,
+            name)
+        
+    
+    def unresolved(self, msg):
+        self.verbose_logger.log(logginglevels.INFO_2, _('--> Unresolved Dependency: %s'),
+            msg)
+
+    
+    def procConflict(self, name, confname):
+        self.verbose_logger.log(logginglevels.INFO_2,
+            _('--> Processing Conflict: %s conflicts %s'), name, confname)
+
+    def transactionPopulation(self):
+        self.verbose_logger.log(logginglevels.INFO_2, _('--> Populating transaction set '
+            'with selected packages. Please wait.'))
+    
+    def downloadHeader(self, name):
+        self.verbose_logger.log(logginglevels.INFO_2, _('---> Downloading header for %s '
+            'to pack into transaction set.'), name)
+      
 #######################################################################
 ### Abstract super class for test cases ###############################
 #######################################################################
@@ -179,6 +244,10 @@ class DepsolveTests(_DepsolveTestsBase):
         # XXX this side-affect is hacky:
         self.tsInfo.setDatabases(self.rpmdb, self.xsack)
 
+    def resetTsInfo(self):
+        self.tsInfo = transactioninfo.TransactionData()
+        
+
     def resolveCode(self):
         solver = YumBase()
         solver.conf = FakeConf()


More information about the Yum-commits mailing list