[Yum-devel] [PATCH 1/2] Testcase to make sure a specifc nevra comes out of _compare_providers()

James Antill james at and.org
Wed Aug 5 21:40:20 UTC 2009


---
 test/simpleupdatetests.py |   59 +++++++++++++++++++++++++++++++++++++++++++++
 test/testbase.py          |   23 +++++++++++++++--
 2 files changed, 79 insertions(+), 3 deletions(-)

diff --git a/test/simpleupdatetests.py b/test/simpleupdatetests.py
index d543013..b973fce 100644
--- a/test/simpleupdatetests.py
+++ b/test/simpleupdatetests.py
@@ -694,3 +694,62 @@ class SimpleUpdateTests(OperationsTests):
                                      [pa1, pa2, pa3])
         self.assert_(res=='ok', msg)
         self.assertResult((pa1, pa2, pa3))
+
+    def testUpdateMultiAvailPkgs1(self):
+        pa1 = FakePackage('A', '1', '1', '0', 'x86_64')
+        pa1.addRequires('blah', 'EQ', ('0', '1', '1'))
+        pa2 = FakePackage('B', '1', '1', '0', 'i386')
+        pa2.addProvides('blah', 'EQ', ('0', '1', '1'))
+        pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one'))
+        pa3.addProvides('blah', 'EQ', ('0', '1', '1'))
+        pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two'))
+        pa4.addProvides('blah', 'EQ', ('0', '1', '1'))
+
+        res, msg = self.runOperation(['install', 'A'],
+                                     [],
+                                     [pa1, pa2, pa3, pa4])
+        self.assert_(res=='ok', msg)
+        self.assertResult((pa1, pa3))
+
+    def testUpdateMultiAvailPkgs2(self):
+        pa1 = FakePackage('A', '1', '1', '0', 'x86_64')
+        pa1.addRequires('blah', 'EQ', ('0', '1', '1'))
+        pa2 = FakePackage('B', '1', '1', '0', 'i386')
+        pa2.addProvides('blah', 'EQ', ('0', '1', '1'))
+        pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one'))
+        pa3.addProvides('blah', 'EQ', ('0', '1', '1'))
+        pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two'))
+        pa4.addProvides('blah', 'EQ', ('0', '1', '1'))
+
+        res, msg = self.runOperation(['install', 'A'],
+                                     [],
+                                     [pa1, pa2, pa4, pa3])
+        self.assert_(res=='ok', msg)
+        self.assertResult((pa1, pa3))
+
+    def testUpdateMultiAvailPkgs3(self):
+        pa1 = FakePackage('A', '1', '1', '0', 'x86_64')
+        pa1.addRequires('B', 'EQ', ('0', '1', '1'))
+        pa2 = FakePackage('B', '1', '1', '0', 'i386')
+        pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one'))
+        pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two'))
+
+        res, msg = self.runOperation(['install', 'A'],
+                                     [],
+                                     [pa1, pa2, pa3, pa4])
+        self.assert_(res=='ok', msg)
+        self.assertResult((pa1, pa3))
+
+
+    def testUpdateMultiAvailPkgs4(self):
+        pa1 = FakePackage('A', '1', '1', '0', 'x86_64')
+        pa1.addRequires('B', 'EQ', ('0', '1', '1'))
+        pa2 = FakePackage('B', '1', '1', '0', 'i386')
+        pa3 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('one'))
+        pa4 = FakePackage('B', '1', '1', '0', 'x86_64', repo=FakeRepo('two'))
+
+        res, msg = self.runOperation(['install', 'A'],
+                                     [],
+                                     [pa1, pa2, pa4, pa3])
+        self.assert_(res=='ok', msg)
+        self.assertResult((pa1, pa3))
diff --git a/test/testbase.py b/test/testbase.py
index d91c01c..cadc28b 100644
--- a/test/testbase.py
+++ b/test/testbase.py
@@ -49,6 +49,17 @@ class FakeRepo(object):
     def __init__(self, id=None,sack=None):
         self.id = id
         self.sack = sack
+        self.cost = 1000
+
+    def __cmp__(self, other):
+        """ Sort base class repos. by alphanumeric on their id, also
+            see __cmp__ in YumRepository(). """
+        if self.id > other.id:
+            return 1
+        elif self.id < other.id:
+            return -1
+        else:
+            return 0
 
 class FakePackage(packages.YumAvailablePackage):
 
@@ -290,10 +301,14 @@ class DepsolveTests(_DepsolveTestsBase):
         for po in self.rpmdb:
             po.repoid = po.repo.id = "installed"
         for po in self.xsack:
-            po.repoid = po.repo.id = "TestRepository"
+            if po.repo.id is None:
+                po.repo.id = "TestRepository"
+            po.repoid = po.repo.id
         for txmbr in self.tsInfo:
             if txmbr.ts_state in ('u', 'i'):
-                txmbr.po.repoid = txmbr.po.repo.id = "TestRepository"
+                if txmbr.po.repo.id is None:
+                    txmbr.po.repo.id = "TestRepository"
+                txmbr.po.repoid = txmbr.po.repo.id
             else:
                 txmbr.po.repoid = txmbr.po.repo.id = "installed"
 
@@ -338,7 +353,9 @@ class OperationsTests(_DepsolveTestsBase):
             po.repoid = po.repo.id = "installed"
             self.depsolver.rpmdb.addPackage(po)
         for po in available:
-            po.repoid = po.repo.id = "TestRepository"
+            if po.repo.id is None:
+                po.repo.id = "TestRepository"
+            po.repoid = po.repo.id
             self.depsolver._pkgSack.addPackage(po)
 
         self.depsolver.basecmd = args[0]
-- 
1.6.2.5



More information about the Yum-devel mailing list