2015-03-26 08:00:20 +01:00
|
|
|
# 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]
|
2015-08-09 11:35:34 +02:00
|
|
|
envlist = py34,misc,pep257,pyflakes,pep8,mccabe,pylint,pyroma,check-manifest
|
2015-03-26 08:00:20 +01:00
|
|
|
|
|
|
|
[testenv]
|
2015-05-16 14:22:56 +02:00
|
|
|
# https://bitbucket.org/hpk42/tox/issue/246/ - only needed for Windows though
|
2015-08-07 06:38:12 +02:00
|
|
|
setenv =
|
|
|
|
QT_QPA_PLATFORM_PLUGIN_PATH={envdir}/Lib/site-packages/PyQt5/plugins/platforms
|
|
|
|
PYTEST_QT_API=pyqt5
|
2015-08-09 20:47:50 +02:00
|
|
|
passenv = PYTHON DISPLAY XAUTHORITY HOME USERNAME USER CI
|
2015-03-30 22:09:56 +02:00
|
|
|
deps =
|
2015-05-27 07:45:09 +02:00
|
|
|
-r{toxinidir}/requirements.txt
|
2015-06-26 22:38:58 +02:00
|
|
|
py==1.4.30
|
2015-06-23 17:19:48 +02:00
|
|
|
pytest==2.7.2
|
2015-04-03 20:10:41 +02:00
|
|
|
pytest-capturelog==0.7
|
2015-08-01 21:42:04 +02:00
|
|
|
pytest-qt==1.5.1
|
2015-07-08 07:14:22 +02:00
|
|
|
pytest-mock==0.7.0
|
2015-08-18 17:35:49 +02:00
|
|
|
pytest-html==1.5.1
|
2015-08-04 12:00:23 +02:00
|
|
|
hypothesis==1.10.1
|
2015-08-11 19:35:59 +02:00
|
|
|
hypothesis-pytest==0.17.0
|
2015-08-08 21:11:38 +02:00
|
|
|
coverage==3.7.1
|
|
|
|
pytest-cov==2.0.0
|
|
|
|
cov-core==1.15.0
|
2015-08-13 18:54:58 +02:00
|
|
|
beautifulsoup4==4.4.0
|
2015-03-26 09:18:21 +01:00
|
|
|
commands =
|
2015-03-26 13:17:07 +01:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-08-11 21:05:20 +02:00
|
|
|
{envpython} -m py.test --strict -rfEsw --cov qutebrowser --cov-report xml --cov-report= {posargs:tests}
|
2015-08-12 06:41:41 +02:00
|
|
|
{envpython} scripts/dev/check_coverage.py {posargs}
|
2015-08-08 21:11:38 +02:00
|
|
|
{envpython} -m qutebrowser --no-err-windows --nowindow --temp-basedir about:blank ":later 500 quit"
|
|
|
|
|
|
|
|
[testenv:mkvenv]
|
|
|
|
basepython = python3
|
|
|
|
commands = {envpython} scripts/link_pyqt.py --tox {envdir}
|
|
|
|
envdir = {toxinidir}/.venv
|
|
|
|
usedevelop = true
|
2015-03-26 09:18:21 +01:00
|
|
|
|
2015-07-23 11:31:51 +02:00
|
|
|
[testenv:unittests-watch]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
|
|
|
passenv = {[testenv]passenv}
|
2015-07-23 11:31:51 +02:00
|
|
|
deps =
|
2015-08-08 21:11:38 +02:00
|
|
|
{[testenv]deps}
|
2015-07-23 11:31:51 +02:00
|
|
|
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}
|
|
|
|
|
2015-06-18 11:07:23 +02:00
|
|
|
[testenv:unittests-frozen]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
|
|
|
passenv = {[testenv]passenv}
|
2015-06-18 11:07:23 +02:00
|
|
|
skip_install = true
|
|
|
|
deps =
|
2015-08-08 21:11:38 +02:00
|
|
|
{[testenv]deps}
|
2015-06-18 11:07:23 +02:00
|
|
|
cx_Freeze==4.3.4
|
|
|
|
commands =
|
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-28 22:31:30 +02:00
|
|
|
{envpython} scripts/dev/freeze_tests.py build_exe -b {envdir}/build
|
2015-06-18 11:07:23 +02:00
|
|
|
{envdir}/build/run-frozen-tests --strict -rfEsw {posargs}
|
|
|
|
|
2015-03-26 08:00:20 +01:00
|
|
|
[testenv:misc]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-08-08 14:46:23 +02:00
|
|
|
# For global .gitignore files
|
|
|
|
passenv = HOME
|
2015-08-08 21:11:38 +02:00
|
|
|
deps =
|
2015-03-26 08:00:20 +01:00
|
|
|
commands =
|
2015-06-28 22:31:30 +02:00
|
|
|
{envpython} scripts/dev/misc_checks.py git
|
|
|
|
{envpython} scripts/dev/misc_checks.py vcs
|
|
|
|
{envpython} scripts/dev/misc_checks.py spelling
|
2015-03-26 08:00:20 +01:00
|
|
|
|
|
|
|
[testenv:pylint]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-03-26 08:00:20 +01:00
|
|
|
skip_install = true
|
2015-06-28 22:31:30 +02:00
|
|
|
setenv = PYTHONPATH={toxinidir}/scripts/dev
|
2015-08-08 21:11:38 +02:00
|
|
|
passenv =
|
2015-03-26 08:00:20 +01:00
|
|
|
deps =
|
2015-05-17 01:18:19 +02:00
|
|
|
-r{toxinidir}/requirements.txt
|
2015-08-03 10:38:42 +02:00
|
|
|
astroid==1.3.8
|
Update to beautifulsoup 4.4.0.
Upstream changelog:
Especially important changes:
* Added a warning when you instantiate a BeautifulSoup object without
explicitly naming a parser. [bug=1398866]
* __repr__ now returns an ASCII bytestring in Python 2, and a Unicode
string in Python 3, instead of a UTF8-encoded bytestring in both
versions. In Python 3, __str__ now returns a Unicode string instead
of a bytestring. [bug=1420131]
* The `text` argument to the find_* methods is now called `string`,
which is more accurate. `text` still works, but `string` is the
argument described in the documentation. `text` may eventually
change its meaning, but not for a very long time. [bug=1366856]
* Changed the way soup objects work under copy.copy(). Copying a
NavigableString or a Tag will give you a new NavigableString that's
equal to the old one but not connected to the parse tree. Patch by
Martijn Peters. [bug=1307490]
* Started using a standard MIT license. [bug=1294662]
* Added a Chinese translation of the documentation by Delong .w.
New features:
* Introduced the select_one() method, which uses a CSS selector but
only returns the first match, instead of a list of
matches. [bug=1349367]
* You can now create a Tag object without specifying a
TreeBuilder. Patch by Martijn Pieters. [bug=1307471]
* You can now create a NavigableString or a subclass just by invoking
the constructor. [bug=1294315]
* Added an `exclude_encodings` argument to UnicodeDammit and to the
Beautiful Soup constructor, which lets you prohibit the detection of
an encoding that you know is wrong. [bug=1469408]
* The select() method now supports selector grouping. Patch by
Francisco Canas [bug=1191917]
Bug fixes:
* Fixed yet another problem that caused the html5lib tree builder to
create a disconnected parse tree. [bug=1237763]
* Force object_was_parsed() to keep the tree intact even when an element
from later in the document is moved into place. [bug=1430633]
* Fixed yet another bug that caused a disconnected tree when html5lib
copied an element from one part of the tree to another. [bug=1270611]
* Fixed a bug where Element.extract() could create an infinite loop in
the remaining tree.
* The select() method can now find tags whose names contain
dashes. Patch by Francisco Canas. [bug=1276211]
* The select() method can now find tags with attributes whose names
contain dashes. Patch by Marek Kapolka. [bug=1304007]
* Improved the lxml tree builder's handling of processing
instructions. [bug=1294645]
* Restored the helpful syntax error that happens when you try to
import the Python 2 edition of Beautiful Soup under Python
3. [bug=1213387]
* In Python 3.4 and above, set the new convert_charrefs argument to
the html.parser constructor to avoid a warning and future
failures. Patch by Stefano Revera. [bug=1375721]
* The warning when you pass in a filename or URL as markup will now be
displayed correctly even if the filename or URL is a Unicode
string. [bug=1268888]
* If the initial <html> tag contains a CDATA list attribute such as
'class', the html5lib tree builder will now turn its value into a
list, as it would with any other tag. [bug=1296481]
* Fixed an import error in Python 3.5 caused by the removal of the
HTMLParseError class. [bug=1420063]
* Improved docstring for encode_contents() and
decode_contents(). [bug=1441543]
* Fixed a crash in Unicode, Dammit's encoding detector when the name
of the encoding itself contained invalid bytes. [bug=1360913]
* Improved the exception raised when you call .unwrap() or
.replace_with() on an element that's not attached to a tree.
* Raise a NotImplementedError whenever an unsupported CSS pseudoclass
is used in select(). Previously some cases did not result in a
NotImplementedError.
* It's now possible to pickle a BeautifulSoup object no matter which
tree builder was used to create it. However, the only tree builder
that survives the pickling process is the HTMLParserTreeBuilder
('html.parser'). If you unpickle a BeautifulSoup object created with
some other tree builder, soup.builder will be None. [bug=1231545]
2015-07-06 10:47:49 +02:00
|
|
|
beautifulsoup4==4.4.0
|
2015-06-30 20:50:12 +02:00
|
|
|
pylint==1.4.4
|
2015-08-04 12:00:23 +02:00
|
|
|
hypothesis==1.10.1
|
2015-07-10 12:00:26 +02:00
|
|
|
logilab-common==1.0.2
|
2015-03-26 08:00:20 +01:00
|
|
|
six==1.9.0
|
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-10 18:33:37 +02:00
|
|
|
{envpython} -m pylint scripts qutebrowser --rcfile=.pylintrc --output-format=colorized --reports=no --expected-line-ending-format=LF
|
2015-06-28 22:31:30 +02:00
|
|
|
{envpython} scripts/dev/run_pylint_on_tests.py --rcfile=.pylintrc --output-format=colorized --reports=no --expected-line-ending-format=LF
|
2015-03-26 08:00:20 +01:00
|
|
|
|
|
|
|
[testenv:pep257]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-03-26 08:00:20 +01:00
|
|
|
skip_install = true
|
2015-06-10 18:33:15 +02:00
|
|
|
passenv = PYTHON LANG
|
2015-08-08 21:11:38 +02:00
|
|
|
deps = pep257==0.6.0
|
2015-03-26 08:00:20 +01:00
|
|
|
# Disabled checks:
|
2015-07-21 10:26:57 +02:00
|
|
|
# D102: Missing docstring in public method (will be handled by others)
|
|
|
|
# D103: Missing docstring in public function (will be handled by others)
|
2015-03-26 08:00:20 +01:00
|
|
|
# D209: Blank line before closing """ (removed from PEP257)
|
|
|
|
# D402: First line should not be function's signature (false-positives)
|
2015-08-02 22:15:35 +02:00
|
|
|
commands = {envpython} -m pep257 scripts tests qutebrowser --ignore=D102,D103,D209,D402 '--match=(?!resources|test_*).*\.py'
|
2015-03-26 08:00:20 +01:00
|
|
|
|
2015-06-02 20:51:06 +02:00
|
|
|
[testenv:pyflakes]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-06-02 20:51:06 +02:00
|
|
|
# https://github.com/fschulze/pytest-flakes/issues/6
|
|
|
|
setenv = LANG=en_US.UTF-8
|
2015-08-08 21:11:38 +02:00
|
|
|
passenv =
|
2015-03-26 08:00:20 +01:00
|
|
|
deps =
|
2015-05-17 01:18:19 +02:00
|
|
|
-r{toxinidir}/requirements.txt
|
2015-06-26 22:41:30 +02:00
|
|
|
py==1.4.30
|
2015-06-23 17:19:48 +02:00
|
|
|
pytest==2.7.2
|
2015-06-17 17:48:25 +02:00
|
|
|
pyflakes==0.9.2
|
2015-06-05 17:26:49 +02:00
|
|
|
pytest-flakes==1.0.0
|
2015-06-02 20:51:06 +02:00
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-20 19:48:40 +02:00
|
|
|
{envpython} -m py.test -q --flakes --ignore=tests
|
2015-06-02 20:51:06 +02:00
|
|
|
|
|
|
|
[testenv:pep8]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
|
|
|
passenv =
|
2015-06-02 20:51:06 +02:00
|
|
|
deps =
|
|
|
|
-r{toxinidir}/requirements.txt
|
2015-06-26 22:41:30 +02:00
|
|
|
py==1.4.30
|
2015-06-23 17:19:48 +02:00
|
|
|
pytest==2.7.2
|
2015-06-02 20:51:06 +02:00
|
|
|
pep8==1.6.2
|
|
|
|
pytest-pep8==1.0.6
|
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-20 19:48:40 +02:00
|
|
|
{envpython} -m py.test -q --pep8 --ignore=tests
|
2015-06-02 20:51:06 +02:00
|
|
|
|
|
|
|
[testenv:mccabe]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
|
|
|
passenv =
|
2015-06-02 20:51:06 +02:00
|
|
|
deps =
|
|
|
|
-r{toxinidir}/requirements.txt
|
2015-06-26 22:41:30 +02:00
|
|
|
py==1.4.30
|
2015-06-23 17:19:48 +02:00
|
|
|
pytest==2.7.2
|
2015-06-15 06:21:14 +02:00
|
|
|
mccabe==0.3.1
|
2015-06-02 20:51:06 +02:00
|
|
|
pytest-mccabe==0.1
|
2015-03-26 08:00:20 +01:00
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-20 19:48:40 +02:00
|
|
|
{envpython} -m py.test -q --mccabe --ignore=tests
|
2015-03-26 08:00:20 +01:00
|
|
|
|
|
|
|
[testenv:pyroma]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-03-26 20:19:55 +01:00
|
|
|
skip_install = true
|
2015-08-08 21:11:38 +02:00
|
|
|
passenv =
|
2015-03-26 08:00:20 +01:00
|
|
|
deps =
|
2015-06-14 13:45:09 +02:00
|
|
|
pyroma==1.8.2
|
2015-03-26 08:00:20 +01:00
|
|
|
docutils==0.12
|
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-03-26 08:00:20 +01:00
|
|
|
{envdir}/bin/pyroma .
|
|
|
|
|
|
|
|
[testenv:check-manifest]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-03-26 20:19:55 +01:00
|
|
|
skip_install = true
|
2015-08-08 21:11:38 +02:00
|
|
|
passenv =
|
2015-03-26 08:00:20 +01:00
|
|
|
deps =
|
2015-05-27 08:51:24 +02:00
|
|
|
check-manifest==0.25
|
2015-03-26 08:00:20 +01:00
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-03-26 08:00:20 +01:00
|
|
|
{envdir}/bin/check-manifest --ignore 'qutebrowser/git-commit-id,qutebrowser/html/doc,qutebrowser/html/doc/*,*/__pycache__'
|
2015-03-26 09:18:21 +01:00
|
|
|
|
|
|
|
[testenv:docs]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
2015-03-26 20:19:55 +01:00
|
|
|
skip_install = true
|
2015-03-26 20:37:53 +01:00
|
|
|
whitelist_externals = git
|
2015-08-08 21:11:38 +02:00
|
|
|
passenv =
|
2015-03-26 09:18:21 +01:00
|
|
|
deps =
|
2015-05-17 01:18:19 +02:00
|
|
|
-r{toxinidir}/requirements.txt
|
2015-03-26 09:18:21 +01:00
|
|
|
commands =
|
2015-06-09 18:28:57 +02:00
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-28 23:04:18 +02:00
|
|
|
{envpython} scripts/dev/src2asciidoc.py
|
2015-03-26 20:37:53 +01:00
|
|
|
git --no-pager diff --exit-code --stat
|
2015-03-26 09:18:21 +01:00
|
|
|
{envpython} scripts/asciidoc2html.py {posargs}
|
2015-04-03 00:05:20 +02:00
|
|
|
|
2015-06-18 20:44:22 +02:00
|
|
|
[testenv:smoke-frozen]
|
2015-08-08 21:11:38 +02:00
|
|
|
basepython = python3
|
|
|
|
passenv = {[testenv]passenv}
|
2015-06-18 20:44:22 +02:00
|
|
|
skip_install = true
|
|
|
|
deps =
|
2015-08-08 21:11:38 +02:00
|
|
|
{[testenv]deps}
|
2015-06-18 20:44:22 +02:00
|
|
|
cx_Freeze==4.3.4
|
|
|
|
commands =
|
|
|
|
{envpython} scripts/link_pyqt.py --tox {envdir}
|
2015-06-28 22:31:30 +02:00
|
|
|
{envpython} scripts/dev/freeze.py build_exe --qute-skip-html -b {envdir}/build
|
2015-06-18 20:44:22 +02:00
|
|
|
{envdir}/build/qutebrowser --no-err-windows --nowindow --temp-basedir about:blank ":later 500 quit"
|
|
|
|
|
2015-06-23 18:36:10 +02:00
|
|
|
[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}
|
2015-06-28 22:31:30 +02:00
|
|
|
{envpython} scripts/dev/freeze.py {posargs}
|