# Tox (http://tox.testrun.org/) 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 = lint,py3
skipsdist=True

[pytest]
markers =
    serial: mark a test that must run by itself

[testenv]
basepython=python3
usedevelop=True
# for testing with other python versions
commands = py.test --tb native -ra -v -s -n auto -k 'not integration' -m 'not serial' {posargs}
passenv =
    HOME
    TEST_AGENTS
deps =
    pytest
    pytest-asyncio
    pytest-xdist
    mock
    asynctest
    ipdb

[testenv:py3]
# default tox env excludes integration and serial tests
commands =
    # These need to be installed in a specific order
    pip install urllib3==1.22
    pip install pylxd
    py.test --tb native -ra -v -s -n auto -k 'not integration' -m 'not serial' {posargs}

[testenv:lint]
envdir = {toxworkdir}/py3
commands =
    flake8 --ignore E501 {posargs} juju tests
deps =
    flake8

[testenv:lint]
envdir = {toxworkdir}/py35
commands =
    flake8 --ignore E501 {posargs} juju
deps =
    flake8

[testenv:integration]
envdir = {toxworkdir}/py3
commands = py.test --tb native -ra -v -s -n auto -k 'integration' -m 'not serial' {posargs}

[testenv:serial]
# tests that can't be run in parallel
envdir = {toxworkdir}/py3
commands = py.test --tb native -ra -v -s {posargs:-m 'serial'}

[testenv:example]
envdir = {toxworkdir}/py3
commands = python {posargs}

[flake8]
exclude = juju/client/_*
