Browse Source

Update ruff config (#16283)

Enable additional checks & clean-up unneeded configuration.
tags/v1.93.0rc1
Patrick Cloke 8 months ago
committed by GitHub
parent
commit
aa483cb4c9
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
26 changed files with 63 additions and 64 deletions
  1. +1
    -0
      changelog.d/16283.misc
  2. +0
    -2
      contrib/cmdclient/http.py
  3. +1
    -1
      docker/start.py
  4. +17
    -11
      pyproject.toml
  5. +4
    -3
      scripts-dev/mypy_synapse_plugin.py
  6. +0
    -1
      synapse/_scripts/update_synapse_database.py
  7. +0
    -2
      synapse/events/snapshot.py
  8. +1
    -3
      synapse/media/url_previewer.py
  9. +0
    -2
      synapse/storage/background_updates.py
  10. +1
    -1
      synmark/suites/logging.py
  11. +1
    -1
      tests/handlers/test_device.py
  12. +1
    -1
      tests/handlers/test_federation.py
  13. +6
    -6
      tests/logging/test_remote_handler.py
  14. +1
    -1
      tests/replication/tcp/streams/test_to_device.py
  15. +3
    -3
      tests/rest/admin/test_federation.py
  16. +1
    -1
      tests/rest/client/test_account.py
  17. +4
    -4
      tests/rest/client/test_login.py
  18. +3
    -3
      tests/rest/client/test_register.py
  19. +1
    -1
      tests/storage/databases/main/test_lock.py
  20. +3
    -3
      tests/storage/test_event_chain.py
  21. +3
    -3
      tests/storage/test_event_federation.py
  22. +2
    -2
      tests/storage/test_profile.py
  23. +1
    -1
      tests/storage/test_txn_limit.py
  24. +2
    -2
      tests/storage/test_user_filters.py
  25. +4
    -4
      tests/test_visibility.py
  26. +2
    -2
      tests/util/caches/test_descriptors.py

+ 1
- 0
changelog.d/16283.misc View File

@@ -0,0 +1 @@
Enable additional linting checks.

+ 0
- 2
contrib/cmdclient/http.py View File

@@ -37,7 +37,6 @@ class HttpClient:
Deferred: Succeeds when we get a 2xx HTTP response. The result Deferred: Succeeds when we get a 2xx HTTP response. The result
will be the decoded JSON body. will be the decoded JSON body.
""" """
pass


def get_json(self, url, args=None): def get_json(self, url, args=None):
"""Gets some json from the given host homeserver and path """Gets some json from the given host homeserver and path
@@ -53,7 +52,6 @@ class HttpClient:
Deferred: Succeeds when we get a 2xx HTTP response. The result Deferred: Succeeds when we get a 2xx HTTP response. The result
will be the decoded JSON body. will be the decoded JSON body.
""" """
pass




class TwistedHttpClient(HttpClient): class TwistedHttpClient(HttpClient):


+ 1
- 1
docker/start.py View File

@@ -239,7 +239,7 @@ def main(args: List[str], environ: MutableMapping[str, str]) -> None:
log("Could not find %s, will not use" % (jemallocpath,)) log("Could not find %s, will not use" % (jemallocpath,))


# if there are no config files passed to synapse, try adding the default file # if there are no config files passed to synapse, try adding the default file
if not any(p.startswith("--config-path") or p.startswith("-c") for p in args):
if not any(p.startswith(("--config-path", "-c")) for p in args):
config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data") config_dir = environ.get("SYNAPSE_CONFIG_DIR", "/data")
config_path = environ.get( config_path = environ.get(
"SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml" "SYNAPSE_CONFIG_PATH", config_dir + "/homeserver.yaml"


+ 17
- 11
pyproject.toml View File

@@ -43,33 +43,39 @@ target-version = ['py38', 'py39', 'py310', 'py311']
[tool.ruff] [tool.ruff]
line-length = 88 line-length = 88


# See https://github.com/charliermarsh/ruff/#pycodestyle
# See https://beta.ruff.rs/docs/rules/#error-e
# for error codes. The ones we ignore are: # for error codes. The ones we ignore are:
# E731: do not assign a lambda expression, use a def
# E501: Line too long (black enforces this for us) # E501: Line too long (black enforces this for us)
# E731: do not assign a lambda expression, use a def
# #
# flake8-bugbear compatible checks. Its error codes are described at # flake8-bugbear compatible checks. Its error codes are described at
# https://github.com/charliermarsh/ruff/#flake8-bugbear
# B019: Use of functools.lru_cache or functools.cache on methods can lead to memory leaks
# https://beta.ruff.rs/docs/rules/#flake8-bugbear-b
# B023: Functions defined inside a loop must not use variables redefined in the loop # B023: Functions defined inside a loop must not use variables redefined in the loop
# B024: Abstract base class with no abstract method.
ignore = [ ignore = [
"B019",
"B023", "B023",
"B024",
"E501", "E501",
"E731", "E731",
] ]
select = [ select = [
# pycodestyle checks.
# pycodestyle
"E", "E",
"W", "W",
# pyflakes checks.
# pyflakes
"F", "F",
# flake8-bugbear checks.
# flake8-bugbear
"B0", "B0",
# flake8-comprehensions checks.
# flake8-comprehensions
"C4", "C4",
# flake8-2020
"YTT",
# flake8-slots
"SLOT",
# flake8-debugger
"T10",
# flake8-pie
"PIE",
# flake8-executable
"EXE",
] ]


[tool.isort] [tool.isort]


+ 4
- 3
scripts-dev/mypy_synapse_plugin.py View File

@@ -30,9 +30,10 @@ class SynapsePlugin(Plugin):
self, fullname: str self, fullname: str
) -> Optional[Callable[[MethodSigContext], CallableType]]: ) -> Optional[Callable[[MethodSigContext], CallableType]]:
if fullname.startswith( if fullname.startswith(
"synapse.util.caches.descriptors.CachedFunction.__call__"
) or fullname.startswith(
"synapse.util.caches.descriptors._LruCachedFunction.__call__"
(
"synapse.util.caches.descriptors.CachedFunction.__call__",
"synapse.util.caches.descriptors._LruCachedFunction.__call__",
)
): ):
return cached_function_method_signature return cached_function_method_signature
return None return None


+ 0
- 1
synapse/_scripts/update_synapse_database.py View File

@@ -1,4 +1,3 @@
#!/usr/bin/env python
# Copyright 2019 The Matrix.org Foundation C.I.C. # Copyright 2019 The Matrix.org Foundation C.I.C.
# #
# Licensed under the Apache License, Version 2.0 (the "License"); # Licensed under the Apache License, Version 2.0 (the "License");


+ 0
- 2
synapse/events/snapshot.py View File

@@ -55,7 +55,6 @@ class UnpersistedEventContextBase(ABC):
A method to convert an UnpersistedEventContext to an EventContext, suitable for A method to convert an UnpersistedEventContext to an EventContext, suitable for
sending to the database with the associated event. sending to the database with the associated event.
""" """
pass


@abstractmethod @abstractmethod
async def get_prev_state_ids( async def get_prev_state_ids(
@@ -69,7 +68,6 @@ class UnpersistedEventContextBase(ABC):
state_filter: specifies the type of state event to fetch from DB, example: state_filter: specifies the type of state event to fetch from DB, example:
EventTypes.JoinRules EventTypes.JoinRules
""" """
pass




@attr.s(slots=True, auto_attribs=True) @attr.s(slots=True, auto_attribs=True)


+ 1
- 3
synapse/media/url_previewer.py View File

@@ -846,9 +846,7 @@ def _is_media(content_type: str) -> bool:


def _is_html(content_type: str) -> bool: def _is_html(content_type: str) -> bool:
content_type = content_type.lower() content_type = content_type.lower()
return content_type.startswith("text/html") or content_type.startswith(
"application/xhtml"
)
return content_type.startswith(("text/html", "application/xhtml"))




def _is_json(content_type: str) -> bool: def _is_json(content_type: str) -> bool:


+ 0
- 2
synapse/storage/background_updates.py View File

@@ -62,7 +62,6 @@ class Constraint(metaclass=abc.ABCMeta):
@abc.abstractmethod @abc.abstractmethod
def make_check_clause(self, table: str) -> str: def make_check_clause(self, table: str) -> str:
"""Returns an SQL expression that checks the row passes the constraint.""" """Returns an SQL expression that checks the row passes the constraint."""
pass


@abc.abstractmethod @abc.abstractmethod
def make_constraint_clause_postgres(self) -> str: def make_constraint_clause_postgres(self) -> str:
@@ -70,7 +69,6 @@ class Constraint(metaclass=abc.ABCMeta):


Only used on Postgres DBs Only used on Postgres DBs
""" """
pass




@attr.s(auto_attribs=True) @attr.s(auto_attribs=True)


+ 1
- 1
synmark/suites/logging.py View File

@@ -112,7 +112,7 @@ async def main(reactor, loops):
start = perf_counter() start = perf_counter()


# Send a bunch of useful messages # Send a bunch of useful messages
for i in range(0, loops):
for i in range(loops):
logger.info("test message %s", i) logger.info("test message %s", i)


if len(handler._buffer) == handler.maximum_buffer: if len(handler._buffer) == handler.maximum_buffer:


+ 1
- 1
tests/handlers/test_device.py View File

@@ -223,7 +223,7 @@ class DeviceTestCase(unittest.HomeserverTestCase):


# queue a bunch of messages in the inbox # queue a bunch of messages in the inbox
requester = create_requester(sender, device_id=DEVICE_ID) requester = create_requester(sender, device_id=DEVICE_ID)
for i in range(0, DeviceHandler.DEVICE_MSGS_DELETE_BATCH_LIMIT + 10):
for i in range(DeviceHandler.DEVICE_MSGS_DELETE_BATCH_LIMIT + 10):
self.get_success( self.get_success(
self.device_message_handler.send_device_message( self.device_message_handler.send_device_message(
requester, "message_type", {receiver: {"*": {"val": i}}} requester, "message_type", {receiver: {"*": {"val": i}}}


+ 1
- 1
tests/handlers/test_federation.py View File

@@ -262,7 +262,7 @@ class FederationTestCase(unittest.FederatingHomeserverTestCase):
if (ev.type, ev.state_key) if (ev.type, ev.state_key)
in {("m.room.create", ""), ("m.room.member", remote_server_user_id)} in {("m.room.create", ""), ("m.room.member", remote_server_user_id)}
] ]
for _ in range(0, 8):
for _ in range(8):
event = make_event_from_dict( event = make_event_from_dict(
self.add_hashes_and_signatures_from_other_server( self.add_hashes_and_signatures_from_other_server(
{ {


+ 6
- 6
tests/logging/test_remote_handler.py View File

@@ -78,11 +78,11 @@ class RemoteHandlerTestCase(LoggerCleanupMixin, TestCase):
logger = self.get_logger(handler) logger = self.get_logger(handler)


# Send some debug messages # Send some debug messages
for i in range(0, 3):
for i in range(3):
logger.debug("debug %s" % (i,)) logger.debug("debug %s" % (i,))


# Send a bunch of useful messages # Send a bunch of useful messages
for i in range(0, 7):
for i in range(7):
logger.info("info %s" % (i,)) logger.info("info %s" % (i,))


# The last debug message pushes it past the maximum buffer # The last debug message pushes it past the maximum buffer
@@ -108,15 +108,15 @@ class RemoteHandlerTestCase(LoggerCleanupMixin, TestCase):
logger = self.get_logger(handler) logger = self.get_logger(handler)


# Send some debug messages # Send some debug messages
for i in range(0, 3):
for i in range(3):
logger.debug("debug %s" % (i,)) logger.debug("debug %s" % (i,))


# Send a bunch of useful messages # Send a bunch of useful messages
for i in range(0, 10):
for i in range(10):
logger.warning("warn %s" % (i,)) logger.warning("warn %s" % (i,))


# Send a bunch of info messages # Send a bunch of info messages
for i in range(0, 3):
for i in range(3):
logger.info("info %s" % (i,)) logger.info("info %s" % (i,))


# The last debug message pushes it past the maximum buffer # The last debug message pushes it past the maximum buffer
@@ -144,7 +144,7 @@ class RemoteHandlerTestCase(LoggerCleanupMixin, TestCase):
logger = self.get_logger(handler) logger = self.get_logger(handler)


# Send a bunch of useful messages # Send a bunch of useful messages
for i in range(0, 20):
for i in range(20):
logger.warning("warn %s" % (i,)) logger.warning("warn %s" % (i,))


# Allow the reconnection # Allow the reconnection


+ 1
- 1
tests/replication/tcp/streams/test_to_device.py View File

@@ -49,7 +49,7 @@ class ToDeviceStreamTestCase(BaseStreamTestCase):


# add messages to the device inbox for user1 up until the # add messages to the device inbox for user1 up until the
# limit defined for a stream update batch # limit defined for a stream update batch
for i in range(0, _STREAM_UPDATE_TARGET_ROW_COUNT):
for i in range(_STREAM_UPDATE_TARGET_ROW_COUNT):
msg["content"] = {"device": {}} msg["content"] = {"device": {}}
messages = {user1: {"device": msg}} messages = {user1: {"device": msg}}




+ 3
- 3
tests/rest/admin/test_federation.py View File

@@ -510,7 +510,7 @@ class FederationTestCase(unittest.HomeserverTestCase):
Args: Args:
number_destinations: Number of destinations to be created number_destinations: Number of destinations to be created
""" """
for i in range(0, number_destinations):
for i in range(number_destinations):
dest = f"sub{i}.example.com" dest = f"sub{i}.example.com"
self._create_destination(dest, 50, 50, 50, 100) self._create_destination(dest, 50, 50, 50, 100)


@@ -690,7 +690,7 @@ class DestinationMembershipTestCase(unittest.HomeserverTestCase):
self._check_fields(channel_desc.json_body["rooms"]) self._check_fields(channel_desc.json_body["rooms"])


# test that both lists have different directions # test that both lists have different directions
for i in range(0, number_rooms):
for i in range(number_rooms):
self.assertEqual( self.assertEqual(
channel_asc.json_body["rooms"][i]["room_id"], channel_asc.json_body["rooms"][i]["room_id"],
channel_desc.json_body["rooms"][number_rooms - 1 - i]["room_id"], channel_desc.json_body["rooms"][number_rooms - 1 - i]["room_id"],
@@ -777,7 +777,7 @@ class DestinationMembershipTestCase(unittest.HomeserverTestCase):
Args: Args:
number_rooms: Number of rooms to be created number_rooms: Number of rooms to be created
""" """
for _ in range(0, number_rooms):
for _ in range(number_rooms):
room_id = self.helper.create_room_as( room_id = self.helper.create_room_as(
self.admin_user, tok=self.admin_user_tok self.admin_user, tok=self.admin_user_tok
) )


+ 1
- 1
tests/rest/client/test_account.py View File

@@ -575,7 +575,7 @@ class DeactivateTestCase(unittest.HomeserverTestCase):


# create a bunch of users and add keys for them # create a bunch of users and add keys for them
users = [] users = []
for i in range(0, 20):
for i in range(20):
user_id = self.register_user("missPiggy" + str(i), "test") user_id = self.register_user("missPiggy" + str(i), "test")
users.append((user_id,)) users.append((user_id,))




+ 4
- 4
tests/rest/client/test_login.py View File

@@ -176,10 +176,10 @@ class LoginRestServletTestCase(unittest.HomeserverTestCase):
def test_POST_ratelimiting_per_address(self) -> None: def test_POST_ratelimiting_per_address(self) -> None:
# Create different users so we're sure not to be bothered by the per-user # Create different users so we're sure not to be bothered by the per-user
# ratelimiter. # ratelimiter.
for i in range(0, 6):
for i in range(6):
self.register_user("kermit" + str(i), "monkey") self.register_user("kermit" + str(i), "monkey")


for i in range(0, 6):
for i in range(6):
params = { params = {
"type": "m.login.password", "type": "m.login.password",
"identifier": {"type": "m.id.user", "user": "kermit" + str(i)}, "identifier": {"type": "m.id.user", "user": "kermit" + str(i)},
@@ -228,7 +228,7 @@ class LoginRestServletTestCase(unittest.HomeserverTestCase):
def test_POST_ratelimiting_per_account(self) -> None: def test_POST_ratelimiting_per_account(self) -> None:
self.register_user("kermit", "monkey") self.register_user("kermit", "monkey")


for i in range(0, 6):
for i in range(6):
params = { params = {
"type": "m.login.password", "type": "m.login.password",
"identifier": {"type": "m.id.user", "user": "kermit"}, "identifier": {"type": "m.id.user", "user": "kermit"},
@@ -277,7 +277,7 @@ class LoginRestServletTestCase(unittest.HomeserverTestCase):
def test_POST_ratelimiting_per_account_failed_attempts(self) -> None: def test_POST_ratelimiting_per_account_failed_attempts(self) -> None:
self.register_user("kermit", "monkey") self.register_user("kermit", "monkey")


for i in range(0, 6):
for i in range(6):
params = { params = {
"type": "m.login.password", "type": "m.login.password",
"identifier": {"type": "m.id.user", "user": "kermit"}, "identifier": {"type": "m.id.user", "user": "kermit"},


+ 3
- 3
tests/rest/client/test_register.py View File

@@ -169,7 +169,7 @@ class RegisterRestServletTestCase(unittest.HomeserverTestCase):


@override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}}) @override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}})
def test_POST_ratelimiting_guest(self) -> None: def test_POST_ratelimiting_guest(self) -> None:
for i in range(0, 6):
for i in range(6):
url = self.url + b"?kind=guest" url = self.url + b"?kind=guest"
channel = self.make_request(b"POST", url, b"{}") channel = self.make_request(b"POST", url, b"{}")


@@ -187,7 +187,7 @@ class RegisterRestServletTestCase(unittest.HomeserverTestCase):


@override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}}) @override_config({"rc_registration": {"per_second": 0.17, "burst_count": 5}})
def test_POST_ratelimiting(self) -> None: def test_POST_ratelimiting(self) -> None:
for i in range(0, 6):
for i in range(6):
request_data = { request_data = {
"username": "kermit" + str(i), "username": "kermit" + str(i),
"password": "monkey", "password": "monkey",
@@ -1223,7 +1223,7 @@ class RegistrationTokenValidityRestServletTestCase(unittest.HomeserverTestCase):
def test_GET_ratelimiting(self) -> None: def test_GET_ratelimiting(self) -> None:
token = "1234" token = "1234"


for i in range(0, 6):
for i in range(6):
channel = self.make_request( channel = self.make_request(
b"GET", b"GET",
f"{self.url}?token={token}", f"{self.url}?token={token}",


+ 1
- 1
tests/storage/databases/main/test_lock.py View File

@@ -382,7 +382,7 @@ class ReadWriteLockTestCase(unittest.HomeserverTestCase):
self.get_success(lock.__aenter__()) self.get_success(lock.__aenter__())


# Wait for ages with the lock, we should not be able to get the lock. # Wait for ages with the lock, we should not be able to get the lock.
for _ in range(0, 10):
for _ in range(10):
self.reactor.advance((_RENEWAL_INTERVAL_MS / 1000)) self.reactor.advance((_RENEWAL_INTERVAL_MS / 1000))


lock2 = self.get_success( lock2 = self.get_success(


+ 3
- 3
tests/storage/test_event_chain.py View File

@@ -664,7 +664,7 @@ class EventChainBackgroundUpdateTestCase(HomeserverTestCase):


# Add a bunch of state so that it takes multiple iterations of the # Add a bunch of state so that it takes multiple iterations of the
# background update to process the room. # background update to process the room.
for i in range(0, 150):
for i in range(150):
self.helper.send_state( self.helper.send_state(
room_id, event_type="m.test", body={"index": i}, tok=self.token room_id, event_type="m.test", body={"index": i}, tok=self.token
) )
@@ -718,12 +718,12 @@ class EventChainBackgroundUpdateTestCase(HomeserverTestCase):


# Add a bunch of state so that it takes multiple iterations of the # Add a bunch of state so that it takes multiple iterations of the
# background update to process the room. # background update to process the room.
for i in range(0, 150):
for i in range(150):
self.helper.send_state( self.helper.send_state(
room_id1, event_type="m.test", body={"index": i}, tok=self.token room_id1, event_type="m.test", body={"index": i}, tok=self.token
) )


for i in range(0, 150):
for i in range(150):
self.helper.send_state( self.helper.send_state(
room_id2, event_type="m.test", body={"index": i}, tok=self.token room_id2, event_type="m.test", body={"index": i}, tok=self.token
) )


+ 3
- 3
tests/storage/test_event_federation.py View File

@@ -227,7 +227,7 @@ class EventFederationWorkerStoreTestCase(tests.unittest.HomeserverTestCase):
(room_id, event_id), (room_id, event_id),
) )


for i in range(0, 20):
for i in range(20):
self.get_success( self.get_success(
self.store.db_pool.runInteraction("insert", insert_event, i) self.store.db_pool.runInteraction("insert", insert_event, i)
) )
@@ -235,7 +235,7 @@ class EventFederationWorkerStoreTestCase(tests.unittest.HomeserverTestCase):
# this should get the last ten # this should get the last ten
r = self.get_success(self.store.get_prev_events_for_room(room_id)) r = self.get_success(self.store.get_prev_events_for_room(room_id))
self.assertEqual(10, len(r)) self.assertEqual(10, len(r))
for i in range(0, 10):
for i in range(10):
self.assertEqual("$event_%i:local" % (19 - i), r[i]) self.assertEqual("$event_%i:local" % (19 - i), r[i])


def test_get_rooms_with_many_extremities(self) -> None: def test_get_rooms_with_many_extremities(self) -> None:
@@ -277,7 +277,7 @@ class EventFederationWorkerStoreTestCase(tests.unittest.HomeserverTestCase):
(room_id, event_id), (room_id, event_id),
) )


for i in range(0, 20):
for i in range(20):
self.get_success( self.get_success(
self.store.db_pool.runInteraction("insert", insert_event, i, room1) self.store.db_pool.runInteraction("insert", insert_event, i, room1)
) )


+ 2
- 2
tests/storage/test_profile.py View File

@@ -82,7 +82,7 @@ class ProfileStoreTestCase(unittest.HomeserverTestCase):


self.get_success(self.store.db_pool.runInteraction("", f)) self.get_success(self.store.db_pool.runInteraction("", f))


for i in range(0, 70):
for i in range(70):
self.get_success( self.get_success(
self.store.db_pool.simple_insert( self.store.db_pool.simple_insert(
"profiles", "profiles",
@@ -115,7 +115,7 @@ class ProfileStoreTestCase(unittest.HomeserverTestCase):
) )


expected_values = [] expected_values = []
for i in range(0, 70):
for i in range(70):
expected_values.append((f"@hello{i:02}:{self.hs.hostname}",)) expected_values.append((f"@hello{i:02}:{self.hs.hostname}",))


res = self.get_success( res = self.get_success(


+ 1
- 1
tests/storage/test_txn_limit.py View File

@@ -38,5 +38,5 @@ class SQLTransactionLimitTestCase(unittest.HomeserverTestCase):
db_pool = self.hs.get_datastores().databases[0] db_pool = self.hs.get_datastores().databases[0]


# force txn limit to roll over at least once # force txn limit to roll over at least once
for _ in range(0, 1001):
for _ in range(1001):
self.get_success_or_raise(db_pool.runInteraction("test_select", do_select)) self.get_success_or_raise(db_pool.runInteraction("test_select", do_select))

+ 2
- 2
tests/storage/test_user_filters.py View File

@@ -45,7 +45,7 @@ class UserFiltersStoreTestCase(unittest.HomeserverTestCase):


self.get_success(self.store.db_pool.runInteraction("", f)) self.get_success(self.store.db_pool.runInteraction("", f))


for i in range(0, 70):
for i in range(70):
self.get_success( self.get_success(
self.store.db_pool.simple_insert( self.store.db_pool.simple_insert(
"user_filters", "user_filters",
@@ -82,7 +82,7 @@ class UserFiltersStoreTestCase(unittest.HomeserverTestCase):
) )


expected_values = [] expected_values = []
for i in range(0, 70):
for i in range(70):
expected_values.append((f"@hello{i:02}:{self.hs.hostname}",)) expected_values.append((f"@hello{i:02}:{self.hs.hostname}",))


res = self.get_success( res = self.get_success(


+ 4
- 4
tests/test_visibility.py View File

@@ -51,12 +51,12 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):


# before we do that, we persist some other events to act as state. # before we do that, we persist some other events to act as state.
self._inject_visibility("@admin:hs", "joined") self._inject_visibility("@admin:hs", "joined")
for i in range(0, 10):
for i in range(10):
self._inject_room_member("@resident%i:hs" % i) self._inject_room_member("@resident%i:hs" % i)


events_to_filter = [] events_to_filter = []


for i in range(0, 10):
for i in range(10):
user = "@user%i:%s" % (i, "test_server" if i == 5 else "other_server") user = "@user%i:%s" % (i, "test_server" if i == 5 else "other_server")
evt = self._inject_room_member(user, extra_content={"a": "b"}) evt = self._inject_room_member(user, extra_content={"a": "b"})
events_to_filter.append(evt) events_to_filter.append(evt)
@@ -74,7 +74,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
) )


# the result should be 5 redacted events, and 5 unredacted events. # the result should be 5 redacted events, and 5 unredacted events.
for i in range(0, 5):
for i in range(5):
self.assertEqual(events_to_filter[i].event_id, filtered[i].event_id) self.assertEqual(events_to_filter[i].event_id, filtered[i].event_id)
self.assertNotIn("a", filtered[i].content) self.assertNotIn("a", filtered[i].content)


@@ -177,7 +177,7 @@ class FilterEventsForServerTestCase(unittest.HomeserverTestCase):
) )
) )


for i in range(0, len(events_to_filter)):
for i in range(len(events_to_filter)):
self.assertEqual( self.assertEqual(
events_to_filter[i].event_id, events_to_filter[i].event_id,
filtered[i].event_id, filtered[i].event_id,


+ 2
- 2
tests/util/caches/test_descriptors.py View File

@@ -623,14 +623,14 @@ class CacheDecoratorTestCase(unittest.HomeserverTestCase):


a = A() a = A()


for k in range(0, 12):
for k in range(12):
yield a.func(k) yield a.func(k)


self.assertEqual(callcount[0], 12) self.assertEqual(callcount[0], 12)


# There must have been at least 2 evictions, meaning if we calculate # There must have been at least 2 evictions, meaning if we calculate
# all 12 values again, we must get called at least 2 more times # all 12 values again, we must get called at least 2 more times
for k in range(0, 12):
for k in range(12):
yield a.func(k) yield a.func(k)


self.assertTrue( self.assertTrue(


Loading…
Cancel
Save