[tox]
minversion      = 1.4
envlist         = py3, pep8, lint, mypy

[pycodestyle]
max-line-length = 100

[testenv:pep8]
deps            = {[testenv]deps}
                  pycodestyle
commands_pre    = pycodestyle --version
commands        = pycodestyle setools/ setoolsgui/ tests/ seinfo seinfoflow sedta sesearch sediff sechecker apol --statistics

[testenv:coverage]
setenv          = SETOOLS_COVERAGE = 1
deps            = {[testenv]deps}
                  coverage>=4.0
commands_pre    = coverage --version
                  coverage erase
                  {envpython} setup.py build_ext -i
commands        = coverage run setup.py test -q
                  coverage report

[testenv:lint]
deps            = {[testenv]deps}
                  pylint
commands_pre    = pylint --version
                  {envpython} setup.py build_ext -i
commands        = pylint -E --rcfile .pylintrc setools tests seinfo seinfoflow sedta sesearch sediff sechecker
                  # pylint can't see all members introduced by PyQt uic
                  pylint -E --rcfile .pylintrc --disable=no-member,import-error setoolsgui apol

[testenv:mypy]
deps            = {[testenv]deps}
                  mypy
commands_pre    = mypy --version
commands        = mypy -p setools
                  mypy -p setoolsgui
                  mypy seinfo
                  mypy seinfoflow
                  mypy sedta
                  mypy sesearch
                  mypy sediff
                  mypy sechecker
                  mypy apol

[testenv]
passenv         = USERSPACE_SRC
deps            = networkx==2.0
                  cython>=0.27
commands_pre    = {envpython} setup.py build_ext -i
commands        = {envpython} setup.py test -q
