From 87c16896ff4e4f4f60640ee60cee34a47dbdc741 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= Date: Sun, 14 Mar 2021 16:16:07 +0100 Subject: [PATCH] python-utils-r1.eclass: Add eunittest helper MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- 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 3036148b83835..d0bfb78190597 100644 --- a/eclass/python-utils-r1.eclass +++ b/eclass/python-utils-r1.eclass @@ -1299,5 +1299,28 @@ epytest() { return ${?} } +# @FUNCTION: eunittest +# @USAGE: [...] +# @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