df98312f42
* Handle the import fallback idiom with regard to wrong-import-order. * Decouple the displaying of reports from the displaying of messages Some reporters are aggregating the messages instead of displaying them when they are available. The actual displaying was conflatted in the generate_reports. Unfortunately this behaviour was flaky and in the case of the JSON reporter, the messages weren't shown at all if a file had syntax errors or if it was missing. In order to fix this, the aggregated messages can now be displayed with Reporter.display_message, while the reports are displayed with display_reports. * Ignore function calls with variadic arguments without a context. Inferring variadic positional arguments and keyword arguments will result into empty Tuples and Dicts, which can lead in some cases to false positives with regard to no-value-for-parameter. In order to avoid this, until we'll have support for call context propagation, we're ignoring such cases if detected. * Treat AsyncFunctionDef just like FunctionDef nodes, by implementing visit_asyncfunctiondef in terms of visit_functiondef. * Take in account kwonlyargs when verifying that arguments are defined with the check_docs extension. * Suppress reporting 'unneeded-not' inside `__ne__` methods
242 lines
6.6 KiB
INI
242 lines
6.6 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 = py34,py35,misc,vulture,pep257,pyflakes,pep8,mccabe,pylint,pyroma,check-manifest
|
|
|
|
[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_*
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
beautifulsoup4==4.4.1
|
|
coverage==4.0.3
|
|
decorator==4.0.6
|
|
Flask==0.10.1
|
|
glob2==0.4.1
|
|
httpbin==0.4.0
|
|
hypothesis==2.0.0
|
|
itsdangerous==0.24
|
|
Mako==1.0.3
|
|
parse==1.6.6
|
|
parse-type==0.3.4
|
|
py==1.4.31
|
|
pytest==2.8.5
|
|
pytest-bdd==2.16.0
|
|
pytest-catchlog==1.2.1
|
|
pytest-cov==2.2.0
|
|
pytest-faulthandler==1.3.0
|
|
pytest-html==1.7
|
|
pytest-mock==0.9.0
|
|
pytest-qt==1.11.0
|
|
pytest-instafail==0.3.0
|
|
pytest-travis-fold==1.2.0
|
|
pytest-repeat==0.2
|
|
six==1.10.0
|
|
termcolor==1.1.0
|
|
vulture==0.8.1
|
|
Werkzeug==0.11.3
|
|
wheel==0.26.0
|
|
xvfbwrapper==0.2.7
|
|
cherrypy==4.0.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test --strict -rfEsw --faulthandler-timeout=70 --instafail --cov --cov-report xml --cov-report=html --cov-report= {posargs:tests}
|
|
{envpython} scripts/dev/check_coverage.py {posargs}
|
|
|
|
[testenv:mkvenv]
|
|
basepython = python3
|
|
commands = {envpython} scripts/link_pyqt.py --tox {envdir}
|
|
envdir = {toxinidir}/.venv
|
|
usedevelop = true
|
|
|
|
[testenv:unittests-frozen]
|
|
# cx_Freeze doesn't support Python 3.5 yet
|
|
basepython = python3.4
|
|
passenv = {[testenv]passenv}
|
|
skip_install = true
|
|
deps =
|
|
{[testenv]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:unittests-nodisp]
|
|
basepython = python3
|
|
passenv = {[testenv]passenv}
|
|
deps = {[testenv]deps}
|
|
setenv =
|
|
DISPLAY=
|
|
QUTE_NO_DISPLAY=1
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test --strict -rfEw {posargs:tests}
|
|
|
|
[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 = vulture==0.8.1
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} scripts/dev/run_vulture.py
|
|
|
|
[testenv:pylint]
|
|
basepython = python3
|
|
ignore_errors = true
|
|
skip_install = true
|
|
setenv = PYTHONPATH={toxinidir}/scripts/dev
|
|
passenv =
|
|
deps =
|
|
{[testenv]deps}
|
|
{[testenv:misc]deps}
|
|
astroid==1.4.3
|
|
pylint==1.5.3
|
|
requests==2.9.1
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m pylint scripts qutebrowser --output-format=colorized --reports=no
|
|
{envpython} scripts/dev/run_pylint_on_tests.py {toxinidir} --output-format=colorized --reports=no
|
|
|
|
[testenv:pylint-tip]
|
|
basepython = python3
|
|
skip_install = true
|
|
setenv = {[testenv:pylint]setenv}
|
|
passenv = {[testenv:pylint]passenv}
|
|
deps =
|
|
{[testenv]deps}
|
|
{[testenv:misc]deps}
|
|
hg+https://bitbucket.org/logilab/astroid
|
|
hg+https://bitbucket.org/logilab/pylint
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m pylint scripts qutebrowser --output-format=colorized --reports=no
|
|
{envpython} scripts/dev/run_pylint_on_tests.py --output-format=colorized --reports=no
|
|
|
|
[testenv:pep257]
|
|
basepython = python3
|
|
skip_install = true
|
|
passenv = PYTHON LANG
|
|
deps = pep257==0.7.0
|
|
# Disabled checks:
|
|
# D102: Missing docstring in public method (will be handled by others)
|
|
# D103: Missing docstring in public function (will be handled by others)
|
|
# D104: Missing docstring in public package (will be handled by others)
|
|
# D105: Missing docstring in magic method (will be handled by others)
|
|
# D209: Blank line before closing """ (removed from PEP257)
|
|
# D211: Now b lank lines allowed before class docstring
|
|
# (PEP257 got changed, but let's stick to the old standard)
|
|
# D402: First line should not be function's signature (false-positives)
|
|
commands = {envpython} -m pep257 scripts tests qutebrowser --ignore=D102,D103,D104,D105,D209,D211,D402 '--match=(?!resources|test_*).*\.py'
|
|
|
|
[testenv:pyflakes]
|
|
basepython = python3
|
|
# https://github.com/fschulze/pytest-flakes/issues/6
|
|
setenv = LANG=en_US.UTF-8
|
|
passenv =
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
apipkg==1.4
|
|
execnet==1.4.1
|
|
py==1.4.31
|
|
pyflakes==1.0.0
|
|
pytest==2.8.5
|
|
pytest-flakes==1.0.1
|
|
commands =
|
|
{envpython} -m py.test -q --flakes --ignore=tests --noconftest
|
|
|
|
[testenv:pep8]
|
|
basepython = python3
|
|
passenv =
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
apipkg==1.4
|
|
execnet==1.4.1
|
|
pep8==1.6.2
|
|
py==1.4.31
|
|
pytest==2.8.5
|
|
pytest-pep8==1.0.6
|
|
commands =
|
|
{envpython} -m py.test -q --pep8 --ignore=tests --noconftest
|
|
|
|
|
|
[testenv:mccabe]
|
|
basepython = python3
|
|
passenv =
|
|
deps =
|
|
-r{toxinidir}/requirements.txt
|
|
apipkg==1.4
|
|
execnet==1.4.1
|
|
mccabe==0.3.1
|
|
py==1.4.31
|
|
pytest==2.8.5
|
|
pytest-mccabe==0.1
|
|
commands =
|
|
{envpython} -m py.test -q --mccabe --ignore=tests --noconftest
|
|
|
|
[testenv:pyroma]
|
|
basepython = python3
|
|
skip_install = true
|
|
passenv =
|
|
deps =
|
|
pyroma==1.8.3
|
|
docutils==0.12
|
|
commands =
|
|
{envdir}/bin/pyroma .
|
|
|
|
[testenv:check-manifest]
|
|
basepython = python3
|
|
skip_install = true
|
|
passenv =
|
|
deps =
|
|
check-manifest==0.30
|
|
commands =
|
|
{envdir}/bin/check-manifest --ignore 'qutebrowser/git-commit-id,qutebrowser/html/doc,qutebrowser/html/doc/*,*/__pycache__'
|
|
|
|
[testenv:docs]
|
|
basepython = python3
|
|
skip_install = true
|
|
whitelist_externals = git
|
|
passenv =
|
|
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: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 =
|
|
-r{toxinidir}/requirements.txt
|
|
cx_Freeze==4.3.4
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} scripts/dev/freeze.py {posargs}
|
|
|
|
[testenv:eslint]
|
|
skip_install = True
|
|
deps =
|
|
whitelist_externals = eslint
|
|
commands = eslint qutebrowser
|