From d4711c955a331b84a8c328a2a29c13269e7d58f5 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 17 Dec 2020 12:56:49 +0000 Subject: [PATCH 1/5] Clean up tox.ini --- changelog.d/8963.misc | 1 + mypy.ini | 5 +++++ tox.ini | 40 ++++++++++++++++++++++------------------ 3 files changed, 28 insertions(+), 18 deletions(-) create mode 100644 changelog.d/8963.misc diff --git a/changelog.d/8963.misc b/changelog.d/8963.misc new file mode 100644 index 000000000000..495d89e8eebd --- /dev/null +++ b/changelog.d/8963.misc @@ -0,0 +1 @@ +Clean up tox.ini file; disable coverage checking for non-test runs. diff --git a/mypy.ini b/mypy.ini index 190420402503..0518d3f1af14 100644 --- a/mypy.ini +++ b/mypy.ini @@ -7,6 +7,11 @@ show_error_codes = True show_traceback = True mypy_path = stubs warn_unreachable = True + +# To find all folders that pass mypy you run: +# +# find synapse/* -type d -not -name __pycache__ -exec bash -c "mypy '{}' > /dev/null" \; -print + files = scripts-dev/sign_json, synapse/api, diff --git a/tox.ini b/tox.ini index c23267682617..1e5ba9634f36 100644 --- a/tox.ini +++ b/tox.ini @@ -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,35 @@ 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. + # + /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 @@ -83,7 +91,6 @@ deps = coverage-enable-subprocess 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 +99,8 @@ 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:} + # run the regular trial command + {[testenv]commands] [testenv:benchmark] deps = @@ -157,7 +165,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 From e5002dafd1a7a06d8d8a300f9aa89efafdc4bac9 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 17 Dec 2020 16:17:08 +0000 Subject: [PATCH 2/5] pin `coverage-enable-subprocess` for olddeps --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 1e5ba9634f36..3f5e73ee436d 100644 --- a/tox.ini +++ b/tox.ini @@ -88,7 +88,7 @@ deps = lxml coverage - coverage-enable-subprocess + coverage-enable-subprocess==1.0 commands = # Make all greater-thans equals so we test the oldest version of our direct From 85f5138e5d44ce382c8ba6586606d0ce69bb2249 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Date: Thu, 17 Dec 2020 22:07:59 +0000 Subject: [PATCH 3/5] Update tox.ini --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 3f5e73ee436d..4a5a5c69522c 100644 --- a/tox.ini +++ b/tox.ini @@ -100,7 +100,7 @@ commands = pip install -e ".[test]" # run the regular trial command - {[testenv]commands] + {[testenv]commands]} [testenv:benchmark] deps = From 9d5ac0f9e8b7edb14728f96a10c4c1ab5f5cfb6d Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 17 Dec 2020 22:14:34 +0000 Subject: [PATCH 4/5] ugh --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index 4a5a5c69522c..660f2a7852bf 100644 --- a/tox.ini +++ b/tox.ini @@ -100,7 +100,7 @@ commands = pip install -e ".[test]" # run the regular trial command - {[testenv]commands]} + {[testenv]commands} [testenv:benchmark] deps = From cadb66128e2e84f12e2f926de2b11deae71d81e2 Mon Sep 17 00:00:00 2001 From: Richard van der Hoff Date: Thu, 17 Dec 2020 22:34:40 +0000 Subject: [PATCH 5/5] work around tox bug --- tox.ini | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/tox.ini b/tox.ini index 660f2a7852bf..8e8b49529246 100644 --- a/tox.ini +++ b/tox.ini @@ -53,6 +53,8 @@ commands = # 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 @@ -99,8 +101,11 @@ commands = # Install Synapse itself. This won't update any libraries. pip install -e ".[test]" - # run the regular trial command - {[testenv]commands} + # 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 =