[tox]
envlist = py36, py37, py38, pypy3, lint, docs, packaging

[gh-actions]
python =
    3.6: py36
    3.7: py37
    3.8: py38, lint, docs, packaging
    pypy3: pypy3

[testenv]
passenv =
    GITHUB_*
deps =
    pytest==6.0.1
    pytest-cov==2.10.1
    pytest-xdist==2.0.0
    hypothesis>=5.5,<6
    attrs==19.3.0
commands =
    pytest --cov-report=xml  --cov-report=term --cov=hpack {posargs}

[testenv:pypy3]
# temporarily disable coverage testing on PyPy due to performance problems
commands = pytest {posargs}

[testenv:lint]
basepython = python3.8
deps =
    flake8==3.8.3
commands = flake8 --max-complexity 10 src test utils

[testenv:docs]
basepython = python3.8
deps =
    sphinx==3.2.1
whitelist_externals = make
changedir = {toxinidir}/docs
commands =
    make clean
    make html

[testenv:packaging]
basepython = python3.8
deps =
    check-manifest==0.42
    readme-renderer==26.0
    twine==3.2.0
commands =
    check-manifest
    python setup.py sdist bdist_wheel
    twine check dist/*

[testenv:bench]
deps =
    {[testenv]deps}
    pytest-benchmark==3.2.3
commands =
    pytest {toxinidir}/bench/ --benchmark-only --benchmark-group-by=name --benchmark-autosave --benchmark-compare --benchmark-min-rounds=500000

[testenv:create_test_output]
basepython = python3.7
commands = python {toxinidir}/utils/create_test_output.py {posargs}
