예제 #1
0
 def test_slots(self):
     slotted_pkgs_set = pkgs_set + (("dev-util/pkgcheck", '1',
                                     ([">=2"], [">1"]), '*'), )
     self.mk_glsa(slotted_pkgs_set)
     g = glsa.GlsaDirSet(self.dir)
     l = list(g)
     self.assertEqual(
         set(x.key for x in l),
         set(['dev-util/diffball', 'dev-util/bsdiff', 'dev-util/pkgcheck']))
     restrict = OrRestriction(*tuple(glsa.GlsaDirSet(self.dir)))
     self.assertTrue(restrict.match(atom.atom('=dev-util/pkgcheck-1-r1:1')))
     self.assertFalse(restrict.match(atom.atom('=dev-util/pkgcheck-1:1')))
     self.assertFalse(restrict.match(atom.atom('=dev-util/pkgcheck-2:1')))
     self.assertFalse(restrict.match(atom.atom('=dev-util/pkgcheck-1:0')))
     self.assertFalse(restrict.match(atom.atom('dev-util/pkgcheck:0')))
     self.assertFalse(restrict.match(atom.atom('dev-util/pkgcheck')))
예제 #2
0
 def test_pkg_grouped_iter(self):
     self.mk_glsa(pkgs_set + (("dev-util/bsdiff", ([], ["~>=2-r1"])), ))
     g = glsa.GlsaDirSet(self.dir)
     l = list(g.pkg_grouped_iter(sorter=sorted))
     self.assertEqual(set(x.key for x in l),
                      set(['dev-util/diffball', 'dev-util/bsdiff']))
     # main interest is dev-util/bsdiff
     r = l[0]
     pkgs = [
         cpv.VersionedCPV(f"dev-util/bsdiff-{ver}")
         for ver in ("0", "1", "1.1", "2", "2-r1")
     ]
     self.assertEqual([x.fullver for x in pkgs if r.match(x)],
                      ["1.1", "2-r1"])
예제 #3
0
    def check_range(self, vuln_range, ver_matches, ver_nonmatches):
        self.mk_glsa([("dev-util/diffball", ([], [vuln_range]))])
        restrict = list(OrRestriction(*tuple(glsa.GlsaDirSet(self.dir))))
        self.assertEqual(len(restrict), 1)
        restrict = restrict[0]
        for ver in ver_matches:
            pkg = cpv.versioned_CPV("dev-util/diffball-%s" % ver)
            self.assertTrue(restrict.match(pkg),
                            msg="pkg %s must match for %r: %s" %
                            (pkg, vuln_range, restrict))

        for ver in ver_nonmatches:
            pkg = cpv.versioned_CPV("dev-util/diffball-%s" % ver)
            self.assertFalse(restrict.match(pkg),
                             msg="pkg %s must not match for %r: %s" %
                             (pkg, vuln_range, restrict))
예제 #4
0
    def check_range(self, vuln_range, ver_matches, ver_nonmatches):
        self.mk_glsa([("dev-util/diffball", ([], [vuln_range]))])
        restrict = list(OrRestriction(*tuple(glsa.GlsaDirSet(self.dir))))
        if len(restrict) == 0:  # exception thrown
            restrict.append(AlwaysBool(negate=False))
        self.assertEqual(len(restrict), 1)
        restrict = restrict[0]
        for ver in ver_matches:
            pkg = cpv.VersionedCPV(f"dev-util/diffball-{ver}")
            self.assertTrue(
                restrict.match(pkg),
                msg=f"pkg {pkg} must match for {vuln_range!r}: {restrict}")

        for ver in ver_nonmatches:
            pkg = cpv.VersionedCPV(f"dev-util/diffball-{ver}")
            self.assertFalse(
                restrict.match(pkg),
                msg="pkg {pkg} must not match for {vuln_range!r}: {restrict}")
예제 #5
0
 def test_iter(self):
     self.mk_glsa(pkgs_set)
     g = glsa.GlsaDirSet(self.dir)
     l = list(g)
     self.assertEqual(set(x.key for x in l),
                      set(['dev-util/diffball', 'dev-util/bsdiff']))