# tox (https://tox.readthedocs.io/) is a tool for running tests
# in multiple virtualenvs. This configuration file will run the
# test suite on all supported python versions. To use it, "pip install tox"
# and then run "tox" from this directory.

[tox]
envlist = py35
# There is no proper way to install the app for now (i.e. setup.py)
skipsdist = True

[testenv]
deps =
    -rrequirements.txt
    psycopg2
commands =
    python manage.py test

# Linters
[testenv:flake8]
deps =
    -rrequirements-dev-flake8.txt
commands =
    flake8 crashreports crashreport_stats hiccup

[testenv:pylint]
deps =
    -rrequirements.txt
    -rrequirements-dev-pylint.txt
commands =
    pylint crashreports crashreport_stats hiccup

[testenv:linters]
deps =
    {[testenv:flake8]deps}
    {[testenv:pylint]deps}
commands =
    {[testenv:flake8]commands}
    {[testenv:pylint]commands}

# Flake8 configuration
[flake8]
format = ${cyan}%(path)s${reset}:${yellow_bold}%(row)d${reset}:${green_bold}%(col)d${reset}: ${red_bold}%(code)s${reset} %(text)s
max-complexity = 10
