summaryrefslogtreecommitdiff
path: root/tox.ini
blob: 69a1c5d74d9ad8ab039190435d6909eb28c8325b (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
[tox]
minversion = 2.4
envlist = py36, py37, py38, py39, pypy, pylint, benchmark
skip_missing_interpreters = true


[testenv:pylint]
deps =
    -r {toxinidir}/requirements_test_min.txt
commands =
    # This would be greatly simplified by a solution for https://github.com/PyCQA/pylint/issues/352
    pylint -rn --rcfile={toxinidir}/pylintrc --load-plugins=pylint.extensions.docparams, pylint.extensions.mccabe \
    {toxinidir}/pylint \
    {toxinidir}/tests/message/ \
    {toxinidir}/tests/checkers/ \
    {toxinidir}/tests/extensions/ \
    {toxinidir}/tests/utils/ \
    {toxinidir}/tests/acceptance/ \
    {toxinidir}/tests/conftest.py \
    {toxinidir}/tests/test_config.py \
    {toxinidir}/tests/test_func.py \
    {toxinidir}/tests/test_functional.py \
    {toxinidir}/tests/test_import_graph.py \
    {toxinidir}/tests/test_pragma_parser.py \
    {toxinidir}/tests/test_pylint_runners.py \
    {toxinidir}/tests/test_regr.py \
    {toxinidir}/tests/test_self.py \
    {toxinidir}/tests/unittest_config.py \
    {toxinidir}/tests/lint/ \
    {toxinidir}/tests/unittest_pyreverse_diadefs.py \
    {toxinidir}/tests/unittest_pyreverse_inspector.py \
    {toxinidir}/tests/unittest_pyreverse_writer.py \
    {toxinidir}/tests/unittest_reporters_json.py \
    {toxinidir}/tests/unittest_reporting.py


[testenv:formatting]
basepython = python3
deps =
    -r {toxinidir}/requirements_test_min.txt
    pre-commit==2.10.1
commands =
    pre-commit run --all-files


[testenv:mypy]
basepython = python3
deps =
    pre-commit==2.10.1
commands =
    pre-commit run mypy --all-files


[testenv]
setenv =
    COVERAGE_FILE = {toxinidir}/.coverage.{envname}
deps =
    -r {toxinidir}/requirements_test.txt
commands =
    ; Run tests, ensuring all benchmark tests do not run
    pytest --benchmark-disable {toxinidir}/tests/ {posargs:}


[testenv:spelling]
deps =
    -r {toxinidir}/requirements_test.txt
commands =
    pytest {toxinidir}/tests/ {posargs:} -k unittest_spelling


[testenv:coverage-html]
setenv =
    COVERAGE_FILE = {toxinidir}/.coverage
deps =
    -r {toxinidir}/requirements_test.txt
skip_install = true
commands =
    coverage combine
    coverage html --ignore-errors --rcfile={toxinidir}/.coveragerc


[testenv:docs]
changedir = doc/
deps =
    -r {toxinidir}/requirements_docs.txt
skip_install = true
commands =
    sphinx-build -W -b html -d _build/doctrees . _build/html


[testenv:benchmark]
deps =
    -r {toxinidir}/requirements_test.txt
    pygal
commands =
    ; Run the only the benchmark tests, grouping output and forcing .json output so we
    ; can compare benchmark runs
    pytest --exitfirst \
        --failed-first \
        --benchmark-only \
        --benchmark-save=batch_files \
        --benchmark-save-data \
        --benchmark-autosave {toxinidir}/tests \
        --benchmark-group-by="group" \
        {posargs:}

[testenv:profile_against_external]
setenv =
    PYTEST_PROFILE_EXTERNAL = 1
deps =
    -r {toxinidir}/requirements_test.txt
   gprof2dot
commands =
    pytest --exitfirst \
        --profile-svg {toxinidir}/tests/profile/test_profile_against_externals.py