| [tox] |
| isolated_build = true |
| envlist = {,ci-}py{37,38,39,310,311,py3},fuzz,run_self |
| |
| [testenv] |
| setenv = PYTHONPATH = {toxinidir}/src |
| skip_install = True |
| # We use `recreate=True` because otherwise, on the second run of `tox -e py`, |
| # the `no_jupyter` tests would run with the jupyter extra dependencies installed. |
| # See https://github.com/psf/black/issues/2367. |
| recreate = True |
| deps = |
| -r{toxinidir}/test_requirements.txt |
| ; parallelization is disabled on CI because pytest-dev/pytest-xdist#620 occurs too frequently |
| ; local runs can stay parallelized since they aren't rolling the dice so many times as like on CI |
| commands = |
| pip install -e .[d] |
| coverage erase |
| pytest tests --run-optional no_jupyter \ |
| !ci: --numprocesses auto \ |
| --cov {posargs} |
| pip install -e .[jupyter] |
| pytest tests --run-optional jupyter \ |
| -m jupyter \ |
| !ci: --numprocesses auto \ |
| --cov --cov-append {posargs} |
| coverage report |
| |
| [testenv:{,ci-}pypy3] |
| setenv = PYTHONPATH = {toxinidir}/src |
| skip_install = True |
| recreate = True |
| deps = |
| -r{toxinidir}/test_requirements.txt |
| ; a separate worker is required in ci due to https://foss.heptapod.net/pypy/pypy/-/issues/3317 |
| ; this seems to cause tox to wait forever |
| ; remove this when pypy releases the bugfix |
| commands = |
| pip install -e .[d] |
| coverage erase |
| pytest tests \ |
| --run-optional no_jupyter \ |
| !ci: --numprocesses auto \ |
| ci: --numprocesses 1 \ |
| --cov {posargs} |
| pip install -e .[jupyter] |
| pytest tests --run-optional jupyter \ |
| -m jupyter \ |
| !ci: --numprocesses auto \ |
| ci: --numprocesses 1 \ |
| --cov --cov-append {posargs} |
| coverage report |
| |
| [testenv:{,ci-}311] |
| setenv = |
| PYTHONPATH = {toxinidir}/src |
| AIOHTTP_NO_EXTENSIONS = 1 |
| skip_install = True |
| recreate = True |
| deps = |
| ; We currently need > aiohttp 3.8.1 that is on PyPI for 3.11 |
| git+https://github.com/aio-libs/aiohttp |
| -r{toxinidir}/test_requirements.txt |
| ; a separate worker is required in ci due to https://foss.heptapod.net/pypy/pypy/-/issues/3317 |
| ; this seems to cause tox to wait forever |
| ; remove this when pypy releases the bugfix |
| commands = |
| pip install -e .[d] |
| coverage erase |
| pytest tests \ |
| --run-optional no_jupyter \ |
| !ci: --numprocesses auto \ |
| ci: --numprocesses 1 \ |
| --cov {posargs} |
| pip install -e .[jupyter] |
| pytest tests --run-optional jupyter \ |
| -m jupyter \ |
| !ci: --numprocesses auto \ |
| ci: --numprocesses 1 \ |
| --cov --cov-append {posargs} |
| coverage report |
| |
| [testenv:fuzz] |
| skip_install = True |
| deps = |
| -r{toxinidir}/test_requirements.txt |
| hypothesmith |
| lark-parser |
| commands = |
| pip install -e .[d] |
| coverage erase |
| coverage run {toxinidir}/scripts/fuzz.py |
| coverage report |
| |
| [testenv:run_self] |
| setenv = PYTHONPATH = {toxinidir}/src |
| skip_install = True |
| commands = |
| pip install -e .[d] |
| black --check {toxinidir}/src {toxinidir}/tests |