summaryrefslogtreecommitdiff
path: root/tox.ini
blob: d1f515b7c7d383fe9f80b583b28181f62ff9c019 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
[tox]
minversion=2.3.1
envlist = py27,py33,py34,py35,flake8,linters,docs

[testenv]
deps =
    mock
    pytest
    coverage
commands =
    coverage run --parallel-mode -m pytest {posargs}
    coverage combine
    coverage report -m

[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
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
skip_install = true
deps =
    pyflakes
    pylint
commands =
    pylint src/flake8

[testenv:doc8]
basepython = python3
skip_install = true
deps =
    sphinx
    doc8
commands =
    doc8 docs/source/

[testenv:mypy]
basepython = python3
skip_install = true
deps =
    mypy-lang
commands =
    mypy flake8

[testenv:bandit]
basepython = python3
skip_install = true
deps =
    bandit
commands =
    bandit -r src/flake8/ -c .bandit.yml

[testenv:linters]
basepython = python3
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
deps =
    -rdocs/source/requirements.txt
commands =
    sphinx-build -E -W -c docs/source/ -b html docs/source/ docs/build/html

[testenv:serve-docs]
basepython = python3
skip_install = true
changedir = docs/build/html
deps =
commands =
    python -m http.server {posargs}

[testenv:readme]
basepython = python3
deps =
    readme_renderer
commands =
    python setup.py check -r -s

# Release tooling
[testenv:build]
basepython = python3
skip_install = true
deps =
    wheel
    setuptools
commands =
    python setup.py -q sdist bdist_wheel

[testenv:release]
basepython = python3
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