python/selftest/parallel.sh

41 lines
1.5 KiB
Bash
Executable file

#!/bin/sh -eux
# set default version to %{python3_version} if available
VERSION=${VERSION:-$(rpm --eval '%{?python3_version}')} || true
# ...or 3.8 if that macro is not available or rpm fails for any reason
VERSION=${VERSION:-3.8}
PYTHON=${PYTHON:-python$VERSION}
# what to skip
# test_socket swaps and kills the machine https://bugs.python.org/issue34587
X=${X:-"-x test_socket"}
TIMEOUT=${TIMEOUT:-1800}
# parallel jobs, 0 lets Python decide what's best
JOBS=${JOBS:-0}
# Fedora sets explicit minimum/maximum TLS versions.
# Python's test suite assumes that the minimum/maximum version is set to
# a magic marker. We workaround the test problem by setting:
export OPENSSL_CONF=/non-existing-file
# https://bugzilla.redhat.com/show_bug.cgi?id=1618753
# https://bugzilla.redhat.com/show_bug.cgi?id=1778357
# https://bugs.python.org/issue35045
# https://bugs.python.org/issue38815
# setuptools 60+ uses its own copy of distutils by default
# this setting must be overriden with the environment variable for
# Python tests to use the standard library's distutils
# We only do this if stdlib distutils actually exists
$PYTHON -c 'import distutils' 2>/dev/null && export SETUPTOOLS_USE_DISTUTILS=stdlib || true
$PYTHON -m test.pythoninfo
$PYTHON -m test -wW -j$JOBS --timeout=$TIMEOUT $X && e=0 || e=$?
# https://tmt.readthedocs.io/en/stable/spec/tests.html#framework says only exit code 1 is failure, rest is error
# https://github.com/python/cpython/blob/v3.14.0/Lib/test/libregrtest/results.py#L18 says a bad test exits with 2
if [ $e -eq 2 ]; then
exit 1
fi
exit $e