commit:     04c8872e3a47e5ad32690c0483bc5c4001ee8412
Author:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
AuthorDate: Fri Jul 19 06:21:53 2024 +0000
Commit:     Arthur Zamarin <arthurzam <AT> gentoo <DOT> org>
CommitDate: Fri Jul 19 06:21:53 2024 +0000
URL:        
https://gitweb.gentoo.org/proj/pkgcore/pkgcheck.git/commit/?id=04c8872e

BadDependency: catch := slot operator in PDEPEND

Resolves: https://github.com/pkgcore/pkgcheck/issues/693
Signed-off-by: Arthur Zamarin <arthurzam <AT> gentoo.org>

 src/pkgcheck/checks/metadata.py | 13 +++++++++----
 tests/checks/test_metadata.py   |  7 +++++++
 2 files changed, 16 insertions(+), 4 deletions(-)

diff --git a/src/pkgcheck/checks/metadata.py b/src/pkgcheck/checks/metadata.py
index 2cbb8985..3c3b4bf9 100644
--- a/src/pkgcheck/checks/metadata.py
+++ b/src/pkgcheck/checks/metadata.py
@@ -942,10 +942,15 @@ class DependencyCheck(Check):
                         if all(map(self.deprecated, pkgs)):
                             deprecated[attr].add(atom)
 
-                    if in_or_restriction and atom.slot_operator == "=":
-                        yield BadDependency(
-                            attr, atom, "= slot operator used inside || 
block", pkg=pkg
-                        )
+                    if atom.slot_operator == "=":
+                        if in_or_restriction:
+                            yield BadDependency(
+                                attr, atom, "= slot operator used inside || 
block", pkg=pkg
+                            )
+                        elif attr == "pdepend" and not atom.blocks:
+                            # prohibited by PMS at the "Slot dependencies" 
section
+                            msg = "':=' operator is invalid in"
+                            yield BadDependency(attr, atom, msg, pkg=pkg)
 
                     if pkg.eapi.options.has_use_dep_defaults and atom.use is 
not None:
                         missing_use_deps = self._check_use_deps(attr, atom)

diff --git a/tests/checks/test_metadata.py b/tests/checks/test_metadata.py
index f6c2f00b..be5ae182 100644
--- a/tests/checks/test_metadata.py
+++ b/tests/checks/test_metadata.py
@@ -928,6 +928,13 @@ class TestDependencyCheck(use_based(), 
misc.ReportTestCase):
         assert "= slot operator used in blocker" in str(r)
         assert f'{attr.upper()}="!dev-libs/foo:="' in str(r)
 
+        if attr == "PDEPEND":
+            # check for := in PDEPEND
+            r = self.assertReport(chk, mk_pkg(eapi="5", 
depset="dev-libs/foo:="))
+            assert isinstance(r, metadata.BadDependency)
+            assert "':=' operator" in str(r)
+            assert f'{attr.upper()}="dev-libs/foo:="' in str(r)
+
         # check for missing package revisions
         self.assertNoReport(chk, mk_pkg("=dev-libs/foo-1-r0"))
         r = self.assertReport(chk, mk_pkg(eapi="6", depset="=dev-libs/foo-1"))

Reply via email to