flake8/tox.ini
Lukasz Langa 01c0c648e1 Only require Mock on Python 3.4 and older. Use the builtin one elsewhere.
Mock 2.0 is using pbr which is hostile to environments without network access.
It's not required on Python 3.5+ so I made it possible to use `unittest.mock`
on this version.

Updated tox.ini to reflect this. Tested with 2.7.11, 3.3.6, 3.4.5, and 3.5.2 on
macOS 10.12.1 with tox and pyenv.
2016-11-27 15:13:30 -08:00

165 lines
3.1 KiB
INI

[tox]
minversion=2.3.1
envlist = py27,py33,py34,py35,flake8,linters,docs
[testenv]
deps =
pytest
coverage
mock>=2.0.0
commands =
coverage run --parallel-mode -m pytest {posargs}
coverage combine
coverage report -m
[testenv:py35]
# No mock needed on 3.5+
deps =
pytest
coverage
[testenv:venv]
deps =
.
commands = {posargs}
# Dogfood our current mastera version
[testenv:dogfood]
basepython = python3.5
skip_install = true
deps =
wheel
commands =
python setup.py -qq bdist_wheel
pip install --pre --find-links ./dist/ flake8
flake8 --version
flake8 src/flake8/ tests/ setup.py
# Linters
[testenv:flake8]
basepython = python3.5
skip_install = true
deps =
flake8
flake8-docstrings>=0.2.7
flake8-import-order>=0.9
commands =
flake8 src/flake8/ tests/ setup.py
[testenv:pylint]
basepython = python3.5
skip_install = true
deps =
pyflakes
pylint
commands =
pylint src/flake8
[testenv:doc8]
basepython = python3.5
skip_install = true
deps =
sphinx
doc8
commands =
doc8 docs/source/
[testenv:mypy]
basepython = python3.5
skip_install = true
deps =
mypy-lang
commands =
mypy flake8
[testenv:bandit]
basepython = python3.5
skip_install = true
deps =
bandit
commands =
bandit -r src/flake8/ -c .bandit.yml
[testenv:linters]
basepython = python3.5
skip_install = true
deps =
{[testenv:flake8]deps}
{[testenv:pylint]deps}
{[testenv:doc8]deps}
{[testenv:readme]deps}
{[testenv:bandit]deps}
commands =
{[testenv:flake8]commands}
{[testenv:pylint]commands}
{[testenv:doc8]commands}
{[testenv:readme]commands}
{[testenv:bandit]commands}
# Documentation
[testenv:docs]
basepython = python3.5
deps =
-rdocs/source/requirements.txt
commands =
sphinx-build -E -W -c docs/source/ -b html docs/source/ docs/build/html
sphinx-build -E -W -c docs/source/ -b man docs/source/ docs/build/man
[testenv:serve-docs]
basepython = python3.5
skip_install = true
changedir = docs/build/html
deps =
commands =
python -m http.server {posargs}
[testenv:readme]
basepython = python3.5
deps =
readme_renderer
commands =
python setup.py check -r -s
# Release tooling
[testenv:build]
basepython = python3.5
skip_install = true
deps =
wheel
setuptools
commands =
python setup.py -q sdist bdist_wheel
[testenv:release]
basepython = python3.5
skip_install = true
deps =
{[testenv:build]deps}
twine >= 1.5.0
commands =
{[testenv:build]commands}
twine upload --skip-existing dist/*
# Flake8 Configuration
[flake8]
# Ignore some flake8-docstrings errors
# NOTE(sigmavirus24): While we're still using flake8 2.x, this ignore line
# defaults to selecting all other errors so we do not need select=E,F,W,I,D
# Once Flake8 3.0 is released and in a good state, we can use both and it will
# work well \o/
ignore = D203
exclude =
.tox,
.git,
__pycache__,
docs/source/conf.py,
build,
dist,
tests/fixtures/*,
*.pyc,
*.egg-info,
.cache,
.eggs
max-complexity = 10
import-order-style = google
application-import-names = flake8