commit:     394e3796c6324436920b4406006d23e043d69204
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sat Jul  5 06:06:42 2025 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sat Jul 12 05:05:18 2025 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=394e3796

python-utils-r1.eclass: epytest, avoid dupes w/ PYTEST_PLUGINS

Avoid adding duplicate `-p` arguments when the plugin in question
is already loaded via `PYTEST_PLUGINS`.  This avoids errors when
combining dependency adding via `EPYTEST_PLUGINS` with explicit loading
via `PYTEST_PLUGINS` (as needed for plugin tests themselves).

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
Part-of: https://github.com/gentoo/gentoo/pull/42876
Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/python-utils-r1.eclass | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 9e94acf34edf..bbb57901f281 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1445,12 +1445,15 @@ epytest() {
                        local plugin_args=()
                        readarray -t -d '' plugin_args < <(
                                "${EPYTHON}" - "${EPYTEST_PLUGINS[@]}" <<-EOF 
|| die
+                                       import os
                                        import sys
                                        from importlib.metadata import 
distribution, entry_points
+
+                                       env_plugins = 
os.environ.get("PYTEST_PLUGINS", "").split(",")
                                        packages = {distribution(x).name for x 
in sys.argv[1:]}
                                        eps = {
                                                f"-p{x.name}" for x in 
entry_points(group="pytest11")
-                                               if x.dist.name in packages
+                                               if x.dist.name in packages and 
x.value not in env_plugins
                                        }
                                        
sys.stdout.write("\\0".join(sorted(eps)))
                                EOF

Reply via email to