| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- import sys
- sys._running_pytest = True # type: ignore
- from sympy.external.importtools import version_tuple
- import pytest
- from sympy.core.cache import clear_cache, USE_CACHE
- from sympy.external.gmpy import GROUND_TYPES
- from sympy.utilities.misc import ARCH
- import re
- try:
- import hypothesis
- hypothesis.settings.register_profile("sympy_hypothesis_profile", deadline=None)
- hypothesis.settings.load_profile("sympy_hypothesis_profile")
- except ImportError:
- raise ImportError(
- "hypothesis is a required dependency to run the SymPy test suite. "
- "Install it with 'pip install hypothesis' or 'conda install -c conda-forge hypothesis'"
- )
- sp = re.compile(r"([0-9]+)/([1-9][0-9]*)")
- def process_split(config, items):
- split = config.getoption("--split")
- if not split:
- return
- m = sp.match(split)
- if not m:
- raise ValueError(
- "split must be a string of the form a/b " "where a and b are ints."
- )
- i, t = map(int, m.groups())
- start, end = (i - 1) * len(items) // t, i * len(items) // t
- if i < t:
- # remove elements from end of list first
- del items[end:]
- del items[:start]
- def pytest_report_header(config):
- s = "architecture: %s\n" % ARCH
- s += "cache: %s\n" % USE_CACHE
- version = ""
- if GROUND_TYPES == "gmpy":
- import gmpy2
- version = gmpy2.version()
- elif GROUND_TYPES == "flint":
- try:
- from flint import __version__
- except ImportError:
- version = "unknown"
- else:
- version = f'(python-flint=={__version__})'
- s += "ground types: %s %s\n" % (GROUND_TYPES, version)
- return s
- def pytest_terminal_summary(terminalreporter):
- if terminalreporter.stats.get("error", None) or terminalreporter.stats.get(
- "failed", None
- ):
- terminalreporter.write_sep(" ", "DO *NOT* COMMIT!", red=True, bold=True)
- def pytest_addoption(parser):
- parser.addoption("--split", action="store", default="", help="split tests")
- def pytest_collection_modifyitems(config, items):
- """pytest hook."""
- # handle splits
- process_split(config, items)
- @pytest.fixture(autouse=True, scope="module")
- def file_clear_cache():
- clear_cache()
- @pytest.fixture(autouse=True, scope="module")
- def check_disabled(request):
- if getattr(request.module, "disabled", False):
- pytest.skip("test requirements not met.")
- elif getattr(request.module, "ipython", False):
- # need to check version and options for ipython tests
- if (
- version_tuple(pytest.__version__) < version_tuple("2.6.3")
- and pytest.config.getvalue("-s") != "no"
- ):
- pytest.skip("run py.test with -s or upgrade to newer version.")
|