[tox] basepython = python3.8 envlist = py27, # py34, # EOL 2019-03-18 py35, py36, py37, py38, py39, black-check, lint-py27, lint-py3, coverage, skip_missing_interpreters = true [testenv] usedevelop = True extras = test passenv = LC_ALL LANG TRAVIS TRAVIS_BRANCH TRAVIS_OS_NAME TRAVIS_BUILD_ID setenv = COVERAGE_FILE=.coverage.{envname} # Note: also honors .coveragerc: commands = # Run everything from /tests folder: python -V pip list pytest -ra -v -x --cov=wsgidav --cov-report=xml --html=_build/pytest/report-{envname}.html --self-contained-html {posargs} deps = cheroot defusedxml Jinja2 json5 PyYAML pytest pytest-cov #pytest-remove-stale-bytecode pytest-html redis requests webtest [testenv:coverage] skip_install = true deps = coverage setenv = COVERAGE_FILE=.coverage commands = coverage erase coverage combine coverage html coverage xml coverage report --fail-under=30.0 [testenv:isort-apply] skip_install = true deps = isort commands = isort --apply --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py {posargs} [testenv:autopep8] skip_install = true deps = autopep8 docformatter commands = autopep8 --verbose --in-place --recursive --aggressive --aggressive {toxinidir}/wsgidav {toxinidir}/tests setup.py docformatter --in-place --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py [lint] skip_install = true deps = isort<5 # TODO: remove this, when flake8-isort is updated flake8 # helper to generate HTML reports: flake8-html # Useful flake8 plugins that are Python and Plone specific: flake8-coding flake8-debugger flake8-deprecated flake8-pytest flake8-quotes flake8-todo flake8-isort mccabe # Potential flake8 plugins that should be used: # TBD #flake8-blind-except #flake8-commas #flake8-docstrings #flake8-mypy #flake8-pep3101 #flake8-plone-hasattr #flake8-string-format #flake8_strict #flake8-quotes commands = # --htmldir needs mkdir to create the _build directory, but does not work on Windows: # mkdir -p {toxinidir}/_build/flake8 isort --check-only --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py - flake8 --doctests wsgidav tests setup.py # - flake8 --format=html --htmldir={toxinidir}/_build/flake8 --doctests wsgidav tests setup.py flake8 wsgidav tests setup.py --doctests whitelist_externals = mkdir [testenv:lint-py27] basepython = python2.7 skip_install = true # TODO: cannot re-use [lint], because isort has problems to iterate the # testsfolder (UnicodeDecodeError on Lotos..stengel (???).docx) deps = flake8 # helper to generate HTML reports: flake8-html flake8-coding flake8-pytest commands = flake8 wsgidav setup.py --doctests [testenv:lint-py3] basepython = python3.8 skip_install = true deps = {[lint]deps} flake8-bugbear commands = {[lint]commands} whitelist_externals = {[lint]whitelist_externals} [testenv:black] description = Reformat python code using Black basepython = python3.8 changedir = {toxinidir} skip_install = true deps = black commands = black wsgidav tests setup.py [testenv:black-check] description = Check Black formatting compliance and add flake8-bugbear checks basepython = python3.8 changedir = {toxinidir} skip_install = true deps = black commands = black --check --diff wsgidav tests setup.py [testenv:format] description = Reformat python code using Black and isort basepython = python3.8 changedir = {toxinidir} skip_install = true deps = black isort commands = isort --apply --recursive {toxinidir}/wsgidav {toxinidir}/tests setup.py {posargs} black wsgidav tests setup.py [testenv:docs] description = Build Sphinx documentation (output directory: docs/sphinx-build) basepython = python3.8 changedir = docs deps = sphinx recommonmark sphinx_rtd_theme commands = # http://www.sphinx-doc.org/en/master/man/sphinx-build.html sphinx-build -b html sphinx sphinx-build # [testenv:clean] # commands = # coverage erase # [testenv:stats] # commands = # coverage combine # coverage report # coverage html