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')))
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"])
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))
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}")
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']))