On Fri, Mar 15, 2019 at 11:46:30AM +0100, Antoine Jacoutot wrote:
> On Fri, Mar 15, 2019 at 10:43:39AM +0000, Stuart Henderson wrote:
> > On 2019/03/15 11:25, Antoine Jacoutot wrote:
> > > On Fri, Mar 15, 2019 at 09:48:39AM +0000, Stuart Henderson wrote:
> > > > I'd really like if this could be factored into the module so we can get 
> > > > rid
> > > > of copies all over the tree.. perhaps behind a MODPY_PYTEST=Yes and 
> > > > using
> > > > something like MODPY_PYTEST_FLAGS for those that need more than just -m
> > > > pytest?
> > > 
> > > Why don't we add it by default for lang/python module ports?
> > > I mean, would it hurt anything?
> > 
> > We already have a different default test target for python that uses
> > setup.py.. It's annoying, there are about 3 common methods.
> 
> I mean adding a default TEST_ENV in the module.

This adds TEST_ENV to python.port.mk. Plus it adds MODPY_PYTEST and
MODPY_PYTEST_ARGS to deal with "-m pytest". I counted a bit more than
70 ports using this testing method.

I added productivity/vdirsyncer as an example.

OK?

Remi


Index: lang/python/python.port.mk
===================================================================
RCS file: /cvs/ports/lang/python/python.port.mk,v
retrieving revision 1.100
diff -u -p -r1.100 python.port.mk
--- lang/python/python.port.mk  4 Dec 2018 05:57:31 -0000       1.100
+++ lang/python/python.port.mk  16 Mar 2019 20:40:34 -0000
@@ -150,6 +150,7 @@ CONFIGURE_ENV +=    PYTHON="${MODPY_BIN}"
 CONFIGURE_ENV +=       ac_cv_prog_PYTHON="${MODPY_BIN}" \
                        ac_cv_path_PYTHON="${MODPY_BIN}"
 .endif
+TEST_ENV +=            LC_CTYPE=C.UTF-8
 
 MODPY_CMD =    cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} \
                        ${MODPY_BIN} ./${MODPY_SETUP} \
@@ -159,6 +160,9 @@ MODPY_TEST_CMD = cd ${WRKSRC} && ${SETEN
                        ${MODPY_BIN} ./${MODPY_SETUP} \
                        ${MODPY_SETUP_ARGS}
 
+MODPY_PYTEST_CMD = cd ${WRKSRC} && ${SETENV} ${ALL_TEST_ENV} \
+                       ${MODPY_BIN} -m pytest
+
 SUBST_VARS :=  MODPY_PYCACHE MODPY_COMMENT MODPY_ABI3SO MODPY_PYC_MAGIC_TAG \
                MODPY_BIN MODPY_EGG_VERSION MODPY_VERSION MODPY_BIN_SUFFIX \
                MODPY_PY_PREFIX MODPY_PYOEXTENSION ${SUBST_VARS}
@@ -184,6 +188,8 @@ MODPY_INSTALL_TARGET = \
                ${MODPY_DISTUTILS_INSTALL} ${MODPY_DISTUTILS_INSTALLARGS}
 MODPY_TEST_TARGET = \
        ${MODPY_TEST_CMD} ${TEST_TARGET}
+MODPY_PYTEST ?=        no
+MODPY_PYTEST_ARGS ?=
 
 # dirty way to do it with no modifications in bsd.port.mk
 .if empty(CONFIGURE_STYLE)
@@ -198,8 +204,11 @@ do-install:
        @${MODPY_INSTALL_TARGET}
 .  endif
 
+.  if !target(do-test) && ${MODPY_PYTEST:L} == "yes"
+do-test:
+       ${MODPY_PYTEST_CMD} ${MODPY_PYTEST_ARGS}
 # setuptools supports regress testing from setup.py using a standard target
-.  if !target(do-test) && ${MODPY_SETUPUTILS:L} == "yes"
+.  elif !target(do-test) && ${MODPY_SETUPUTILS:L} == "yes"
 do-test:
        @${MODPY_TEST_TARGET}
 .  endif
Index: productivity/vdirsyncer/Makefile
===================================================================
RCS file: /cvs/ports/productivity/vdirsyncer/Makefile,v
retrieving revision 1.7
diff -u -p -r1.7 Makefile
--- productivity/vdirsyncer/Makefile    16 Aug 2018 21:37:55 -0000      1.7
+++ productivity/vdirsyncer/Makefile    16 Mar 2019 20:40:34 -0000
@@ -20,6 +20,8 @@ MODULES =             lang/python
 MODPY_VERSION=         ${MODPY_DEFAULT_VERSION_3}
 MODPY_PI =             Yes
 MODPY_SETUPTOOLS =     Yes
+MODPY_PYTEST =         Yes
+MODPY_PYTEST_ARGS =    tests/
 
 BUILD_DEPENDS =                textproc/py-sphinx${MODPY_FLAVOR} \
                        devel/py-setuptools_scm${MODPY_FLAVOR} \
@@ -37,6 +39,9 @@ TEST_DEPENDS =                devel/py-hypothesis${MOD
                        www/py-urllib3${MODPY_FLAVOR} \
                        ${RUN_DEPENDS}
 
+TEST_ENV +=            DAV_SERVER=skip \
+                       DETERMINISTIC_TESTS=true
+
 post-build:
        cd ${WRKSRC}/docs; ${MAKE_ENV} PYTHONPATH=${WRKSRC} \
                sphinx-build${MODPY_BIN_SUFFIX} \
@@ -52,9 +57,5 @@ post-install:
                pax -rw * ${PREFIX}/share/doc/vdirsyncer
        ${INSTALL_DATA} ${WRKSRC}/config.example \
                ${PREFIX}/share/examples/vdirsyncer
-
-do-test:
-       cd ${WRKSRC}; DAV_SERVER=skip DETERMINISTIC_TESTS=true \
-               ${MODPY_BIN} -m pytest tests/
 
 .include <bsd.port.mk>

Reply via email to