Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F105925098
D34693.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
D34693.diff
View Options
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
Details
Attached
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)
Attached To
Mode
D34693: Mk/Uses/pytest.mk: add Uses item for pytest
Attached
Detach File
Event Timeline
Log In to Comment