e9bf5fc219
Features: - Tests and find are now explicitly seeded off the global random module. This means that if you nest one inside the other you will now get a health check error. It also means that you can control global randomization by seeding random. - There is a new random_module() strategy which seeds the global random module for you and handles things so that you don't get a health check warning if you use it inside your tests. - floats() now accepts two new arguments: allow_nan and allow_infinity. These default to the old behaviour, but when set to False will do what the names suggest. Bug fixes: - Fix a bug where tests that used text() on Python 3.4+ would not actually be deterministic even when explicitly seeded or using the derandomize mode, because generation depended on dictionary iteration order which was affected by hash randomization. - Fix a bug where with complicated strategies the timing of the initial health check could affect the seeding of the subsequent test, which would also render supposedly deterministic tests non-deterministic in some scenarios. - In some circumstances flatmap() could get confused by two structurally similar things it could generate and would produce a flaky test where the first time it produced an error but the second time it produced the other value, which was not an error. The same bug was presumably also possible in composite(). - flatmap() and composite() initial generation should now be moderately faster. This will be particularly noticeable when you have many values drawn from the same strategy in a single run, e.g. constructs like lists(s.flatmap(f)). Shrinking performance may have suffered, but this didn't actually produce an interestingly worse result in any of the standard scenarios tested.
244 lines
6.6 KiB
INI
244 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==1.18.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.10.0
|
|
pytest-sugar==0.5.1
|
|
pytest-travis-fold==1.2.0
|
|
six==1.10.0
|
|
termcolor==1.1.0
|
|
vulture==0.8.1
|
|
Werkzeug==0.11.3
|
|
wheel==0.26.0
|
|
xvfbwrapper==0.2.6
|
|
cherrypy==4.0.0
|
|
commands =
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
|
{envpython} -m py.test --strict -rfEsw --faulthandler-timeout=70 --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_OK=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.2
|
|
pylint==1.5.2
|
|
requests==2.9.0
|
|
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-cache==1.0
|
|
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-cache==1.0
|
|
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-cache==1.0
|
|
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
|