def testMatchEqual(self): name = "TestPackage" version1 = "1.0.1" version2 = "1.2.0" release = "2" release2 = "3" # Checking equality p1 = Provides(name, version1, release) r = Requires(name, version1, release, 0, "EQ", None) self.assertTrue(r.provideMatches(p1), "%s should match %s" % (p1, r)) # Checking release mismatch p2 = Provides(name, version1, release2) self.assertFalse(r.provideMatches(p2), "%s should not match %s" % (p2, r)) # Checking version mismatch p3 = Provides(name, version2, release) self.assertFalse(r.provideMatches(p3), "%s should not match %s" % (p3, r)) # Checking version mismatch p4 = Provides(name + "Toto", version1, release) self.assertFalse(r.provideMatches(p4), "%s should not match %s" % (p4, r))
def testGreater(self): name = "TestPackage" version1 = "1.0.1" version2 = "1.2.0" version3 = "1.3.5" release = "2" # Checking simple comparison p1 = Provides(name, version1, release) p2 = Provides(name, version2, release) p3 = Provides(name, version3, release) ctor = "GT" r = Requires(name, version2, release, 0, ctor, None) self.assertFalse(r.provideMatches(p1), "%s not %s %s" % (p1, ctor, r)) self.assertFalse(r.provideMatches(p2), "%s not %s %s" % (p2, ctor, r)) self.assertTrue(r.provideMatches(p3), "%s %s %s" % (p3, ctor, r)) ctor = "GE" r = Requires(name, version2, release, 0, ctor, None) self.assertFalse(r.provideMatches(p1), "%s not %s %s" % (p1, ctor, r)) self.assertTrue(r.provideMatches(p2), "%s %s %s" % (p2, ctor, r)) self.assertTrue(r.provideMatches(p3), "%s %s %s" % (p3, ctor, r))
def testOrderDifferentName(self): name = "TestPackage" version1 = "1.0.1" release = "2" # Checking simple comparison p1 = Provides(name, version1, release) p2 = Provides(name + "z", version1, release) self.assertTrue(p1 < p2)
def testProvidesComparison(self): name = "TestPackage" p1 = Provides(name, "1.0.1", "2") p2 = Provides(name, "1.0.1", "1") p3 = Provides(name, "1.0.0", "1") allvers = [p1, p2, p3] sortedvers = sorted(allvers) self.assertEqual(sortedvers[0], p3) self.assertEqual(sortedvers[1], p2) self.assertEqual(sortedvers[2], p1)
def testProvidesComparisonAlpha(self): name = "TestPackage" p1 = Provides(name, "1.0.9.B", "2") p2 = Provides(name, "1.0.9.A", "1") p3 = Provides(name, "1.0.0", "1") p4 = Provides(name, "1.0.10.A", "1") allvers = [p4, p1, p2, p3] sortedvers = sorted(allvers) print sortedvers self.assertEqual(sortedvers[0], p3) self.assertEqual(sortedvers[1], p2) self.assertEqual(sortedvers[2], p1) self.assertEqual(sortedvers[3], p4)
def testDifferentName(self): name = "TestPackage" version1 = "1.0.1" release = "2" # Checking simple comparison p1 = Provides(name, version1, release) r = Requires(name + "Toto", None, None) self.assertFalse(r.provideMatches(p1))
def testRequireWithNoVersion(self): name = "TestPackage" version1 = "1.0.1" release = "2" # Checking simple comparison p1 = Provides(name, version1, release) r = Requires(name, None, None) self.assertTrue(r.provideMatches(p1))
def _checkUpdates(self, checkOnly): """ Check whether packages could be updated in the repository """ from DependencyManager import Requires, Provides self.log.info("Checking for updates") packageList = {} # First grouping by key/version to make sure we only try to update # the newest installed for (name, version, release) in self._listInstalledPackages(): prov = Provides(name, version, release, None, "EQ") key = "%s-%s" % (name, version) namevers = packageList.get(key, list([])) namevers.append(prov) packageList[key] = namevers updateCount = 0 for key in packageList.keys(): # Only checking for updates of the last installed version newest = sorted(packageList[key])[-1] (name, version, release) = (newest.name, newest.version, newest.release) # Creating a RPM requirement and checking whether we have a match... req = Requires(newest.name, newest.version, None, None, "EQ", None) update = self.lbYumClient.findLatestMatchingRequire(req) if update != None and update > newest: updateCount += 1 if checkOnly: self.log.warning( "%s.%s-%s could be updated to %s" % (name, version, release, update.rpmName())) else: self.log.warning( "Updating %s.%s-%s to %s" % (name, version, release, update.rpmName())) self.installRpm(update.name, update.version, update.release, False, True) # Writing summary if checkOnly: self.log.warning("Number of packages to update: %d" % updateCount) else: self.log.warning("Updated %d packages" % updateCount)