Skip to content
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.

Clean up tox.ini #8963

Merged
merged 6 commits into from
Dec 17, 2020
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions changelog.d/8963.misc
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
Clean up tox.ini file; disable coverage checking for non-test runs.
5 changes: 5 additions & 0 deletions mypy.ini
Original file line number Diff line number Diff line change
Expand Up @@ -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,
Expand Down
42 changes: 23 additions & 19 deletions tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,9 @@ deps =
python-subunit
junitxml
coverage
coverage-enable-subprocess

# this is pinned since it's a bit of an obscure package.
callahad marked this conversation as resolved.
Show resolved Hide resolved
coverage-enable-subprocess==1.0

# cyptography 2.2 requires setuptools >= 18.5
#
Expand All @@ -23,29 +25,35 @@ deps =
# install the "enum34" dependency of cryptography.
pip>=10

setenv =
PYTHONDONTWRITEBYTECODE = no_byte_code
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not really sure why we had this. Why is it a problem if we write bytecode files? I think it is a hangover from some FUD that existed when we first started life on about python 2.4.

(see https://docs.python.org/3/using/cmdline.html#envvar-PYTHONDONTWRITEBYTECODE for docs on it).

COVERAGE_PROCESS_START = {toxinidir}/.coveragerc
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this is replaced by a call to /usr/bin/env for the commands that want it, so that we don't automatically do coverage-tracking for mypy and friends.


[testenv]
deps =
{[base]deps}
extras = all, test

whitelist_externals =
sh

Comment on lines -35 to -37
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this was unused afaict

setenv =
{[base]setenv}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[base]setenv has now diasppeared, so this is redundant

# 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
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

related to the PYTHONDONTWRITEBYTECODE thing, but doubly redundant, since bytecode files aren't called *.pyc under python 3.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

bytecode files aren't called *.pyc under python 3.

Aren't they? I have plenty of *.pyc files in my local working directory, albeit inside __pycache__/ folders instead of directly alongside the source Python files like in older Python versions.

That said, it's not obvious to me why we're deleting them (or preventing their generation) in the first place.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oh, sorry, that's right. They're just in a different folder; they still have the .pyc name.

I still think we should remove the removal.

# Add this so that coverage will run on subprocesses
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

{envbindir}/coverage run "{envbindir}/trial" {env:TRIAL_FLAGS:} {posargs:tests} {env:TOXSUFFIX:}
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

#4225 added both COVERAGE_PROCESS_START and coverage run. afaict the former means the latter is redundant.

# 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
Expand Down Expand Up @@ -80,10 +88,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).
Expand All @@ -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]
callahad marked this conversation as resolved.
Show resolved Hide resolved
richvdh marked this conversation as resolved.
Show resolved Hide resolved

[testenv:benchmark]
deps =
Expand Down Expand Up @@ -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
Comment on lines -160 to -163
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

this has moved to mypy.ini.