[tox]
envlist = py36,py37,py38,py39,py39-dev,pypy,pypy3,bare,coverage-report


[testenv]
# Prevent random setuptools/pip breakages like
# https://github.com/pypa/setuptools/issues/1042 from breaking our builds.
setenv =
    VIRTUALENV_NO_DOWNLOAD=1
deps=
    -r{toxinidir}/requirements.txt
    -r{toxinidir}/dev-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:py36]
deps=
   dbus-python
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:py37]
deps=
   dbus-python
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:py38]
deps=
   dbus-python
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:py39]
deps=
   dbus-python
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics


[testenv:bare]
deps=
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:py39-dev]
deps=
   dbus-python
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:pypy]
deps=
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
commands =
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:pypy3]
deps=
   -r{toxinidir}/requirements.txt
   -r{toxinidir}/dev-requirements.txt
   -r{toxinidir}/all-plugin-requirements.txt
# Last supported cryptography version that can link against
# OpenSSL v1.0.2 (which pypy35 uses) is 3.1.1
commands =
    pip install --upgrade cryptography==3.1.1
    python setup.py compile_catalog
    coverage run --parallel -m pytest {posargs}
    flake8 . --count --show-source --statistics

[testenv:coverage-report]
deps = coverage
skip_install = true
commands=
   coverage combine
   coverage report
