1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- """
- Pytest configuration and fixtures for the Numpy test suite.
- """
- from __future__ import division, absolute_import, print_function
- import pytest
- import numpy
- from numpy.core._multiarray_tests import get_fpu_mode
- _old_fpu_mode = None
- _collect_results = {}
- def pytest_configure(config):
- config.addinivalue_line("markers",
- "valgrind_error: Tests that are known to error under valgrind.")
- config.addinivalue_line("markers",
- "slow: Tests that are very slow.")
- #FIXME when yield tests are gone.
- @pytest.hookimpl()
- def pytest_itemcollected(item):
- """
- Check FPU precision mode was not changed during test collection.
- The clumsy way we do it here is mainly necessary because numpy
- still uses yield tests, which can execute code at test collection
- time.
- """
- global _old_fpu_mode
- mode = get_fpu_mode()
- if _old_fpu_mode is None:
- _old_fpu_mode = mode
- elif mode != _old_fpu_mode:
- _collect_results[item] = (_old_fpu_mode, mode)
- _old_fpu_mode = mode
- @pytest.fixture(scope="function", autouse=True)
- def check_fpu_mode(request):
- """
- Check FPU precision mode was not changed during the test.
- """
- old_mode = get_fpu_mode()
- yield
- new_mode = get_fpu_mode()
- if old_mode != new_mode:
- raise AssertionError("FPU precision mode changed from {0:#x} to {1:#x}"
- " during the test".format(old_mode, new_mode))
- collect_result = _collect_results.get(request.node)
- if collect_result is not None:
- old_mode, new_mode = collect_result
- raise AssertionError("FPU precision mode changed from {0:#x} to {1:#x}"
- " when collecting the test".format(old_mode,
- new_mode))
- @pytest.fixture(autouse=True)
- def add_np(doctest_namespace):
- doctest_namespace['np'] = numpy
|