mirror of
https://github.com/gentoo-mirror/gentoo.git
synced 2026-09-17 02:39:08 -07:00
dev-python/cython: rework tests
* Make numpy conditional on USE=test-full numpy doesn't pass tests on some niche arches and maybe we'll even be able to destable it on the really niche arches at some point thanks to this. * Make numpy conditional on PYTHON_FULLY_TESTED numpy depends on cython and porting numpy to a new Python impl often takes a while, so let's make it easy to get partial coverage. * Fix numpy test dep (doesn't need to be <2 for a while now). Sent https://github.com/cython/cython/pull/6895 upstream as well. * Enable tests for py3.13, py3.14, and pypy3_11 * More robust skips for coverage tests which have had problems before They're not interesting for us in packaging. * Add some notes about other possible test deps we could add in future. Signed-off-by: Sam James <sam@gentoo.org>
This commit is contained in:
@@ -5,8 +5,9 @@ EAPI=8
|
||||
|
||||
DISTUTILS_EXT=1
|
||||
DISTUTILS_USE_PEP517=setuptools
|
||||
PYTHON_TESTED=( python3_{11..12} )
|
||||
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" pypy3_11 python3_13{,t} python3_14{,t} )
|
||||
PYTHON_FULLY_TESTED=( python3_{11..14} )
|
||||
PYTHON_TESTED=( "${PYTHON_FULLY_TESTED[@]}" pypy3_11 )
|
||||
PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" python3_{13,14}t )
|
||||
PYTHON_REQ_USE="threads(+)"
|
||||
|
||||
inherit distutils-r1 multiprocessing pypi toolchain-funcs
|
||||
@@ -21,15 +22,17 @@ HOMEPAGE="
|
||||
LICENSE="Apache-2.0"
|
||||
SLOT="0"
|
||||
KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris"
|
||||
IUSE="test"
|
||||
IUSE="test test-full"
|
||||
RESTRICT="!test? ( test )"
|
||||
|
||||
BDEPEND="
|
||||
${RDEPEND}
|
||||
test? (
|
||||
$(python_gen_cond_dep '
|
||||
<dev-python/numpy-2[${PYTHON_USEDEP}]
|
||||
' "${PYTHON_TESTED[@]}")
|
||||
test-full? (
|
||||
$(python_gen_cond_dep '
|
||||
dev-python/numpy[${PYTHON_USEDEP}]
|
||||
' "${PYTHON_FULLY_TESTED[@]}")
|
||||
)
|
||||
)
|
||||
"
|
||||
|
||||
@@ -43,13 +46,6 @@ distutils_enable_sphinx docs \
|
||||
dev-python/sphinx-issues \
|
||||
dev-python/sphinx-tabs
|
||||
|
||||
python_prepare_all() {
|
||||
# Needs dev-python/pip and doesn't like 'externally-managed' (bug #927995)
|
||||
rm tests/run/coverage_cmd_src_pkg_layout.srctree || die
|
||||
|
||||
distutils-r1_python_prepare_all
|
||||
}
|
||||
|
||||
python_compile() {
|
||||
# Python gets confused when it is in sys.path before build.
|
||||
local -x PYTHONPATH=
|
||||
@@ -58,6 +54,9 @@ python_compile() {
|
||||
}
|
||||
|
||||
python_test() {
|
||||
# PYTHON_TESTED controls whether we expect the testsuite to
|
||||
# pass at all, while PYTHON_FULLY_TESTED allows skipping before
|
||||
# numpy is ported (and possibly other deps in future).
|
||||
if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then
|
||||
einfo "Skipping tests on ${EPYTHON} (xfail)"
|
||||
return
|
||||
@@ -67,13 +66,52 @@ python_test() {
|
||||
unset CYTHON_FORCE_REGEN
|
||||
|
||||
tc-export CC
|
||||
"${PYTHON}" runtests.py \
|
||||
-vv \
|
||||
-j "$(makeopts_jobs)" \
|
||||
--work-dir "${BUILD_DIR}"/tests \
|
||||
--no-examples \
|
||||
--no-code-style \
|
||||
|| die "Tests fail with ${EPYTHON}"
|
||||
|
||||
local testargs=(
|
||||
-vv
|
||||
-j "$(makeopts_jobs)"
|
||||
--work-dir "${BUILD_DIR}"/tests
|
||||
|
||||
--no-examples
|
||||
--no-code-style
|
||||
|
||||
# Fails to find embedded.c
|
||||
--exclude 'embedded'
|
||||
# coverage_installed_pkg needs dev-python/pip and doesn't like
|
||||
# 'externally-managed' (bug #927995), but we don't really
|
||||
# want automagic test dependencies at all, so just skip
|
||||
# unimportant-for-us coverage tests entirely.
|
||||
--exclude 'run.coverage*'
|
||||
--exclude 'Cython.Coverage'
|
||||
# Automagic on dev-python/python-tests, could add this in future
|
||||
--exclude 'run.test_exceptions'
|
||||
# TODO: Unpackaged dev-python/interpreters-pep-734 (interpreters_backport)
|
||||
# This only shows up as a failure with >=3.13.
|
||||
--exclude 'subinterpreters_threading_stress_test'
|
||||
)
|
||||
|
||||
if [[ ${EPYTHON} == pypy3* ]] ; then
|
||||
testargs+=(
|
||||
# Recursion issue
|
||||
--exclude 'run.if_else_expr'
|
||||
--exclude 'run.test_patma*'
|
||||
# Slight output difference (missing '<')
|
||||
--exclude 'run.cpp_exception_ptr_just_handler'
|
||||
|
||||
)
|
||||
fi
|
||||
|
||||
# Keep test-full for numpy as it's large and doesn't pass tests itself
|
||||
# on niche arches.
|
||||
if ! use test-full || ! has "${EPYTHON/./_}" "${PYTHON_FULLY_TESTED[@]}"; then
|
||||
testargs+=(
|
||||
--exclude 'run.numpy*'
|
||||
--exclude 'run.ufunc'
|
||||
--exclude 'numpy*'
|
||||
)
|
||||
fi
|
||||
|
||||
"${PYTHON}" runtests.py "${testargs[@]}" || die "Tests fail with ${EPYTHON}"
|
||||
}
|
||||
|
||||
python_install_all() {
|
||||
|
||||
@@ -10,6 +10,12 @@
|
||||
language as easy as Python itself. It's based on Pyrex, but supports
|
||||
more cutting edge functionality and optimizations.
|
||||
</longdescription>
|
||||
<use>
|
||||
<flag name="test-full">
|
||||
Run test suite in full via additional (large) test
|
||||
dependencies, like dev-python/numpy.
|
||||
</flag>
|
||||
</use>
|
||||
<upstream>
|
||||
<remote-id type="pypi">Cython</remote-id>
|
||||
<remote-id type="github">cython/cython</remote-id>
|
||||
|
||||
Reference in New Issue
Block a user