Page MenuHomeFreeBSD

D34693.diff
No OneTemporary

D34693.diff

diff --git a/CHANGES b/CHANGES
--- a/CHANGES
+++ b/CHANGES
@@ -10,6 +10,19 @@
All ports committers are allowed to commit to this file.
+20220415:
+AUTHOR: amdmi3@FreeBSD.org
+
+ A new USES has been added to handle testing with pytest.
+
+ USES= pytest
+
+ Introduces dependency on pytest and adds do-test target which calls
+ pytest with the right environment and arguments.
+
+ Additionally, PYTEST_{IGNORED,BROKEN}_TESTS knobs are provided for
+ skipping failing tests in a convenient and documented way.
+
20220218:
AUTHOR: jrm@FreeBSD.org
diff --git a/Mk/Uses/pytest.mk b/Mk/Uses/pytest.mk
new file mode 100644
--- /dev/null
+++ b/Mk/Uses/pytest.mk
@@ -0,0 +1,69 @@
+# 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} && ${SETENV} ${TEST_ENV} ${PYTHON_CMD} -m pytest \
+ -k '${_PYTEST_FILTER_EXPRESSION}' \
+ -v -rs -o addopts= \
+ ${PYTEST_ARGS}
+. endif
+
+.endif

File Metadata

Mime Type
text/plain
Expires
Mon, Dec 23, 6:00 PM (19 h, 24 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
15573379
Default Alt Text
D34693.diff (2 KB)

Event Timeline