# https://tox.wiki/en/latest/user_guide.html # https://tox.wiki/en/latest/config.html [tox] envlist = flake8,py3{7,8,9,10,11},covreport,docs,precommit isolated_build = True toxworkdir={env:TOX_WORK_DIR:{tox_root}/.tox} [testenv] passenv = DBUS_SESSION_BUS_ADDRESS # This is needed for keyring acccess on Linux. allowlist_externals = poetry setenv = extensive: BERKELEYDB_DIR = /usr COVERAGE_FILE = {env:COVERAGE_FILE:{toxinidir}/.coverage.{envname}} MYPY_CACHE_DIR = {envdir}/.mypy_cache docs: POETRY_ARGS_docs = --only=docs extensive: POETRY_ARGS_extensive = --extras=berkeleydb --extras=networkx lxml: POETRY_ARGS_lxml = --extras=lxml commands_pre = py3{7,8,9,10,11}: python -c 'import os; print("\n".join(f"{key}={value}" for key, value in os.environ.items()))' py3{7,8,9,10,11}: poetry lock --check py3{7,8,9,10,11}: poetry install --no-root --only=main --only=dev --only=flake8 --only=tests --extras=html {env:POETRY_ARGS_docs:} {env:POETRY_ARGS_extensive:} {env:POETRY_ARGS_lxml:} {env:POETRY_ARGS:} --sync commands = {env:TOX_EXTRA_COMMAND:} {env:TOX_MYPY_COMMAND:poetry run python -m mypy --show-error-context --show-error-codes --junit-xml=test_reports/{env:TOX_JUNIT_XML_PREFIX:}mypy-junit.xml} {posargs:poetry run {env:TOX_TEST_HARNESS:} pytest -ra --tb=native {env:TOX_PYTEST_ARGS:--junit-xml=test_reports/{env:TOX_JUNIT_XML_PREFIX:}pytest-junit.xml --cov --cov-report=} {env:TOX_PYTEST_EXTRA_ARGS:}} docs: poetry run sphinx-build -T -W -b html -d {envdir}/doctree docs docs/_build/html [testenv:covreport] skip_install = true parallel_show_output = true depends = py3{7,8,9,10}{-extensive,}{-docs,} setenv = COVERAGE_FILE= commands_pre = poetry install --no-root --only=tests commands = poetry run python -m coverage combine poetry run python -m coverage report [testenv:flake8] skip_install = true commands_pre = poetry install --no-root --only=flake8 commands = poetry run python -m flakeheaven lint [testenv:docs] passenv = TERM DBUS_SESSION_BUS_ADDRESS setenv = PYTHONHASHSEED = 0 commands_pre = poetry lock --check poetry install --only=main --only=docs --extras=html poetry env info commands = poetry run sphinx-build -T -W -b html -d {envdir}/doctree docs docs/_build/html [testenv:py37-extensive-min] base = void deps = pytest==7.* pytest-cov==4.* setenv = BERKELEYDB_DIR = /usr COVERAGE_FILE = {env:COVERAGE_FILE:{toxinidir}/.coverage.{envname}} PIP_CONSTRAINT = devtools/constraints.min extras = berkeleydb networkx lxml html commands = {envpython} --version pip freeze {posargs:{envpython} -m pytest -ra --tb=native {env:TOX_PYTEST_ARGS:--junit-xml=test_reports/{env:TOX_JUNIT_XML_PREFIX:}pytest-junit.xml --cov --cov-report=}} [testenv:precommit{,all}] skip_install = true deps = pre-commit passenv = HOMEPATH # needed on Windows PRE_COMMIT_HOME # so that users can configure it XDG_CACHE_HOME # so that pre-commit won't use the default commands = precommit: pre-commit run precommitall: pre-commit run --all-files