Don't ignore the tests results but rather have a tolerance rate
Historically, we ignored the test results as we don't have the manpower to investigate the failures on various architectures. Since most of the test pass, I've added a 1% failure tolerance on everything except x86_64, so we do no longer need to ignore the results. This makes it easier to spat that it's no longer a couple test that fails on some random architecture but rather a more severe problem. In the process I had to disable test_decomp on ppc64le, because it segfaults.
This commit is contained in:
parent
33f8ec88d1
commit
2b99813d54
28
acceptable_failure_rate.patch
Normal file
28
acceptable_failure_rate.patch
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
diff --git a/scipy/conftest.py b/scipy/conftest.py
|
||||||
|
index b0edcdd..f5c3c0b 100644
|
||||||
|
--- a/scipy/conftest.py
|
||||||
|
+++ b/scipy/conftest.py
|
||||||
|
@@ -3,6 +3,7 @@ from __future__ import division, absolute_import, print_function
|
||||||
|
|
||||||
|
import os
|
||||||
|
import pytest
|
||||||
|
+import _pytest
|
||||||
|
import warnings
|
||||||
|
|
||||||
|
from scipy._lib._fpumode import get_fpu_mode
|
||||||
|
@@ -33,3 +34,15 @@ def check_fpu_mode(request):
|
||||||
|
warnings.warn("FPU mode changed from {0:#x} to {1:#x} during "
|
||||||
|
"the test".format(old_mode, new_mode),
|
||||||
|
category=FPUModeChangeWarning, stacklevel=0)
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ACCEPTABLE_FAILURE_RATE = int(os.environ.get('ACCEPTABLE_FAILURE_RATE', 0))
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+@pytest.hookimpl()
|
||||||
|
+def pytest_sessionfinish(session, exitstatus):
|
||||||
|
+ if exitstatus != _pytest.main.EXIT_TESTSFAILED:
|
||||||
|
+ return
|
||||||
|
+ failure_rate = (100.0 * session.testsfailed) / session.testscollected
|
||||||
|
+ if failure_rate <= ACCEPTABLE_FAILURE_RATE:
|
||||||
|
+ session.exitstatus = 0
|
42
scipy.spec
42
scipy.spec
@ -7,7 +7,7 @@
|
|||||||
Summary: Scientific Tools for Python
|
Summary: Scientific Tools for Python
|
||||||
Name: scipy
|
Name: scipy
|
||||||
Version: 1.1.0
|
Version: 1.1.0
|
||||||
Release: 1%{?dist}
|
Release: 2%{?dist}
|
||||||
|
|
||||||
Group: Development/Libraries
|
Group: Development/Libraries
|
||||||
# BSD -- whole package except:
|
# BSD -- whole package except:
|
||||||
@ -17,6 +17,11 @@ License: BSD and Boost and Public Domain
|
|||||||
Url: http://www.scipy.org/scipylib/index.html
|
Url: http://www.scipy.org/scipylib/index.html
|
||||||
Source0: https://github.com/scipy/scipy/releases/download/v%{version}/scipy-%{version}.tar.gz
|
Source0: https://github.com/scipy/scipy/releases/download/v%{version}/scipy-%{version}.tar.gz
|
||||||
|
|
||||||
|
# Previously we ignored the tests results, because they don't always pass
|
||||||
|
# Instead of ignoring the results entirely, we allow certain failure rate
|
||||||
|
# https://stackoverflow.com/a/47731333/1839451
|
||||||
|
Patch0: acceptable_failure_rate.patch
|
||||||
|
|
||||||
BuildRequires: python2-numpy, python2-devel,python2-numpy-f2py
|
BuildRequires: python2-numpy, python2-devel,python2-numpy-f2py
|
||||||
BuildRequires: python2-pytest
|
BuildRequires: python2-pytest
|
||||||
BuildRequires: python2-pytest-xdist
|
BuildRequires: python2-pytest-xdist
|
||||||
@ -109,7 +114,7 @@ leading scientists and engineers.
|
|||||||
|
|
||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q -n %{name}-%{version}%{?rcver}
|
%autosetup -p1 -n %{name}-%{version}%{?rcver}
|
||||||
cat > site.cfg << EOF
|
cat > site.cfg << EOF
|
||||||
|
|
||||||
[amd]
|
[amd]
|
||||||
@ -164,18 +169,35 @@ done
|
|||||||
%check
|
%check
|
||||||
# Skip all tests on s390x because they hangs unexpectedly and randomly
|
# Skip all tests on s390x because they hangs unexpectedly and randomly
|
||||||
# and pytest-timeout has no effect. Note that the outcome of the tests
|
# and pytest-timeout has no effect. Note that the outcome of the tests
|
||||||
# is ignored anyway so by disabling the test for s390x we are not doing
|
# was previously ignored anyway so by disabling the test for s390x we
|
||||||
# anything more dangerous.
|
# are not doing anything more dangerous.
|
||||||
%ifnarch s390x
|
%ifarch s390x
|
||||||
|
exit 0
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch x86_64
|
||||||
|
export ACCEPTABLE_FAILURE_RATE=0
|
||||||
|
%else
|
||||||
|
# there are usually 10-21 test failing, so we allow 1% failure rate
|
||||||
|
export ACCEPTABLE_FAILURE_RATE=1
|
||||||
|
%endif
|
||||||
|
|
||||||
|
%ifarch ppc64le
|
||||||
|
# test_decomp segfaults on ppc64le
|
||||||
|
export k="not test_denormals and not test_decomp"
|
||||||
|
%else
|
||||||
|
# test_denormals tends to stuck
|
||||||
|
export k="not test_denormals"
|
||||||
|
%endif
|
||||||
|
|
||||||
pushd %{buildroot}/%{python3_sitearch}
|
pushd %{buildroot}/%{python3_sitearch}
|
||||||
py.test-%{python3_version} --timeout=300 -k "not test_denormals" scipy || :
|
py.test-3 --timeout=300 -k "$k" scipy
|
||||||
popd
|
popd
|
||||||
|
|
||||||
pushd %{buildroot}/%{python2_sitearch}
|
pushd %{buildroot}/%{python2_sitearch}
|
||||||
py.test-%{python2_version} --timeout=300 -k "not test_denormals" scipy || :
|
py.test-2 --timeout=300 -k "$k" scipy
|
||||||
popd
|
popd
|
||||||
|
|
||||||
%endif # ifnarch s390x
|
|
||||||
|
|
||||||
%files -n python2-scipy
|
%files -n python2-scipy
|
||||||
%doc LICENSE.txt
|
%doc LICENSE.txt
|
||||||
@ -200,6 +222,10 @@ popd
|
|||||||
%endif # with doc
|
%endif # with doc
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Sat Jun 23 2018 Miro Hrončok <mhroncok@redhat.com> - 1.1.0-2
|
||||||
|
- Don't ignore the tests results but rather have a tolerance rate
|
||||||
|
- Skip test_decomp on ppc64le as it currently segfaults
|
||||||
|
|
||||||
* Fri Jun 22 2018 Miro Hrončok <mhroncok@redhat.com> - 1.1.0-1
|
* Fri Jun 22 2018 Miro Hrončok <mhroncok@redhat.com> - 1.1.0-1
|
||||||
- Update to 1.1.0 (#1560265, #1594355)
|
- Update to 1.1.0 (#1560265, #1594355)
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user