Skip to content

Commit 04c8872

Browse files
committed
BadDependency: catch := slot operator in PDEPEND
Resolves: #693 Signed-off-by: Arthur Zamarin <arthurzam@gentoo.org>
1 parent dacab55 commit 04c8872

2 files changed

Lines changed: 16 additions & 4 deletions

File tree

src/pkgcheck/checks/metadata.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -942,10 +942,15 @@ def feed(self, pkg):
942942
if all(map(self.deprecated, pkgs)):
943943
deprecated[attr].add(atom)
944944

945-
if in_or_restriction and atom.slot_operator == "=":
946-
yield BadDependency(
947-
attr, atom, "= slot operator used inside || block", pkg=pkg
948-
)
945+
if atom.slot_operator == "=":
946+
if in_or_restriction:
947+
yield BadDependency(
948+
attr, atom, "= slot operator used inside || block", pkg=pkg
949+
)
950+
elif attr == "pdepend" and not atom.blocks:
951+
# prohibited by PMS at the "Slot dependencies" section
952+
msg = "':=' operator is invalid in"
953+
yield BadDependency(attr, atom, msg, pkg=pkg)
949954

950955
if pkg.eapi.options.has_use_dep_defaults and atom.use is not None:
951956
missing_use_deps = self._check_use_deps(attr, atom)

tests/checks/test_metadata.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -928,6 +928,13 @@ def test_depset(self, attr):
928928
assert "= slot operator used in blocker" in str(r)
929929
assert f'{attr.upper()}="!dev-libs/foo:="' in str(r)
930930

931+
if attr == "PDEPEND":
932+
# check for := in PDEPEND
933+
r = self.assertReport(chk, mk_pkg(eapi="5", depset="dev-libs/foo:="))
934+
assert isinstance(r, metadata.BadDependency)
935+
assert "':=' operator" in str(r)
936+
assert f'{attr.upper()}="dev-libs/foo:="' in str(r)
937+
931938
# check for missing package revisions
932939
self.assertNoReport(chk, mk_pkg("=dev-libs/foo-1-r0"))
933940
r = self.assertReport(chk, mk_pkg(eapi="6", depset="=dev-libs/foo-1"))

0 commit comments

Comments
 (0)