text: # 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 = py38-pyqt515-cov,mypy,misc,vulture,flake8,pylint,pyroma,check-manifest,eslint,yamllint
  distshare = {toxworkdir}
  skipsdist = true
  minversion = 3.15
  
  [testenv]
  setenv =
      PYTEST_QT_API=pyqt5
      pyqt{,57,59,510,511,512,513,514,515}: LINK_PYQT_SKIP=true
      pyqt{,57,59,510,511,512,513,514,515}: QUTE_BDD_WEBENGINE=true
      cov: PYTEST_ADDOPTS=--cov --cov-report xml --cov-report=html --cov-report=
  passenv = PYTHON DISPLAY XAUTHORITY HOME USERNAME USER CI XDG_* QUTE_* DOCKER QT_QUICK_BACKEND PY_COLORS
  basepython =
      py3: {env:PYTHON:python3}
      py35: {env:PYTHON:python3.5}
      py36: {env:PYTHON:python3.6}
      py37: {env:PYTHON:python3.7}
      py38: {env:PYTHON:python3.8}
      py39: {env:PYTHON:python3.9}
  pip_version = pip
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-tests.txt
      pyqt: -r{toxinidir}/misc/requirements/requirements-pyqt.txt
      pyqt57: -r{toxinidir}/misc/requirements/requirements-pyqt-5.7.txt
      pyqt59: -r{toxinidir}/misc/requirements/requirements-pyqt-5.9.txt
      pyqt510: -r{toxinidir}/misc/requirements/requirements-pyqt-5.10.txt
      pyqt511: -r{toxinidir}/misc/requirements/requirements-pyqt-5.11.txt
      pyqt512: -r{toxinidir}/misc/requirements/requirements-pyqt-5.12.txt
      pyqt513: -r{toxinidir}/misc/requirements/requirements-pyqt-5.13.txt
      pyqt514: -r{toxinidir}/misc/requirements/requirements-pyqt-5.14.txt
      pyqt515: -r{toxinidir}/misc/requirements/requirements-pyqt-5.15.txt
  commands =
      {envpython} scripts/link_pyqt.py --tox {envdir}
      {envpython} -bb -m pytest {posargs:tests}
      cov: {envpython} scripts/dev/check_coverage.py {posargs}
  
  # other envs
  
  [testenv:misc]
  ignore_errors = true
  basepython = {env:PYTHON:python3}
  pip_version = pip
  # 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
      {envpython} scripts/dev/misc_checks.py userscripts
  
  [testenv:vulture]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-vulture.txt
      -r{toxinidir}/misc/requirements/requirements-pyqt.txt
  setenv = PYTHONPATH={toxinidir}
  commands =
      {envpython} scripts/dev/run_vulture.py
  
  [testenv:vulture-pyqtlink]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-vulture.txt
  setenv = PYTHONPATH={toxinidir}
  commands =
      {envpython} scripts/link_pyqt.py --tox {envdir}
      {[testenv:vulture]commands}
  
  [testenv:pylint]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  ignore_errors = true
  passenv =
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-tests.txt
      -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-pyqtlink]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  ignore_errors = true
  passenv =
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-tests.txt
      -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 = {env:PYTHON:python3}
  pip_version = pip
  passenv = {[testenv:pylint]passenv}
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-tests.txt
      -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 = {env:PYTHON:python3}
  pip_version = pip
  passenv =
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-flake8.txt
  commands =
      {envpython} -m flake8 {posargs:qutebrowser tests scripts}
  
  [testenv:pyroma]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  passenv =
  deps =
      -r{toxinidir}/misc/requirements/requirements-pyroma.txt
  commands =
      {envdir}/bin/pyroma .
  
  [testenv:check-manifest]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  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 = {env:PYTHON:python3}
  pip_version = pip
  whitelist_externals = git
  passenv = CI GITHUB_REF
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-pyqt.txt
  commands =
      {envpython} scripts/dev/src2asciidoc.py {posargs}
      {envpython} scripts/dev/check_doc_changes.py {posargs}
      {envpython} scripts/asciidoc2html.py {posargs}
  
  [testenv:pyinstaller-{64,32}]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  passenv = APPDATA HOME PYINSTALLER_DEBUG
  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]
  basepython = python3
  deps =
  passenv = TERM
  whitelist_externals = eslint
  changedir = {toxinidir}/qutebrowser/javascript
  commands = eslint --report-unused-disable-directives .
  
  [testenv:shellcheck]
  basepython = python3
  deps =
  whitelist_externals = bash
  commands = bash scripts/dev/run_shellcheck.sh {posargs}
  
  [testenv:mypy]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  passenv = TERM MYPY_FORCE_TERMINAL_WIDTH
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-dev.txt
      -r{toxinidir}/misc/requirements/requirements-tests.txt
      -r{toxinidir}/misc/requirements/requirements-mypy.txt
  commands =
      {envpython} -m mypy qutebrowser tests {posargs}
  
  [testenv:yamllint]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  deps = -r{toxinidir}/misc/requirements/requirements-yamllint.txt
  commands =
      {envpython} -m yamllint -f colored --strict . {posargs}
  
  [testenv:mypy-diff]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  passenv = {[testenv:mypy]passenv}
  deps = {[testenv:mypy]deps}
  commands =
      {envpython} -m mypy --cobertura-xml-report {envtmpdir} qutebrowser tests {posargs}
      {envdir}/bin/diff-cover --fail-under=100 --compare-branch={env:DIFF_BRANCH:origin/{env:GITHUB_BASE_REF:master}} {envtmpdir}/cobertura.xml
  
  [testenv:sphinx]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  passenv =
  usedevelop = true
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-pyqt.txt
      -r{toxinidir}/misc/requirements/requirements-sphinx.txt
  commands =
      {envpython} -m sphinx -jauto -W --color {posargs} {toxinidir}/doc/extapi/ {toxinidir}/doc/extapi/_build/
  
  [testenv:build-release]
  basepython = {env:PYTHON:python3}
  pip_version = pip
  passenv = *
  usedevelop = true
  deps =
      -r{toxinidir}/requirements.txt
      -r{toxinidir}/misc/requirements/requirements-tox.txt
      -r{toxinidir}/misc/requirements/requirements-pyqt.txt
      -r{toxinidir}/misc/requirements/requirements-dev.txt
      -r{toxinidir}/misc/requirements/requirements-pyinstaller.txt
  commands =
      {envpython} {toxinidir}/scripts/dev/build_release.py {posargs}
  