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