# 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 = py36-cov,misc,vulture,flake8,pylint,pyroma,check-manifest,eslint distshare = {toxworkdir} skipsdist = true [testenv] # https://bitbucket.org/hpk42/tox/issue/246/ - only needed for Windows though setenv = QT_QPA_PLATFORM_PLUGIN_PATH={envdir}/Lib/site-packages/PyQt5/plugins/platforms PYTEST_QT_API=pyqt5 passenv = PYTHON DISPLAY XAUTHORITY HOME USERNAME USER CI TRAVIS XDG_* QUTE_* DOCKER deps = -r{toxinidir}/requirements.txt -r{toxinidir}/misc/requirements/requirements-tests.txt commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} -bb -m pytest {posargs:tests} # test envs with coverage [testenv:py36-cov] basepython = python3.6 setenv = {[testenv]setenv} passenv = {[testenv]passenv} deps = {[testenv]deps} commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} -bb -m pytest --cov --cov-report xml --cov-report=html --cov-report= {posargs:tests} {envpython} scripts/dev/check_coverage.py {posargs} [testenv:py35-cov] basepython = python3.5 setenv = {[testenv]setenv} passenv = {[testenv]passenv} deps = {[testenv]deps} commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} -bb -m pytest --cov --cov-report xml --cov-report=html --cov-report= {posargs:tests} {envpython} scripts/dev/check_coverage.py {posargs} [testenv:py34-cov] basepython = python3.4 setenv = {[testenv]setenv} passenv = {[testenv]passenv} deps = {[testenv]deps} commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} -bb -m pytest --cov --cov-report xml --cov-report=html --cov-report= {posargs:tests} {envpython} scripts/dev/check_coverage.py {posargs} # 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 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 commands = {envpython} -bb -m pytest {posargs:tests} # other envs [testenv:mkvenv] basepython = python3 commands = {envpython} scripts/link_pyqt.py --tox {envdir} envdir = {toxinidir}/.venv usedevelop = true deps = -r{toxinidir}/requirements.txt # This is used for Windows, since binary name is different [testenv:mkvenv-win] basepython = python.exe commands = {envpython} scripts/link_pyqt.py --tox {envdir} envdir = {toxinidir}/.venv usedevelop = true deps = -r{toxinidir}/requirements.txt # This is undocumented, but it's a common typo, so let's make it work [testenv:mkenv] basepython = {[testenv:mkvenv]basepython} commands = {[testenv:mkvenv]commands} envdir = {[testenv:mkvenv]envdir} usedevelop = {[testenv:mkvenv]usedevelop} deps = {[testenv:mkvenv]deps} # Virtualenv with PyQt5 from PyPI [testenv:mkvenv-pypi] basepython = python3 envdir = {toxinidir}/.venv commands = {envpython} -c "" usedevelop = true deps = -r{toxinidir}/requirements.txt -r{toxinidir}/misc/requirements/requirements-pyqt.txt # This is used for Windows, since binary name is different [testenv:mkvenv-win-pypi] basepython = python.exe commands = {envpython} -c "" envdir = {toxinidir}/.venv usedevelop = true deps = -r{toxinidir}/requirements.txt -r{toxinidir}/misc/requirements/requirements-pyqt.txt [testenv:misc] ignore_errors = true basepython = python3 # For global .gitignore files passenv = HOME deps = commands = {envpython} scripts/dev/misc_checks.py git {envpython} scripts/dev/misc_checks.py vcs {envpython} scripts/dev/misc_checks.py spelling [testenv:vulture] 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 passenv = deps = {[testenv]deps} -r{toxinidir}/misc/requirements/requirements-pylint.txt -r{toxinidir}/misc/requirements/requirements-pyqt.txt 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-master] basepython = python3 passenv = {[testenv:pylint]passenv} deps = {[testenv]deps} -r{toxinidir}/misc/requirements/requirements-pylint-master.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 --output-format=colorized --reports=no {posargs} [testenv:flake8] basepython = python3 passenv = deps = -r{toxinidir}/requirements.txt -r{toxinidir}/misc/requirements/requirements-flake8.txt commands = {envpython} -m flake8 {posargs:qutebrowser tests scripts} [testenv:pyroma] basepython = python3 passenv = deps = -r{toxinidir}/misc/requirements/requirements-pyroma.txt commands = {envdir}/bin/pyroma . [testenv:check-manifest] basepython = python3 passenv = deps = -r{toxinidir}/misc/requirements/requirements-check-manifest.txt commands = {envdir}/bin/check-manifest --ignore 'qutebrowser/git-commit-id,qutebrowser/html/doc,qutebrowser/html/doc/*,*/__pycache__' [testenv:docs] basepython = python3 whitelist_externals = git passenv = TRAVIS_PULL_REQUEST deps = -r{toxinidir}/requirements.txt commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} scripts/dev/src2asciidoc.py {posargs} {envpython} scripts/dev/check_doc_changes.py {posargs} {envpython} scripts/asciidoc2html.py {posargs} [testenv:pyinstaller] # WORKAROUND for https://github.com/tox-dev/tox/issues/503 install_command = pip install --exists-action w {opts} {packages} basepython = {env:PYTHON:python3} deps = -r{toxinidir}/requirements.txt -r{toxinidir}/misc/requirements/requirements-pyinstaller.txt -r{toxinidir}/misc/requirements/requirements-pyqt.txt commands = {envbindir}/pyinstaller --noconfirm misc/qutebrowser.spec [testenv:eslint] deps = whitelist_externals = eslint changedir = {toxinidir}/qutebrowser/javascript commands = eslint --color .