Fix `epytest` with `EPYTEST_XDIST` not to pass a duplicate `-p xdist`
when `xdist.plugin` is already present in `PYTEST_PLUGINS`.  Otherwise,
pytest will fail due to the plugin being loaded twice.

Signed-off-by: Michał Górny <mgo...@gentoo.org>
---
 eclass/python-utils-r1.eclass | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 80abe974f9df..1de4f325de33 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1390,10 +1390,14 @@ epytest() {
        if [[ ${EPYTEST_XDIST} ]]; then
                local jobs=${EPYTEST_JOBS:-$(makeopts_jobs)}
                if [[ ${jobs} -gt 1 ]]; then
+                       if [[ ${PYTEST_PLUGINS} != *xdist.plugin* ]]; then
+                               args+=(
+                                       # explicitly enable the plugin, in case 
the ebuild was
+                                       # using PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
+                                       -p xdist
+                               )
+                       fi
                        args+=(
-                               # explicitly enable the plugin, in case the 
ebuild was using
-                               # PYTEST_DISABLE_PLUGIN_AUTOLOAD=1
-                               -p xdist
                                -n "${jobs}"
                                # worksteal ensures that workers don't end up 
idle when heavy
                                # jobs are unevenly distributed
-- 
2.42.1


Reply via email to