|
@@ -7,7 +7,9 @@ deps =
|
|
|
python-subunit
|
|
|
junitxml
|
|
|
coverage
|
|
|
- coverage-enable-subprocess
|
|
|
+
|
|
|
+ # this is pinned since it's a bit of an obscure package.
|
|
|
+ coverage-enable-subprocess==1.0
|
|
|
|
|
|
# cyptography 2.2 requires setuptools >= 18.5
|
|
|
#
|
|
@@ -23,29 +25,37 @@ deps =
|
|
|
# install the "enum34" dependency of cryptography.
|
|
|
pip>=10
|
|
|
|
|
|
-setenv =
|
|
|
- PYTHONDONTWRITEBYTECODE = no_byte_code
|
|
|
- COVERAGE_PROCESS_START = {toxinidir}/.coveragerc
|
|
|
-
|
|
|
[testenv]
|
|
|
deps =
|
|
|
{[base]deps}
|
|
|
extras = all, test
|
|
|
|
|
|
-whitelist_externals =
|
|
|
- sh
|
|
|
-
|
|
|
setenv =
|
|
|
- {[base]setenv}
|
|
|
+ # use a postgres db for tox environments with "-postgres" in the name
|
|
|
+ # (see https://tox.readthedocs.io/en/3.20.1/config.html#factors-and-factor-conditional-settings)
|
|
|
postgres: SYNAPSE_POSTGRES = 1
|
|
|
+
|
|
|
+ # this is used by .coveragerc to refer to the top of our tree.
|
|
|
TOP={toxinidir}
|
|
|
|
|
|
passenv = *
|
|
|
|
|
|
commands =
|
|
|
- /usr/bin/find "{toxinidir}" -name '*.pyc' -delete
|
|
|
- # Add this so that coverage will run on subprocesses
|
|
|
- {envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
|
|
|
+ # the "env" invocation enables coverage checking for sub-processes. This is
|
|
|
+ # particularly important when running trial with `-j`, since that will make
|
|
|
+ # it run tests in a subprocess, whose coverage would otherwise not be
|
|
|
+ # tracked. (It also makes an explicit `coverage run` command redundant.)
|
|
|
+ #
|
|
|
+ # (See https://coverage.readthedocs.io/en/coverage-5.3/subprocess.html.
|
|
|
+ # Note that the `coverage.process_startup()` call is done by
|
|
|
+ # `coverage-enable-subprocess`.)
|
|
|
+ #
|
|
|
+ # we use "env" rather than putting a value in `setenv` so that it is not
|
|
|
+ # inherited by other tox environments.
|
|
|
+ #
|
|
|
+ # keep this in sync with the copy in `testenv:py35-old`.
|
|
|
+ #
|
|
|
+ /usr/bin/env COVERAGE_PROCESS_START={toxinidir}/.coveragerc "{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
|
|
@@ -80,10 +90,9 @@ deps =
|
|
|
|
|
|
lxml
|
|
|
coverage
|
|
|
- coverage-enable-subprocess
|
|
|
+ coverage-enable-subprocess==1.0
|
|
|
|
|
|
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).
|
|
@@ -92,7 +101,11 @@ commands =
|
|
|
# Install Synapse itself. This won't update any libraries.
|
|
|
pip install -e ".[test]"
|
|
|
|
|
|
- {envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
|
|
|
+ # we have to duplicate the command from `testenv` rather than refer to it
|
|
|
+ # as `{[testenv]commands}`, because we run on ubuntu xenial, which has
|
|
|
+ # tox 2.3.1, and https://github.com/tox-dev/tox/issues/208.
|
|
|
+ #
|
|
|
+ /usr/bin/env COVERAGE_PROCESS_START={toxinidir}/.coveragerc "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
|
|
|
|
|
|
[testenv:benchmark]
|
|
|
deps =
|
|
@@ -157,7 +170,3 @@ deps =
|
|
|
{[base]deps}
|
|
|
extras = all,mypy
|
|
|
commands = mypy
|
|
|
-
|
|
|
-# To find all folders that pass mypy you run:
|
|
|
-#
|
|
|
-# find synapse/* -type d -not -name __pycache__ -exec bash -c "mypy '{}' > /dev/null" \; -print
|