コード例 #1
0
    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))
コード例 #2
0
    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))
コード例 #3
0
    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)
コード例 #4
0
    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)
コード例 #5
0
    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)
コード例 #6
0
    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))
コード例 #7
0
    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))
コード例 #8
0
ファイル: LbInstall.py プロジェクト: hackerlank/lhcb-software
    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)