On Thu, Mar 31, 2011 at 12:01 AM, James Antill <ja...@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@lists.baseurl.org > http://lists.baseurl.org/mailman/listinfo/yum-devel ACK
_______________________________________________ Yum-devel mailing list Yum-devel@lists.baseurl.org http://lists.baseurl.org/mailman/listinfo/yum-devel