forked from MirrorHub/synapse
0f6ec6d1ae
It seems that, at some point, the ability to run tox on old servers (with old setuptools) got broken - and it was only working on our Jenkins instance by dint of reusing the tox environments. Let's try to get tox to do the right thing, and remove the guff from jenkins/prepare_synapse.sh. (There is a separate question about whether the jenkins builds should be using tox to prepare the virtualenv at all here, but that is somewhat orthogonal).
137 lines
3.8 KiB
INI
137 lines
3.8 KiB
INI
[tox]
|
|
envlist = packaging, py27, py36, pep8, check_isort
|
|
|
|
[base]
|
|
deps =
|
|
Twisted>=17.1
|
|
mock
|
|
python-subunit
|
|
junitxml
|
|
|
|
# needed by some of the tests
|
|
lxml
|
|
|
|
# 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
|
|
|
|
[testenv]
|
|
deps =
|
|
{[base]deps}
|
|
|
|
setenv =
|
|
{[base]setenv}
|
|
|
|
passenv = *
|
|
|
|
commands =
|
|
/usr/bin/find "{toxinidir}" -name '*.pyc' -delete
|
|
"{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
|
|
|
|
[testenv:py27]
|
|
|
|
# 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
|
|
# pythonpath. Our sdist doesn't include the 'tests' package, so normally it
|
|
# doesn't work within the tox virtualenv.
|
|
#
|
|
# As a workaround, we tell tox to do install with 'pip -e', which just
|
|
# creates a symlink to the project directory instead of unpacking the sdist.
|
|
#
|
|
# (An alternative to this would be to set PYTHONPATH to include the project
|
|
# directory. Note two problems with this:
|
|
#
|
|
# - if you set it via `setenv`, then it is also set during the 'install'
|
|
# phase, which inhibits unpacking the sdist, so the virtualenv isn't
|
|
# useful for anything else without setting PYTHONPATH similarly.
|
|
#
|
|
# - `synapse` is also loaded from PYTHONPATH so even if you only set
|
|
# PYTHONPATH for the test phase, we're still running the tests against
|
|
# the working copy rather than the contents of the sdist. So frankly
|
|
# you might as well use -e in the first place.
|
|
#
|
|
# )
|
|
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.
|
|
[testenv:py27-old]
|
|
skip_install=True
|
|
deps =
|
|
# Old automat version for Twisted
|
|
Automat == 0.3.0
|
|
|
|
mock
|
|
lxml
|
|
commands =
|
|
/usr/bin/find "{toxinidir}" -name '*.pyc' -delete
|
|
# Make all greater-thans equals so we test the oldest version of our direct
|
|
# dependencies, but make the pyopenssl 17.0, which can work against an
|
|
# OpenSSL 1.1 compiled cryptography (as older ones don't compile on Travis).
|
|
/bin/sh -c 'python -m synapse.python_dependencies | sed -e "s/>=/==/g" -e "s/psycopg2==2.6//" -e "s/pyopenssl==16.0.0/pyopenssl==17.0.0/" | xargs pip install'
|
|
# Install Synapse itself. This won't update any libraries.
|
|
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]
|
|
deps =
|
|
check-manifest
|
|
commands =
|
|
check-manifest
|
|
|
|
[testenv:pep8]
|
|
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:}"
|
|
|
|
[testenv:check_isort]
|
|
skip_install = True
|
|
deps = isort
|
|
commands = /bin/sh -c "isort -c -sp setup.cfg -rc synapse tests"
|
|
|
|
[testenv:check-newsfragment]
|
|
skip_install = True
|
|
deps = towncrier>=18.6.0rc1
|
|
commands =
|
|
python -m towncrier.check --compare-with=origin/develop
|
|
basepython = python3.6
|