diff --git a/tox.ini b/tox.ini
index 9de5a5704a..14437e7334 100644
--- a/tox.ini
+++ b/tox.ini
@@ -3,31 +3,49 @@ envlist = packaging, py27, py36, pep8, check_isort
[base]
deps =
- Twisted>=17.1
mock
python-subunit
junitxml
-
- # needed by some of the tests
- lxml
+ coverage
+ parameterized
+
+ # cyptography 2.2 requires setuptools >= 18.5
+ #
+ # older versions of virtualenv (?) give us a virtualenv with the same
+ # version of setuptools as is installed on the system python (and tox runs
+ # virtualenv under python3, so we get the version of setuptools that is
+ # installed on that).
+ #
+ # anyway, make sure that we have a recent enough setuptools.
+ setuptools>=18.5
+
+ # we also need a semi-recent version of pip, because old ones fail to
+ # install the "enum34" dependency of cryptography.
+ pip>=10
setenv =
PYTHONDONTWRITEBYTECODE = no_byte_code
+ COVERAGE_PROCESS_START = {toxinidir}/.coveragerc
[testenv]
deps =
{[base]deps}
+extras = all
+
+whitelist_externals =
+ sh
setenv =
{[base]setenv}
+ postgres: SYNAPSE_POSTGRES = 1
passenv = *
commands =
/usr/bin/find "{toxinidir}" -name '*.pyc' -delete
- "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
-
-[testenv:py27]
+ # Add this so that coverage will run on subprocesses
+ sh -c 'echo "import coverage; coverage.process_startup()" > {envsitepackagesdir}/../sitecustomize.py'
+ {envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
# As of twisted 16.4, trial tries to import the tests as a package (previously
# it loaded the files explicitly), which means they need to be on the
@@ -52,14 +70,7 @@ commands =
# )
usedevelop=true
-[testenv:py27-postgres]
-usedevelop=true
-deps =
- {[base]deps}
- psycopg2
-setenv =
- {[base]setenv}
- SYNAPSE_POSTGRES = 1
+
# A test suite for the oldest supported versions of Python libraries, to catch
# any uses of APIs not available in them.
@@ -81,23 +92,8 @@ commands =
pip install -e .
{envbindir}/trial {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
-[testenv:py35]
-usedevelop=true
-
-[testenv:py36]
-usedevelop=true
-
-[testenv:py36-postgres]
-usedevelop=true
-deps =
- {[base]deps}
- psycopg2
-setenv =
- {[base]setenv}
- SYNAPSE_POSTGRES = 1
-
-
[testenv:packaging]
+skip_install=True
deps =
check-manifest
commands =
@@ -108,12 +104,12 @@ skip_install = True
basepython = python3.6
deps =
flake8
-commands = /bin/sh -c "flake8 synapse tests scripts scripts-dev scripts/register_new_matrix_user scripts/synapse_port_db synctl {env:PEP8SUFFIX:}"
+commands = /bin/sh -c "flake8 synapse tests scripts scripts-dev scripts/hash_password scripts/register_new_matrix_user scripts/synapse_port_db synctl {env:PEP8SUFFIX:}"
[testenv:check_isort]
skip_install = True
deps = isort
-commands = /bin/sh -c "isort -c -sp setup.cfg -rc synapse tests"
+commands = /bin/sh -c "isort -c -df -sp setup.cfg -rc synapse tests"
[testenv:check-newsfragment]
skip_install = True
@@ -121,3 +117,13 @@ deps = towncrier>=18.6.0rc1
commands =
python -m towncrier.check --compare-with=origin/develop
basepython = python3.6
+
+[testenv:codecov]
+skip_install = True
+deps =
+ coverage
+ codecov
+commands =
+ coverage combine
+ coverage xml
+ codecov -X gcov
|