[yum-cvs] 6 commits - Makefile test/depsolvetests.py yum/packages.py

Tim Lauridsen timlau at linux.duke.edu
Fri Sep 28 16:27:08 UTC 2007


 Makefile              |    2 
 test/depsolvetests.py |  423 ++++++++++++++++++++++++++++++++++++++++++++++----
 yum/packages.py       |    2 
 3 files changed, 399 insertions(+), 28 deletions(-)

New commits:
commit e2e415c95fb210eb706e0feea2fe8d24ccefa72f
Merge: 8206b59... 0d60290...
Author: Tim Lauridsen <tla at rasmil.dk>
Date:   Fri Sep 28 18:23:32 2007 +0200

    Merge branch 'check' of http://people.redhat.com/jantill/gits/yum

commit 0d60290ed025df5270b26184cbe035be1cbe2c6c
Author: James Antill <james at code.and.org>
Date:   Fri Sep 7 23:45:04 2007 -0400

      Add installed repo id, FakeInstPackage()
      Added methods for FakePackage prco: provides, requires, conflicts, obsoletes

diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index b2fe36f..ca48a7f 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -15,8 +15,8 @@ class FakeConf(object):
 
 class FakeRepo(object):
 
-    def __init__(self):
-        self.id = None
+    def __init__(self, id=None):
+        self.id = id
 
 
 class FakeRpmSack(packageSack.PackageSack):
@@ -26,7 +26,7 @@ class FakeRpmSack(packageSack.PackageSack):
 
 class FakePackage(packages.PackageObject, packages.RpmBase):
 
-    def __init__(self, name, version, release, epoch, arch):
+    def __init__(self, name, version, release, epoch, arch, repo=None):
         packages.PackageObject.__init__(self)
         packages.RpmBase.__init__(self)
 
@@ -40,14 +40,22 @@ class FakePackage(packages.PackageObject, packages.RpmBase):
 
         self.prco['provides'].append((name, '=', (epoch, version, release)))
 
-        self.repo = FakeRepo()
-        self.repoid = None
+        if repo is None:
+            repo = FakeRepo()
+        self.repo = repo
+        self.repoid = repo.id
 
         # Just a unique integer
         self.id = self.__hash__()
 
+    def addProvides(self, name, evr):
+        self.prco['provides'].append((name, '=', evr))
     def addRequires(self, name, flag, evr):
         self.prco['requires'].append((name, flag, evr))
+    def addConflict(self, name, flag, evr):
+        self.prco['conflicts'].append((name, flag, evr))
+    def addObsolete(self, name, flag, evr):
+        self.prco['obsoletes'].append((name, flag, evr))
 
 
 class TestingDepsolve(depsolve.Depsolve):
@@ -68,7 +76,7 @@ class TestingDepsolve(depsolve.Depsolve):
 
 def build_depsolver(tsInfo, rpmdb=None, pkgSack=None):
     if rpmdb is None:
-        rpmdb = packageSack.PackageSack()
+        rpmdb   = packageSack.PackageSack()
     if pkgSack is None:
         pkgSack = packageSack.PackageSack()
     # XXX this side-affect is hacky:
@@ -85,10 +93,14 @@ class DepsolveTests(unittest.TestCase):
         """ Called at the start of each test. """
         self.tsInfo = transactioninfo.TransactionData()
         self.rpmdb  = FakeRpmSack()
-        self.xs     = packageSack.PackageSack()
+        self.xsack  = packageSack.PackageSack()
+        self.repo   = FakeRepo("installed")
+
+    def FakeInstPkg(self, name, version, release, epoch, arch):
+        return FakePackage(name, version, release, epoch, arch, self.repo)
 
-    def resolveCode(self, *args):
-        solver = build_depsolver(*args)
+    def resolveCode(self):
+        solver = build_depsolver(self.tsInfo, self.rpmdb, self.xsack)
         result = solver.resolveDeps()
         res = {0 : 'empty', 2 : 'ok', 1 : 'err'}
         return (res[result[0]])
@@ -97,20 +109,20 @@ class DepsolveTests(unittest.TestCase):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         self.tsInfo.addInstall(po)
         self.tsInfo.remove(po.pkgtup)
-        self.assertEquals('empty', self.resolveCode(self.tsInfo))
+        self.assertEquals('empty', self.resolveCode())
 
     def testInstallSinglePackageNoRequires(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         self.tsInfo.addInstall(po)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo))
+        self.assertEquals('ok', self.resolveCode())
 
     def testInstallSinglePackageRequireNotProvided(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', None, (None, None, None))
         self.tsInfo.addInstall(po)
 
-        self.assertEquals('err', self.resolveCode(self.tsInfo))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireInstalled(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -120,7 +132,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1', '1', None, 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
     def testInstallSinglePackageRequireInstalledRequireNotProvided(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -131,7 +143,7 @@ class DepsolveTests(unittest.TestCase):
         po.addRequires('zap', None, (None, None, None))
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('err', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireInstalledRequireInstall(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -144,48 +156,48 @@ class DepsolveTests(unittest.TestCase):
         po.addRequires('zap', None, (None, None, None))
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
 
     def testInstallSinglePackageRequireVer1NotProvided(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
-        po.addRequires('zip', None, (None, '1.3', '2'))
+        po.addRequires('zip', 'EQ', (None, '1.3', '2'))
         self.tsInfo.addInstall(po)
 
         ipo = FakePackage('zip', '1.0', '2', None, 'i386')
         self.rpmdb.addPackage(ipo)
         
-        self.assertEquals('err', self.resolveCode(self.tsInfo))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireVer1Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
-        po.addRequires('zip', None, (None, '1.3', '2'))
+        po.addRequires('zip', 'EQ', (None, '1.3', '2'))
         self.tsInfo.addInstall(po)
 
-        ipo = FakePackage('zip', '1.0', '2', None, 'i386')
+        ipo = FakePackage('zip', '1.3', '2', None, 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
     def testInstallSinglePackageRequireVer2NotProvided(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
-        po.addRequires('zip', None, (None, '1.3', '4'))
+        po.addRequires('zip', 'EQ', (None, '1.3', '4'))
         self.tsInfo.addInstall(po)
 
         ipo = FakePackage('zip', '1.3', '2', None, 'i386')
         self.rpmdb.addPackage(ipo)
         
-        self.assertEquals('err', self.resolveCode(self.tsInfo))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireVer2Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
-        po.addRequires('zip', None, (None, '1.3', '4'))
+        po.addRequires('zip', 'EQ', (None, '1.3', '4'))
         self.tsInfo.addInstall(po)
 
         ipo = FakePackage('zip', '1.3', '4', None, 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
     def testInstallSinglePackageRequireVer3NotProvided(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -195,7 +207,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1.3', '4', '0', 'i386')
         self.rpmdb.addPackage(ipo)
         
-        self.assertEquals('err', self.resolveCode(self.tsInfo))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireVer3Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -205,7 +217,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
     def testInstallSinglePackageRequireVer4NotProvided(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -215,7 +227,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
         self.rpmdb.addPackage(ipo)
         
-        self.assertEquals('err', self.resolveCode(self.tsInfo))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireVer4_1Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -225,7 +237,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1.0', '4', '2', 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
     def testInstallSinglePackageRequireVer4_2Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', 'LT', ('2', '1.3', '4'))
@@ -234,16 +246,16 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1.3', '3', '2', 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
     def testInstallSinglePackageRequireVer4_3Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', 'LT', ('2', '1.3', '4'))
         self.tsInfo.addInstall(po)
 
-        ipo = FakePackage('zip', '1.3', '4', None, 'i386')
+        ipo = self.FakeInstPkg('zip', '1.3', '4', None, 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
     def testInstallSinglePackageRequireVer4_4Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', 'LT', ('2', '1.3', '4'))
@@ -252,7 +264,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '1.3', '4', '1', 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
     def testInstallSinglePackageRequireVer4_5Installed(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', 'LT', ('2', '1.3', '4'))
@@ -261,7 +273,7 @@ class DepsolveTests(unittest.TestCase):
         ipo = FakePackage('zip', '0.3', '4', '2', 'i386')
         self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
     def testInstallSinglePackageRequireXtraBadVer(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
@@ -273,36 +285,138 @@ class DepsolveTests(unittest.TestCase):
         self.rpmdb.addPackage(ipo)
 
         xpo = FakePackage('zap', '1.3', '4', '0', 'i386')
-        self.xs.addPackage(xpo)
+        self.xsack.addPackage(xpo)
 
-        self.assertEquals('err', self.resolveCode(self.tsInfo, self.rpmdb,
-                                                  self.xs))
+        self.assertEquals('err', self.resolveCode())
 
     def testInstallSinglePackageRequireXtra(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
-        po.addRequires('zap', 'EQ', ('2', '1.3', '4'))
+        po.addRequires('zap', 'EQ', ('4', '2.6', '8'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+        
+        xpo = FakePackage('zap', '2.6', '8', '4', 'i386')
+        self.xsack.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr()
+        self.assertEquals(2, len(txmbrs))
+        txmbrs = self.tsInfo.matchNaevr('zap')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zap', 'i386', '4', '2.6', '8'), txmbrs[0].pkgtup)
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(0, len(txmbrs))
+        txmbrs = self.tsInfo.matchNaevr('zsh')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zsh', 'i386', None, '1', '1'), txmbrs[0].pkgtup)
+        
+    def testInstallSinglePackageRequireInstalledRequireXtra(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        ipo.addRequires('zap', 'EQ', ('4', '2.6', '8'))
+        self.rpmdb.addPackage(ipo)
+        
+        xpo = FakePackage('zap', '2.6', '8', '4', 'i386')
+        self.xsack.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr()
+        self.assertEquals(1, len(txmbrs))
+        txmbrs = self.tsInfo.matchNaevr('zap')
+        self.assertEquals(0, len(txmbrs))
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(0, len(txmbrs))
+        txmbrs = self.tsInfo.matchNaevr('zsh')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zsh', 'i386', None, '1', '1'), txmbrs[0].pkgtup)
+        
+    def testInstallSinglePackageRequireUpgradeRequireXtraErr(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'EQ', ('4', '2.6', '8'))
         self.tsInfo.addInstall(po)
 
         ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        ipo.addRequires('zap', 'EQ', ('2', '1.3', '3'))
         self.rpmdb.addPackage(ipo)
         
+        xpo = FakePackage('zip', '2.6', '8', '4', 'i386')
+        xpo.addRequires('zap', 'EQ', ('2', '1.3', '4'))
+        self.xsack.addPackage(xpo)
         xpo = FakePackage('zap', '1.3', '4', '2', 'i386')
-        self.xs.addPackage(xpo)
+        xpo.addRequires('zsh', 'EQ', ('2', '4', '8'))
+        self.xsack.addPackage(xpo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb,
-                                                 self.xs))
+        self.assertEquals('err', self.resolveCode())
 
-    def testInstallSinglePackageRequireNotProvidedMultiLib(self):
-        po = FakePackage('zsh', '1', '1', None, 'x86_64')
-        po.addRequires('zip', None, (None, None, None))
+    def testInstallSinglePackageRequireUpgradeRequireXtraOk(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'EQ', ('4', '2.6', '8'))
         self.tsInfo.addInstall(po)
 
-        ipo = FakePackage('zip', '1', '3', None, 'i386')
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        ipo.addRequires('zap', 'EQ', ('2', '1.3', '3'))
         self.rpmdb.addPackage(ipo)
+        
+        xpo = FakePackage('zip', '2.6', '8', '4', 'i386')
+        xpo.addRequires('zap', 'EQ', ('2', '1.3', '4'))
+        self.xsack.addPackage(xpo)
+        xpo = FakePackage('zap', '1.3', '4', '2', 'i386')
+        self.xsack.addPackage(xpo)
 
-        # self.assertEquals('err', self.resolveCode(self.tsInfo, self.rpmdb))
+        self.assertEquals('ok', self.resolveCode())
 
+        txmbrs = self.tsInfo.matchNaevr()
+        self.assertEquals(3, len(txmbrs))
+        
+        txmbrs = self.tsInfo.matchNaevr('zap')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zap', 'i386', '2', '1.3', '4'), txmbrs[0].pkgtup)
+        
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zip', 'i386', '4', '2.6', '8'), txmbrs[0].pkgtup)
+        
+        txmbrs = self.tsInfo.matchNaevr('zsh')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zsh', 'i386', None, '1', '1'), txmbrs[0].pkgtup)
+        
+    def testInstallSinglePackageRequireMultiXtra(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'EQ', ('4', '2.6', '8'))
+        self.tsInfo.addInstall(po)
+
+        xpo = FakePackage('zip', '2.6', '8', '4', 'i386')
+        xpo.addRequires('zap', 'EQ', ('2', '1.3', '4'))
+        self.xsack.addPackage(xpo)
+        
+        xpo = FakePackage('zap', '1.3', '4', '2', 'i386')
+        self.xsack.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr()
+        self.assertEquals(3, len(txmbrs))
+        
+        txmbrs = self.tsInfo.matchNaevr('zap')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zap', 'i386', '2', '1.3', '4'), txmbrs[0].pkgtup)
+        
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zip', 'i386', '4', '2.6', '8'), txmbrs[0].pkgtup)
+        
+        txmbrs = self.tsInfo.matchNaevr('zsh')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zsh', 'i386', None, '1', '1'), txmbrs[0].pkgtup)
+        
     def testInstallSinglePackageRequireInstalledMultiLib(self):
         po = FakePackage('zsh', '1', '1', None, 'x86_64')
         po.addRequires('zip', None, (None, None, None))
@@ -310,10 +424,60 @@ class DepsolveTests(unittest.TestCase):
 
         ipo = FakePackage('zip', '1', '3', None, 'i386')
         self.rpmdb.addPackage(ipo)
-        ipo = FakePackage('zip', '1', '3', None, 'x86_64')
-        self.rpmdb.addPackage(ipo)
 
-        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+        xpo = FakePackage('zip', '1', '3', None, 'x86_64')
+        self.xsack.addPackage(xpo)
+        
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(0, len(txmbrs))
+
+    def testInstallSinglePackageRequireXtra1MultiLib(self):
+        po = FakePackage('zsh', '1', '1', None, 'x86_64')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
+
+        xpo = FakePackage('zip', '1', '3', None, 'i386')
+        self.xsack.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zip', 'i386', None, '1', '3'), txmbrs[0].pkgtup)
+
+    def testInstallSinglePackageRequireXtra2_64MultiLib(self):
+        po = FakePackage('zsh', '1', '1', None, 'x86_64')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
+
+        xpo = FakePackage('zip', '1', '3', None, 'i386')
+        self.xsack.addPackage(xpo)
+        xpo = FakePackage('zip', '1', '3', None, 'x86_64')
+        self.xsack.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zip', 'x86_64', None, '1', '3'), txmbrs[0].pkgtup)
+
+    def testInstallSinglePackageRequireXtra2_32MultiLib(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
+
+        xpo = FakePackage('zip', '1', '3', None, 'i386')
+        self.xsack.addPackage(xpo)
+        xpo = FakePackage('zip', '1', '3', None, 'x86_64')
+        self.xsack.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode())
+
+        txmbrs = self.tsInfo.matchNaevr('zip')
+        self.assertEquals(1, len(txmbrs))
+        self.assertEquals(('zip', 'i386', None, '1', '3'), txmbrs[0].pkgtup)
 
 def suite():
     suite = unittest.TestSuite()
commit a6da8c66c7d9deb268a793229fc249a3bf397fcb
Author: James Antill <james at code.and.org>
Date:   Thu Sep 6 18:13:14 2007 -0400

    Multiple sacks

diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index fe52a62..b2fe36f 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -19,6 +19,11 @@ class FakeRepo(object):
         self.id = None
 
 
+class FakeRpmSack(packageSack.PackageSack):
+    def installed(self, po):
+        """ Hack. Hack. Hack. """
+        return False
+
 class FakePackage(packages.PackageObject, packages.RpmBase):
 
     def __init__(self, name, version, release, epoch, arch):
@@ -61,15 +66,17 @@ class TestingDepsolve(depsolve.Depsolve):
                 pkgtup[4], pkgtup[1])[0]
 
 
-def build_depsolver(tsInfo, rpmdb=packageSack.PackageSack(),
-        pkgSack=packageSack.PackageSack()):
+def build_depsolver(tsInfo, rpmdb=None, pkgSack=None):
+    if rpmdb is None:
+        rpmdb = packageSack.PackageSack()
+    if pkgSack is None:
+        pkgSack = packageSack.PackageSack()
     # XXX this side-affect is hacky:
     tsInfo.setDatabases(rpmdb, pkgSack)
 
     solver = TestingDepsolve(tsInfo, rpmdb, pkgSack)
     return solver
 
-
 class DepsolveTests(unittest.TestCase):
 
     tsInfo = None
@@ -77,7 +84,8 @@ class DepsolveTests(unittest.TestCase):
     def setUp(self):
         """ Called at the start of each test. """
         self.tsInfo = transactioninfo.TransactionData()
-        self.rpmdb  = packageSack.PackageSack()
+        self.rpmdb  = FakeRpmSack()
+        self.xs     = packageSack.PackageSack()
 
     def resolveCode(self, *args):
         solver = build_depsolver(*args)
@@ -255,6 +263,36 @@ class DepsolveTests(unittest.TestCase):
 
         self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
 
+    def testInstallSinglePackageRequireXtraBadVer(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
+        po.addRequires('zap', 'EQ', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        xpo = FakePackage('zap', '1.3', '4', '0', 'i386')
+        self.xs.addPackage(xpo)
+
+        self.assertEquals('err', self.resolveCode(self.tsInfo, self.rpmdb,
+                                                  self.xs))
+
+    def testInstallSinglePackageRequireXtra(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'EQ', ('2', '1.3', '4'))
+        po.addRequires('zap', 'EQ', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+        
+        xpo = FakePackage('zap', '1.3', '4', '2', 'i386')
+        self.xs.addPackage(xpo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb,
+                                                 self.xs))
+
     def testInstallSinglePackageRequireNotProvidedMultiLib(self):
         po = FakePackage('zsh', '1', '1', None, 'x86_64')
         po.addRequires('zip', None, (None, None, None))
commit 971518054fd53161c8b3e31576e82210d9d39fc5
Author: James Antill <james at code.and.org>
Date:   Thu Sep 6 16:58:55 2007 -0400

    Add check for empty

diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index ce10950..fe52a62 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -82,9 +82,15 @@ class DepsolveTests(unittest.TestCase):
     def resolveCode(self, *args):
         solver = build_depsolver(*args)
         result = solver.resolveDeps()
-        res = {2 : 'ok', 1 : 'err'}
+        res = {0 : 'empty', 2 : 'ok', 1 : 'err'}
         return (res[result[0]])
 
+    def testEmpty(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        self.tsInfo.addInstall(po)
+        self.tsInfo.remove(po.pkgtup)
+        self.assertEquals('empty', self.resolveCode(self.tsInfo))
+
     def testInstallSinglePackageNoRequires(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         self.tsInfo.addInstall(po)
commit 6fde55d5a441c8d0828636c05f531070393f64e3
Author: James Antill <james at code.and.org>
Date:   Thu Sep 6 16:51:09 2007 -0400

    Add lots of tests, and fix matchingPrcos to pass GE

diff --git a/test/depsolvetests.py b/test/depsolvetests.py
index 11c7fc3..ce10950 100644
--- a/test/depsolvetests.py
+++ b/test/depsolvetests.py
@@ -72,45 +72,204 @@ def build_depsolver(tsInfo, rpmdb=packageSack.PackageSack(),
 
 class DepsolveTests(unittest.TestCase):
 
+    tsInfo = None
+    rpmdb  = None
+    def setUp(self):
+        """ Called at the start of each test. """
+        self.tsInfo = transactioninfo.TransactionData()
+        self.rpmdb  = packageSack.PackageSack()
+
+    def resolveCode(self, *args):
+        solver = build_depsolver(*args)
+        result = solver.resolveDeps()
+        res = {2 : 'ok', 1 : 'err'}
+        return (res[result[0]])
+
     def testInstallSinglePackageNoRequires(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
+        self.tsInfo.addInstall(po)
 
-        tsInfo = transactioninfo.TransactionData()
-        tsInfo.addInstall(po)
+        self.assertEquals('ok', self.resolveCode(self.tsInfo))
 
-        solver = build_depsolver(tsInfo)
+    def testInstallSinglePackageRequireNotProvided(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
 
-        res = solver.resolveDeps()
-        self.assertEquals(2, res[0])
+        self.assertEquals('err', self.resolveCode(self.tsInfo))
 
-    def testInstallSinglePackageRequireNotProvided(self):
+    def testInstallSinglePackageRequireInstalled(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
 
-        tsInfo = transactioninfo.TransactionData()
-        tsInfo.addInstall(po)
+        ipo = FakePackage('zip', '1', '1', None, 'i386')
+        self.rpmdb.addPackage(ipo)
 
-        solver = build_depsolver(tsInfo)
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
 
-        res = solver.resolveDeps()
-        self.assertEquals(1, res[0])
+    def testInstallSinglePackageRequireInstalledRequireNotProvided(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
 
-    def testInstallSinglePackageRequireInstalled(self):
+        ipo = FakePackage('zip', '1', '2', None, 'i386')
+        po.addRequires('zap', None, (None, None, None))
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('err', self.resolveCode(self.tsInfo, self.rpmdb))
+
+    def testInstallSinglePackageRequireInstalledRequireInstall(self):
         po = FakePackage('zsh', '1', '1', None, 'i386')
         po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
+        po = FakePackage('zap', '1', '2', None, 'i386')
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1', '3', None, 'i386')
+        po.addRequires('zap', None, (None, None, None))
+        self.rpmdb.addPackage(ipo)
 
-        tsInfo = transactioninfo.TransactionData()
-        tsInfo.addInstall(po)
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+
+
+    def testInstallSinglePackageRequireVer1NotProvided(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, '1.3', '2'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.0', '2', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+        
+        self.assertEquals('err', self.resolveCode(self.tsInfo))
+
+    def testInstallSinglePackageRequireVer1Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, '1.3', '2'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.0', '2', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+
+    def testInstallSinglePackageRequireVer2NotProvided(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '2', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+        
+        self.assertEquals('err', self.resolveCode(self.tsInfo))
+
+    def testInstallSinglePackageRequireVer2Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', None, (None, '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+
+    def testInstallSinglePackageRequireVer3NotProvided(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'GE', ('1', '1.3', '4'))
+        self.tsInfo.addInstall(po)
 
-        installedpo = FakePackage('zip', '1', '1', None, 'i386')
-        rpmdb = packageSack.PackageSack()
-        rpmdb.addPackage(installedpo)
+        ipo = FakePackage('zip', '1.3', '4', '0', 'i386')
+        self.rpmdb.addPackage(ipo)
+        
+        self.assertEquals('err', self.resolveCode(self.tsInfo))
 
-        solver = build_depsolver(tsInfo, rpmdb)
+    def testInstallSinglePackageRequireVer3Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'GE', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+
+    def testInstallSinglePackageRequireVer4NotProvided(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'LT', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+        
+        self.assertEquals('err', self.resolveCode(self.tsInfo))
+
+    def testInstallSinglePackageRequireVer4_1Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'LT', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.0', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+    def testInstallSinglePackageRequireVer4_2Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'LT', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '3', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+    def testInstallSinglePackageRequireVer4_3Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'LT', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+    def testInstallSinglePackageRequireVer4_4Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'LT', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1.3', '4', '1', 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+    def testInstallSinglePackageRequireVer4_5Installed(self):
+        po = FakePackage('zsh', '1', '1', None, 'i386')
+        po.addRequires('zip', 'LT', ('2', '1.3', '4'))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '0.3', '4', '2', 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
+
+    def testInstallSinglePackageRequireNotProvidedMultiLib(self):
+        po = FakePackage('zsh', '1', '1', None, 'x86_64')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
+
+        ipo = FakePackage('zip', '1', '3', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+
+        # self.assertEquals('err', self.resolveCode(self.tsInfo, self.rpmdb))
+
+    def testInstallSinglePackageRequireInstalledMultiLib(self):
+        po = FakePackage('zsh', '1', '1', None, 'x86_64')
+        po.addRequires('zip', None, (None, None, None))
+        self.tsInfo.addInstall(po)
 
-        res = solver.resolveDeps()
-        self.assertEquals(2, res[0])
+        ipo = FakePackage('zip', '1', '3', None, 'i386')
+        self.rpmdb.addPackage(ipo)
+        ipo = FakePackage('zip', '1', '3', None, 'x86_64')
+        self.rpmdb.addPackage(ipo)
 
+        self.assertEquals('ok', self.resolveCode(self.tsInfo, self.rpmdb))
 
 def suite():
     suite = unittest.TestSuite()
diff --git a/yum/packages.py b/yum/packages.py
index d11816e..43fa097 100644
--- a/yum/packages.py
+++ b/yum/packages.py
@@ -277,6 +277,8 @@ class RpmBase(object):
             if reqn != n:
                 continue
 
+            if f == '=':
+                f = 'EQ'
             if f != 'EQ' and prcotype == 'provides':
                 # isn't this odd, it's not 'EQ' and it is a provides
                 # - it really should be EQ
commit fbcfd21596ff5ee53c06aaf7f533af4b9e675dc5
Author: James Antill <james at code.and.org>
Date:   Thu Sep 6 16:50:13 2007 -0400

    Make check an alias for test

diff --git a/Makefile b/Makefile
index 6735547..62121e3 100644
--- a/Makefile
+++ b/Makefile
@@ -43,6 +43,8 @@ docs:
 test:
 	python test/alltests.py
 
+check: test
+
 archive: remove_spec = ${PKGNAME}-daily.spec
 archive: _archive
 



More information about the Yum-cvs-commits mailing list