# 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 = py3,lint,integration
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 --ignore modules/ --tb native -ra -v -s -n auto -k 'not integration' -m 'not serial' {posargs}
passenv =
    HOME
    VCA_HOST
    VCA_PORT
    VCA_USER
    VCA_SECRET
    # These are needed so executing `charm build` succeeds
    TERM
    TERMINFO
deps =
    mock
    pyyaml
    pytest
    pytest-asyncio
    pytest-xdist
    paramiko
    pylxd

[testenv:py3]
# default tox env, excludes integration and serial tests
commands =
    pytest --ignore modules/ --tb native -ra -v -s -n auto -k 'not integration' -m 'not serial' {posargs}

[testenv:lint]
envdir = {toxworkdir}/py3
commands =
    flake8 --ignore E501,E402 --exclude tests/charms/builds,tests/charms/deps {posargs} n2vc tests
deps =
    flake8

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

[testenv:build]
deps =
    stdeb
    setuptools-version-command
commands = python3 setup.py --command-packages=stdeb.command bdist_deb
