# 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.0 pytest-mock==0.6.0 pytest-html==1.3.1 commands = {envpython} scripts/link_pyqt.py --tox {envdir} {envpython} -m py.test --strict -rfEsw tests {posargs} [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==1.8.1 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 tests {posargs} [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.6 beautifulsoup4==4.4.0 pylint==1.4.4 logilab-common==1.0.1 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.5.0 passenv = PYTHON LANG # Disabled checks: # D102: Docstring missing, 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_content_disposition).*\.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} [pytest] norecursedirs = .tox .venv markers = gui: Tests using the GUI (e.g. spawning widgets) posix: Tests which only can run on a POSIX OS. windows: Tests which only can run on Windows. linux: Tests which only can run on Linux. osx: Tests which only can run on OS X. not_frozen: Tests which can't be run if sys.frozen is True. frozen: Tests which can only be run if sys.frozen is True. flakes-ignore = UnusedImport UnusedVariable resources.py ALL pep8ignore = E265 # Block comment should start with '#' E501 # Line too long E402 # module level import not at top of file E266 # too many leading '#' for block comment W503 # line break before binary operator resources.py ALL mccabe-complexity = 12 qt_log_level_fail = WARNING qt_log_ignore = ^SpellCheck: .* ^SetProcessDpiAwareness failed: .* ^QWindowsWindow::setGeometryDp: Unable to set geometry .*