[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