c4183bc34d
This is just a bugfix and performance release, but it changes some semi-public APIs, hence the minor version bump. - Significant performance improvements for strategies which are one_of() many branches. In particular this included recursive() strategies. This should take the case where you use one recursive() strategy as the base strategy of another from unusably slow (tens of seconds per generated example) to reasonably fast. - Better handling of just() and sampled_from() for values which have an incorrect __repr__ implementation that returns non-ASCII unicode on Python 2. - Better performance for flatmap from changing the internal morpher API to be significantly less general purpose. - Introduce a new semi-public BuildContext/cleanup API. This allows strategies to register cleanup activities that should run once the example is complete. Note that this will interact somewhat weirdly with find. - Better simplification behaviour for streaming strategies. - Don't error on lambdas which use destructuring arguments in Python 2. - Add some better reprs for a few strategies that were missing good ones. - The Random instances provided by randoms() are now copyable. - Slightly more debugging information about simplify when using a debug verbosity level. - Support using given for functions with varargs, but not passing arguments to it as positional.
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.10.0
|
|
hypothesis-pytest==0.15.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.10.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}
|