generate pytest envs with tox factors

This eliminates all separate pytest envs in favor of conditionals in
[testenv]. This requires renaming some environments to make the lack of
certain functionality explicit:

- instead of omitting pyqt{version}, use pyqtlink to use host PyQt

tox.ini: eliminate -nocov

It is possible to set the `PYTEST_ADDOPTS` environment variable to
enable coverage checks, rather than a new command.
This commit is contained in:
Ryan Farley 2017-11-29 02:29:53 -06:00
parent 45a1989a1f
commit f7b0ac503e

142
tox.ini
View File

@ -13,120 +13,24 @@ skipsdist = true
setenv =
QT_QPA_PLATFORM_PLUGIN_PATH={envdir}/Lib/site-packages/PyQt5/plugins/platforms
PYTEST_QT_API=pyqt5
pyqt{,56,571,58,59}: QUTE_BDD_WEBENGINE=true
cov: PYTEST_ADDOPTS=--cov --cov-report xml --cov-report=html --cov-report=
passenv = PYTHON DISPLAY XAUTHORITY HOME USERNAME USER CI TRAVIS XDG_* QUTE_* DOCKER
basepython =
py35: python3.5
py36: python3.6
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/misc/requirements/requirements-tests.txt
pyqt: PyQt5
pyqt56: PyQt5==5.6
pyqt571: PyQt5==5.7.1
pyqt58: PyQt5==5.8.2
pyqt59: PyQt5==5.9.2
commands =
{envpython} scripts/link_pyqt.py --tox {envdir}
pyqtlink: {envpython} scripts/link_pyqt.py --tox {envdir}
{envpython} -bb -m pytest {posargs:tests}
# test envs with PyQt5 from PyPI
[testenv:py35-pyqt56]
basepython = python3.5
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.6
commands = {envpython} -bb -m pytest {posargs:tests}
[testenv:py35-pyqt571]
basepython = python3.5
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.7.1
commands = {envpython} -bb -m pytest {posargs:tests}
[testenv:py36-pyqt571]
basepython = python3.6
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.7.1
commands = {envpython} -bb -m pytest {posargs:tests}
[testenv:py35-pyqt58]
basepython = python3.5
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.8.2
commands = {envpython} -bb -m pytest {posargs:tests}
[testenv:py36-pyqt58]
basepython = {env:PYTHON:python3.6}
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.8.2
commands = {envpython} -bb -m pytest {posargs:tests}
[testenv:py35-pyqt59]
basepython = python3.5
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.9.2
commands = {envpython} -bb -m pytest {posargs:tests}
[testenv:py36-pyqt59]
basepython = {env:PYTHON:python3.6}
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.9.2
commands = {envpython} -bb -m pytest {posargs:tests}
# test envs with coverage
[testenv:py35-pyqt59-cov]
basepython = python3.5
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.9.2
commands =
{envpython} -bb -m pytest --cov --cov-report xml --cov-report=html --cov-report= {posargs:tests}
{envpython} scripts/dev/check_coverage.py {posargs}
[testenv:py36-pyqt59-cov]
basepython = python3.6
setenv =
{[testenv]setenv}
QUTE_BDD_WEBENGINE=true
passenv = {[testenv]passenv}
deps =
{[testenv]deps}
PyQt5==5.9.2
commands =
{envpython} -bb -m pytest --cov --cov-report xml --cov-report=html --cov-report= {posargs:tests}
{envpython} scripts/dev/check_coverage.py {posargs}
cov: {envpython} scripts/dev/check_coverage.py {posargs}
# other envs
@ -196,6 +100,16 @@ setenv = PYTHONPATH={toxinidir}
commands =
{envpython} scripts/dev/run_vulture.py
[testenv:vulture-pyqtlink]
basepython = python3
deps =
-r{toxinidir}/requirements.txt
-r{toxinidir}/misc/requirements/requirements-vulture.txt
setenv = PYTHONPATH={toxinidir}
commands =
{envpython} scripts/link_pyqt.py --tox {envdir}
{envpython} scripts/dev/run_vulture.py
[testenv:pylint]
basepython = {env:PYTHON:python3}
ignore_errors = true
@ -208,6 +122,18 @@ commands =
{envpython} -m pylint scripts qutebrowser --output-format=colorized --reports=no {posargs}
{envpython} scripts/dev/run_pylint_on_tests.py {toxinidir} --output-format=colorized --reports=no {posargs}
[testenv:pylint-pyqtlink]
basepython = {env:PYTHON:python3}
ignore_errors = true
passenv =
deps =
{[testenv]deps}
-r{toxinidir}/misc/requirements/requirements-pylint.txt
commands =
{envpython} scripts/link_pyqt.py --tox {envdir}
{envpython} -m pylint scripts qutebrowser --output-format=colorized --reports=no {posargs}
{envpython} scripts/dev/run_pylint_on_tests.py {toxinidir} --output-format=colorized --reports=no {posargs}
[testenv:pylint-master]
basepython = python3
passenv = {[testenv:pylint]passenv}