030678602a
Changelog: Filter out YES nodes when creating a temporary class for the with_metaclass hack. Having an YES node in a class bases will lead to a crash with a TypeError when trying to obtain the ancestors of the given class, because .ancestors() will try to iterate each inferred node from the bases, thus will try to iterate over an YES node.
198 lines
6.1 KiB
INI
198 lines
6.1 KiB
INI
# 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 = smoke,unittests,misc,pep257,pyflakes,pep8,mccabe,pylint,pyroma,check-manifest
|
|
|
|
[testenv]
|
|
passenv = PYTHON
|
|
basepython = python3
|
|
|
|
[testenv:mkvenv]
|
|
commands = {envpython} scripts/link_pyqt.py --tox {envdir}
|
|
envdir = {toxinidir}/.venv
|
|
usedevelop = true
|
|
|
|
[testenv:unittests]
|
|
# 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
|
|
passenv = PYTHON DISPLAY XAUTHORITY HOME
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
py==1.4.30
|
|
pytest==2.7.2
|
|
pytest-capturelog==0.7
|
|
pytest-qt==1.5.1
|
|
pytest-mock==0.7.0
|
|
pytest-html==1.3.2
|
|
hypothesis==1.9.0
|
|
hypothesis-pytest==0.14.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test --strict -rfEsw {posargs:tests}
|
|
|
|
[testenv:unittests-watch]
|
|
setenv = {[testenv:unittests]setenv}
|
|
passenv = {[testenv:unittests]passenv}
|
|
deps =
|
|
{[testenv:unittests]deps}
|
|
pytest-testmon==0.6
|
|
pytest-watch==3.2.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envdir}/bin/ptw -- --testmon --strict -rfEsw {posargs:tests}
|
|
|
|
[testenv:unittests-frozen]
|
|
setenv = {[testenv:unittests]setenv}
|
|
passenv = {[testenv:unittests]passenv}
|
|
skip_install = true
|
|
deps =
|
|
{[testenv:unittests]deps}
|
|
cx_Freeze==4.3.4
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} scripts/dev/freeze_tests.py build_exe -b {envdir}/build
|
|
{envdir}/build/run-frozen-tests --strict -rfEsw {posargs}
|
|
|
|
[testenv:coverage]
|
|
passenv = PYTHON DISPLAY XAUTHORITY HOME
|
|
deps =
|
|
{[testenv:unittests]deps}
|
|
coverage==3.7.1
|
|
pytest-cov==2.0.0
|
|
cov-core==1.15.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test --strict -rfEswx -v --cov qutebrowser --cov-report term --cov-report html --cov-report xml {posargs:tests}
|
|
{envpython} scripts/dev/check_coverage.py
|
|
|
|
[testenv:misc]
|
|
commands =
|
|
{envpython} scripts/dev/misc_checks.py git
|
|
{envpython} scripts/dev/misc_checks.py vcs
|
|
{envpython} scripts/dev/misc_checks.py spelling
|
|
|
|
[testenv:pylint]
|
|
skip_install = true
|
|
setenv = PYTHONPATH={toxinidir}/scripts/dev
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
astroid==1.3.8
|
|
beautifulsoup4==4.4.0
|
|
pylint==1.4.4
|
|
hypothesis==1.9.0
|
|
logilab-common==1.0.2
|
|
six==1.9.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m pylint scripts qutebrowser --rcfile=.pylintrc --output-format=colorized --reports=no --expected-line-ending-format=LF
|
|
{envpython} scripts/dev/run_pylint_on_tests.py --rcfile=.pylintrc --output-format=colorized --reports=no --expected-line-ending-format=LF
|
|
|
|
[testenv:pep257]
|
|
skip_install = true
|
|
deps = pep257==0.6.0
|
|
passenv = PYTHON LANG
|
|
# Disabled checks:
|
|
# D102: Missing docstring in public method (will be handled by others)
|
|
# D103: Missing docstring in public function (will be handled by others)
|
|
# D209: Blank line before closing """ (removed from PEP257)
|
|
# D402: First line should not be function's signature (false-positives)
|
|
commands = {envpython} -m pep257 scripts tests qutebrowser --ignore=D102,D103,D209,D402 '--match=(?!resources|test_*).*\.py'
|
|
|
|
[testenv:pyflakes]
|
|
# https://github.com/fschulze/pytest-flakes/issues/6
|
|
setenv = LANG=en_US.UTF-8
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
py==1.4.30
|
|
pytest==2.7.2
|
|
pyflakes==0.9.2
|
|
pytest-flakes==1.0.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test -q --flakes --ignore=tests
|
|
|
|
[testenv:pep8]
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
py==1.4.30
|
|
pytest==2.7.2
|
|
pep8==1.6.2
|
|
pytest-pep8==1.0.6
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test -q --pep8 --ignore=tests
|
|
|
|
[testenv:mccabe]
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
py==1.4.30
|
|
pytest==2.7.2
|
|
mccabe==0.3.1
|
|
pytest-mccabe==0.1
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test -q --mccabe --ignore=tests
|
|
|
|
[testenv:pyroma]
|
|
skip_install = true
|
|
deps =
|
|
pyroma==1.8.2
|
|
docutils==0.12
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envdir}/bin/pyroma .
|
|
|
|
[testenv:check-manifest]
|
|
skip_install = true
|
|
deps =
|
|
check-manifest==0.25
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envdir}/bin/check-manifest --ignore 'qutebrowser/git-commit-id,qutebrowser/html/doc,qutebrowser/html/doc/*,*/__pycache__'
|
|
|
|
[testenv:docs]
|
|
skip_install = true
|
|
whitelist_externals = git
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} scripts/dev/src2asciidoc.py
|
|
git --no-pager diff --exit-code --stat
|
|
{envpython} scripts/asciidoc2html.py {posargs}
|
|
|
|
[testenv:smoke]
|
|
# 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
|
|
passenv = PYTHON DISPLAY XAUTHORITY HOME USERNAME USER
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m qutebrowser --no-err-windows --nowindow --temp-basedir about:blank ":later 500 quit"
|
|
|
|
[testenv:smoke-frozen]
|
|
setenv = {[testenv:smoke]setenv}
|
|
passenv = {[testenv:smoke]passenv}
|
|
skip_install = true
|
|
deps =
|
|
{[testenv:smoke]deps}
|
|
cx_Freeze==4.3.4
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} scripts/dev/freeze.py build_exe --qute-skip-html -b {envdir}/build
|
|
{envdir}/build/qutebrowser --no-err-windows --nowindow --temp-basedir about:blank ":later 500 quit"
|
|
|
|
[testenv:cxfreeze-windows]
|
|
# PYTHON is actually required when using this env, but the entire tox.ini would
|
|
# fail if we didn't have a fallback defined.
|
|
basepython = {env:PYTHON:}/python.exe
|
|
skip_install = true
|
|
deps = {[testenv:smoke-frozen]deps}
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} scripts/dev/freeze.py {posargs}
|