freebsd-ports/Mk/Uses/pytest.mk

70 lines
2.2 KiB
Makefile

# handle testing with pytest
#
# Feature: pytest
# Usage: USES=pytest[:4]
#
# It implies USES=python:test automatically if no USES=python has been
# specified yet
#
# It provides the following additional variables to set by the ports:
#
# PYTEST_ARGS additional args to pytest (defaults to empty).
# PYTEST_IGNORED_TESTS lists of `pytest -k` patterns of tests to ignore
# (defaults to empty). For tests which are not
# expected to pass, such as ones requiring a database
# access.
# PYTEST_BROKEN_TESTS lists of `pytest -k` patterns of tests to ignore
# (defaults to empty). For broken tests which require
# fixing.
#
# The following variables may be set by the user:
#
# PYTEST_ENABLE_IGNORED_TESTS enable tests which are otherwise ignored by
# PYTEST_IGNORED_TESTS.
# PYTEST_ENABLE_BROKEN_TESTS enable tests which are otherwise ignored by
# PYTEST_BROKEN_TESTS.
# PYTEST_ENABLE_ALL_TESTS enable tests which are otherwise ignored by
# PYTEST_IGNORED_TESTS and PYTEST_BROKEN_TESTS.
#
# MAINTAINER: amdmi3@FreeBSD.org
.if !defined(_INCLUDE_USES_PYTEST_MK)
_INCLUDE_USES_PYTEST_MK= yes
. if !${USES:Mpython*}
python_ARGS= test
. include "${USESDIR}/python.mk"
. endif
. if empty(pytest_ARGS)
TEST_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}pytest>=0:devel/py-pytest@${PY_FLAVOR}
. elif ${pytest_ARGS} == "4"
TEST_DEPENDS+= ${PYTHON_PKGNAMEPREFIX}pytest4>=0:devel/py-pytest4@${PY_FLAVOR}
. else
IGNORE= Incorrect 'USES+=pytest:${pytest_ARGS}' expecting 'USES+=pytest[:4]'
. endif
PYTEST_IGNORED_TESTS?= # empty
PYTEST_BROKEN_TESTS?= # empty
PYTEST_ARGS?= # empty
_PYTEST_ALL_IGNORED_TESTS?= # empty
. if !defined(PYTEST_ENABLE_IGNORED_TESTS) && !defined(PYTEST_ENABLE_ALL_TESTS)
_PYTEST_ALL_IGNORED_TESTS+= ${PYTEST_IGNORED_TESTS}
. endif
. if !defined(PYTEST_ENABLE_BROKEN_TESTS) && !defined(PYTEST_ENABLE_ALL_TESTS)
_PYTEST_ALL_IGNORED_TESTS+= ${PYTEST_BROKEN_TESTS}
. endif
_PYTEST_FILTER_EXPRESSION= ${_PYTEST_ALL_IGNORED_TESTS:C/^(.)/and not \1/:tW:C/^and //}
. if !target(do-test)
do-test:
@cd ${TEST_WRKSRC} && ${SETENVI} ${WRK_ENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest \
-k '${_PYTEST_FILTER_EXPRESSION}' \
-v -rs -o addopts= \
${PYTEST_ARGS}
. endif
.endif