| [tox] |
| requires = |
| tox>=4.2 |
| env_list = |
| fix |
| py312 |
| py311 |
| py310 |
| py39 |
| py38 |
| pypy3 |
| type |
| coverage |
| readme |
| docs |
| skip_missing_interpreters = true |
| |
| [testenv] |
| description = run the unit tests with pytest under {basepython} |
| package = wheel |
| wheel_build_env = .pkg |
| extras = |
| test |
| pass_env = |
| ANDROID_DATA |
| ANDROID_ROOT |
| set_env = |
| COVERAGE_FILE = {toxworkdir}/.coverage.{envname} |
| COVERAGE_PROCESS_START = {toxinidir}/pyproject.toml |
| _COVERAGE_SRC = {envsitepackagesdir}/platformdirs |
| commands = |
| pytest {tty:--color=yes} {posargs: \ |
| --junitxml {toxworkdir}{/}junit.{envname}.xml --cov {envsitepackagesdir}{/}platformdirs \ |
| --cov {toxinidir}{/}tests \ |
| --cov-config=pyproject.toml --no-cov-on-fail --cov-report term-missing:skip-covered --cov-context=test \ |
| --cov-report html:{envtmpdir}{/}htmlcov --cov-report xml:{toxworkdir}{/}coverage.{envname}.xml \ |
| tests} |
| |
| [testenv:fix] |
| description = run static analysis and style check using flake8 |
| skip_install = true |
| deps = |
| pre-commit>=3.5 |
| pass_env = |
| HOMEPATH |
| PROGRAMDATA |
| commands = |
| pre-commit run --all-files --show-diff-on-failure |
| |
| [testenv:type] |
| description = run type check on code base |
| deps = |
| mypy==1.7.1 |
| set_env = |
| {tty:MYPY_FORCE_COLOR = 1} |
| commands = |
| mypy --strict src |
| mypy --strict tests |
| |
| [testenv:coverage] |
| description = combine coverage files and generate diff (against DIFF_AGAINST defaulting to origin/main) |
| skip_install = true |
| deps = |
| covdefaults>=2.3 |
| coverage[toml]>=7.3.2 |
| diff-cover>=8.0.1 |
| extras = |
| parallel_show_output = true |
| pass_env = |
| DIFF_AGAINST |
| set_env = |
| COVERAGE_FILE = {toxworkdir}/.coverage |
| commands = |
| coverage combine |
| coverage report --skip-covered --show-missing |
| coverage xml -o {toxworkdir}/coverage.xml |
| coverage html -d {toxworkdir}/htmlcov |
| diff-cover --compare-branch {env:DIFF_AGAINST:origin/main} {toxworkdir}/coverage.xml |
| depends = |
| py312 |
| py311 |
| py310 |
| py39 |
| py38 |
| pypy3 |
| |
| [testenv:readme] |
| description = check that the long description is valid |
| skip_install = true |
| deps = |
| build[virtualenv]>=1.0.3 |
| twine>=4.0.2 |
| pass_env = |
| * |
| change_dir = {toxinidir} |
| commands = |
| python -m build -o {envtmpdir} . |
| twine check {envtmpdir}/* |
| |
| [testenv:docs] |
| extras = |
| docs |
| commands = |
| python -c 'import glob; import subprocess; subprocess.call(["proselint"] + glob.glob("docs/*.rst"))' |
| sphinx-build -d "{envtmpdir}/doctree" docs "{toxworkdir}/docs_out" --color -b html {posargs} |
| python -c 'import pathlib; print("documentation available under \{0\}".format((pathlib.Path(r"{toxworkdir}") / "docs_out" / "index.html").as_uri()))' |
| |
| [testenv:dev] |
| description = generate a DEV environment |
| package = editable |
| extras = |
| test |
| commands = |
| python -m pip list --format=columns |
| python -c 'import sys; print(sys.executable)' |