[Yum-devel] [PATCH 3/3] Add tests for update-to/upgrade-to, and fix generic code so tests work.

tim.lauridsen at gmail.com tim.lauridsen at gmail.com
Fri Apr 1 04:42:12 UTC 2011


On Thu, Mar 31, 2011 at 12:01 AM, James Antill <james at and.org> wrote:

> ---
>  test/simpleupdatetests.py |  119
> +++++++++++++++++++++++++++++++++++++++++++++
>  test/testbase.py          |    4 ++
>  yum/packageSack.py        |    9 +++
>  3 files changed, 132 insertions(+), 0 deletions(-)
>
> diff --git a/test/simpleupdatetests.py b/test/simpleupdatetests.py
> index 6bc2efe..6177fb1 100644
> --- a/test/simpleupdatetests.py
> +++ b/test/simpleupdatetests.py
> @@ -871,3 +871,122 @@ class SimpleUpdateTests(OperationsTests):
>                                      [pa1, pa2], multi_cmds=True)
>         self.assert_(res=='ok', msg)
>         self.assertResult((pa1, pa2))
> +
> +    # Test how update-to != update.
> +    def _setupUpdateTo(self):
> +        foo11 = FakePackage('foo', '1', '1', '0', 'i386')
> +        foo11.addProvides('foobar', 'EQ', ('0', '1', '1'))
> +        foo12 = FakePackage('foo', '1', '2', '0', 'i386')
> +        foo12.addProvides('foobar', 'EQ', ('0', '1', '2'))
> +        foo13 = FakePackage('foo', '1', '3', '0', 'i386')
> +        foo13.addProvides('foobar', 'EQ', ('0', '1', '3'))
> +        foo20 = FakePackage('foo', '2', '0', '0', 'i386')
> +        foo20.addProvides('foobar', 'EQ', ('0', '2', '0'))
> +        all = (foo11, foo12, foo13, foo20)
> +        return locals()
> +
> +    def testUpdateTo1_1(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update', 'foo'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo20'],))
> +
> +    def testUpdateTo1_2(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update-to', 'foo'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo20'],))
> +
> +    def testUpdateTo2_1(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update', 'foo-1-2'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo12'],))
> +
> +    def testUpdateTo2_2(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update-to', 'foo-1-2'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo12'],))
> +
> +    def testUpdateTo3_1(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update', 'foo-1-2'],
> +                                     [pkgs['foo12']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo20'],))
> +
> +    def testUpdateTo3_2(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update-to', 'foo-1-2'],
> +                                     [pkgs['foo12']],
> +                                     pkgs['all'])
> +        # Nothing to do...
> +        self.assert_(res==0, msg)
> +
> +
> +    def testUpdateToProv1_1(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update', 'foobar'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo20'],))
> +
> +    def testUpdateToProv1_2(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update-to', 'foobar'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo20'],))
> +
> +    def testUpdateToProv2_1(self):
> +        pkgs = self._setupUpdateTo()
> +        #  This is kind of annoying, maybe even a bug (but an old one)
> what
> +        # happens is that in "update" we only look for provides matches on
> +        # installed pkgs. ... so we can't see a version mismatch. Thus. we
> +        # don't see any pkgs.
> +        #  It also prints an annoying msg. at critical level. So ignoring.
> +        if True:
> +            return
> +        res, msg = self.runOperation(['update', 'foobar = 1-2'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        # self.assert_(res=='ok', msg)
> +        # self.assertResult((pkgs['foo12'],))
> +        self.assert_(res==0, msg)
> +
> +    def testUpdateToProv2_2(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update-to', 'foobar = 1-2'],
> +                                     [pkgs['foo11']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo12'],))
> +
> +    def testUpdateToProv3_1(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update', 'foobar = 1-2'],
> +                                     [pkgs['foo12']],
> +                                     pkgs['all'])
> +        self.assert_(res=='ok', msg)
> +        self.assertResult((pkgs['foo20'],))
> +
> +    def testUpdateToProv3_2(self):
> +        pkgs = self._setupUpdateTo()
> +        res, msg = self.runOperation(['update-to', 'foobar = 1-2'],
> +                                     [pkgs['foo12']],
> +                                     pkgs['all'])
> +        # Nothing to do...
> +        self.assert_(res==0, msg)
> +
> diff --git a/test/testbase.py b/test/testbase.py
> index d9e23f1..12025ce 100644
> --- a/test/testbase.py
> +++ b/test/testbase.py
> @@ -18,6 +18,8 @@ from yum.rpmsack import RPMDBPackageSack as _rpmdbsack
>  import inspect
>  from rpmUtils import arch
>  from rpmUtils.transaction import initReadOnlyTransaction
> +import rpmUtils.miscutils
> +
>
>  #############################################################
>  ### Helper classes ##########################################
> @@ -320,6 +322,8 @@ class FakeRpmDb(packageSack.PackageSack):
>         # convert flags & version for unversioned reqirements
>         if not version:
>             version=(None, None, None)
> +        if type(version) in (str, type(None), unicode):
> +            version = rpmUtils.miscutils.stringToVersion(version)
>         if flags == '0':
>             flags=None
>         for po in self.provides.get(name, []):
> diff --git a/yum/packageSack.py b/yum/packageSack.py
> index 153edbb..4af563a 100644
> --- a/yum/packageSack.py
> +++ b/yum/packageSack.py
> @@ -24,6 +24,7 @@ import re
>  import fnmatch
>  import misc
>  from packages import parsePackages
> +import rpmUtils.miscutils
>  from rpmUtils.miscutils import compareEVR
>
>  class PackageSackVersion:
> @@ -702,6 +703,10 @@ class PackageSack(PackageSackBase):
>     def getProvides(self, name, flags=None, version=(None, None, None)):
>         """return dict { packages -> list of matching provides }"""
>         self._checkIndexes(failure='build')
> +        if version is None:
> +            version = (None, None, None)
> +        elif type(version) in (str, type(None), unicode):
> +            version = rpmUtils.miscutils.stringToVersion(version)
>         result = { }
>         for po in self.provides.get(name, []):
>             hits = po.matchingPrcos('provides', (name, flags, version))
> @@ -716,6 +721,10 @@ class PackageSack(PackageSackBase):
>     def getRequires(self, name, flags=None, version=(None, None, None)):
>         """return dict { packages -> list of matching requires }"""
>         self._checkIndexes(failure='build')
> +        if version is None:
> +            version = (None, None, None)
> +        elif type(version) in (str, type(None), unicode):
> +            version = rpmUtils.miscutils.stringToVersion(version)
>         result = { }
>         for po in self.requires.get(name, []):
>             hits = po.matchingPrcos('requires', (name, flags, version))
> --
> 1.7.3.4
>
> _______________________________________________
> Yum-devel mailing list
> Yum-devel at lists.baseurl.org
> http://lists.baseurl.org/mailman/listinfo/yum-devel


ACK
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.baseurl.org/pipermail/yum-devel/attachments/20110401/07e083a9/attachment-0001.html>


More information about the Yum-devel mailing list