[tox]
envlist =
    lint,
    py27,py34,py35,py36,py37,pypy,pypy3,
    docs,coverage

isolated_build = true

requires =
    pip >= 19

[testenv]
commands =
    py.test --cov --cov-report= {posargs:}

setenv =
    COVERAGE_FILE=.coverage.{envname}

extras =
    testing

[testenv:coverage]
skip_install = true
commands =
    coverage combine
    coverage report
deps =
    coverage
setenv =
    COVERAGE_FILE=.coverage

[testenv:docs]
whitelist_externals =
    make
commands =
    make -C docs html BUILDDIR={envdir} SPHINXOPTS="-W -E"
extras =
    docs

[testenv:lint]
skip_install = true
commands =
    flake8 src/hupper/
    black --check --diff src/hupper tests setup.py
    python setup.py check -r -s -m
    check-manifest
deps =
    black
    check-manifest
    flake8
    readme_renderer

[testenv:black]
skip_install = true
commands =
    black src/hupper tests setup.py
deps =
    black

[testenv:build]
skip_install = true
commands =
    # clean up build/ and dist/ folders
    python -c 'import shutil; shutil.rmtree("dist", ignore_errors=True)'
    python setup.py clean --all
    # build sdist
    python setup.py sdist --dist-dir {toxinidir}/dist
    # build wheel from sdist
    pip wheel -v --no-deps --no-index --no-build-isolation --wheel-dir {toxinidir}/dist --find-links {toxinidir}/dist hupper
deps =
    setuptools
    wheel
