# 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