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

Tim Lauridsen tim.lauridsen at googlemail.com
Thu Aug 6 07:30:52 UTC 2009


On 08/05/2009 11:40 PM, James Antill wrote:
> ---
>   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]

Look good, but i would love some comments/docstrings in the testcases to make it easier to see what the single case is 
testing for :)

Tim


More information about the Yum-devel mailing list