deluge/tox.ini
bendikro 70d8b65f0a [WebUi] [Core] Fixes to plugin handling and WebUi plugin + tests
This should fix problems with errors occuring when failing to
enable plugins. Errors in plugin handling are handled better
and properly logged.

WebUI plugin in particular had issues when being enabled and disabled
multiple times because it was trying to create DelugeWeb component
each time it was enabled. If deluge-web is already listening on
the same port, enabling the WebUI plugin will fail, and the checkbox
will not be checked.

There are still some issues when enabling/disabling plugins by
clicking fast multiple times on the checkbox.
2016-04-18 15:49:30 +01:00

189 lines
4.4 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.
#
# Usage: `pip install tox` and then run `tox` from this directory.
[flake8]
max-line-length = 120
builtins = _,__request__
exclude = .git,dist,build
[pep8]
max-line-length = 120
ignore = E301,E309
[tox]
envlist = py27, flake8, isort, docs
minversion=1.8
[testenv]
passenv = DISPLAY
setenv = PYTHONPATH = {env:PWD}:
sitepackages = True
deps =
twisted
service_identity
mako
chardet
pyopenssl
pyxdg
pytest
mock
whitelist_externals = py.test
commands = {envpython} setup.py test
[pytest]
python_functions = test_
norecursedirs = .tox .git dist build
pep8maxlinelength = 120
whitelist_externals= {[testenv]whitelist_externals}
commands = py.test deluge
##############
# Unit tests
##############
[testenv:pydef]
commands =
python -c "import libtorrent as lt; print lt.version"
py.test -v -s -m "not (todo or gtkui)" deluge/tests
[testenv:pygtkui]
commands = py.test -v -s -m "gtkui" deluge/tests
[testenv:todo]
commands = py.test -v -s -m "todo" deluge/tests
[testenv:trial]
setenv = {[testenv]setenv}:{env:PWD}/deluge/tests
whitelist_externals = trial
commands = trial --reporter=deluge-reporter deluge/tests
[testenv:plugins]
commands =
python setup.py egg_info_plugins
py.test deluge/plugins
[testenv:py26]
basepython = python2.6
commands = {[testenv:pydef]commands}
[testenv:py27]
basepython = python2.7
commands = {[testenv:pydef]commands}
###########################
# Code style verification
###########################
[testenv:isort]
deps =
{[testenv]deps}
isort>=4.2.0
whitelist_externals =
{[testenv]whitelist_externals}
isort
commands =
isort --version
python -c "import subprocess, sys; output = subprocess.check_output('isort -q --diff --recursive deluge docs packaging *.py', shell=True); print output; sys.exit(len(output) != 0)"
[testenv:flake8]
# Force flake8 pip install as system flake8 uses hardcoded python path which imports the wrong libraries.
install_command = pip -v install --ignore-installed {opts} {packages}
setenv = {[testenv]setenv}
deps =
{[testenv]deps}
flake8
pep8-naming
commands =
flake8 --version
flake8
[testenv:flake8-complexity]
setenv = {[testenv]setenv}
deps =
{[testenv:flake8]deps}
mccabe
commands = flake8 --exit-zero --max-complexity 15 deluge
######################
# Unit Test coverage
######################
[testcoveragebase]
#install_command = pip install {opts} {packages}
deps =
{[testenv]deps}
pytest-cov
coverage
whitelist_externals =
{[testenv]whitelist_externals}
coverage
commands = coverage run --branch --source=deluge -m py.test -m "not todo" deluge/tests/
[testenv:testcoverage]
setenv = {[testenv]setenv}
deps = {[testcoveragebase]deps}
whitelist_externals = {[testcoveragebase]whitelist_externals}
commands =
{[testcoveragebase]commands}
coverage report
[testenv:testcoverage-html]
setenv = {[testenv]setenv}
deps = {[testcoveragebase]deps}
whitelist_externals = {[testcoveragebase]whitelist_externals}
commands =
{[testcoveragebase]commands}
coverage html -d docs/build/htmlcoverage
######################
# Docs generation
######################
# We do not have all dependencies on RTD and travis so we exclude the
# site packages (sitepackages=False) when building docs so that local
# tests have a similar environment.
[docsbase]
sitepackages = False
changedir = docs
install_command = pip install {opts} {packages}
deps =
{[testenv]deps}
sphinx
sphinxcontrib-napoleon
pillow
whitelist_externals =
{[testenv]whitelist_externals}
sphinx-build
commands = sphinx-build -E -W -b html -d build/doctrees source build/html
[testenv:docs]
sitepackages = {[docsbase]sitepackages}
changedir = {[docsbase]changedir}
install_command = {[docsbase]install_command}
deps = {[docsbase]deps}
whitelist_externals = {[docsbase]whitelist_externals}
commands = sphinx-build -v -E -T -b html -d build/doctrees source build/html
[testenv:docscoverage]
sitepackages = {[docsbase]sitepackages}
changedir = {[docsbase]changedir}
install_command = {[docsbase]install_command}
deps =
{[docsbase]deps}
coverage
pytest-cov
whitelist_externals =
{[docsbase]whitelist_externals}
mkdir
commands =
mkdir -p build/doccoverage
sphinx-build -W -b coverage -d build/doctrees source build/doccoverage
py.test --doctest-glob='*.rst'