commit:     87c16896ff4e4f4f60640ee60cee34a47dbdc741
Author:     Michał Górny <mgorny <AT> gentoo <DOT> org>
AuthorDate: Sun Mar 14 15:16:07 2021 +0000
Commit:     Michał Górny <mgorny <AT> gentoo <DOT> org>
CommitDate: Sun Mar 28 10:22:34 2021 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=87c16896

python-utils-r1.eclass: Add eunittest helper

Add an eunittest helper to wrap up the common 'python -m unittest
discover' calls, except that they are run via
dev-python/unittest-or-fail now.  This guarantees that if no tests are
discovered the test phase fails rather than silently ignoring
the problem.  This is especially helpful since it saves the developer
from having to inspect test phase logs.

Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>

 eclass/python-utils-r1.eclass | 23 +++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/eclass/python-utils-r1.eclass b/eclass/python-utils-r1.eclass
index 3036148b838..d0bfb781905 100644
--- a/eclass/python-utils-r1.eclass
+++ b/eclass/python-utils-r1.eclass
@@ -1299,5 +1299,28 @@ epytest() {
        return ${?}
 }
 
+# @FUNCTION: eunittest
+# @USAGE: [<args>...]
+# @DESCRIPTION:
+# Run unit tests using dev-python/unittest-or-fail, passing the standard
+# set of options, followed by user-specified options.
+#
+# This command dies on failure and respects nonfatal in EAPIs supporting
+# nonfatal die.
+eunittest() {
+       debug-print-function ${FUNCNAME} "${@}"
+
+       [[ -n ${EPYTHON} ]] || die "EPYTHON unset, invalid call context"
+
+       local die_args=()
+       [[ ${EAPI} != [45] ]] && die_args+=( -n )
+
+       set -- "${EPYTHON}" -m unittest_or_fail discover -v "${@}"
+
+       echo "${@}" >&2
+       "${@}" || die "${die_args[@]}" "Tests failed with ${EPYTHON}"
+       return ${?}
+}
+
 _PYTHON_UTILS_R1=1
 fi

Reply via email to