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

Commit 42aea0d

Browse files
authored
Add final type hint to tests.unittest. (#15072)
Adds a return type to HomeServerTestCase.make_homeserver and deal with any variables which are no longer Any.
1 parent 119e079 commit 42aea0d

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

55 files changed

+433
-320
lines changed

changelog.d/15072.misc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
Improve type hints.

mypy.ini

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,6 @@ disallow_untyped_defs = False
5656
[mypy-synapse.storage.database]
5757
disallow_untyped_defs = False
5858

59-
[mypy-tests.unittest]
60-
disallow_untyped_defs = False
61-
6259
[mypy-tests.util.caches.test_descriptors]
6360
disallow_untyped_defs = False
6461

tests/app/test_openid_listener.py

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,9 @@ def test_openid_listener(self, names: List[str], expectation: str) -> None:
6767
}
6868

6969
# Listen with the config
70-
self.hs._listen_http(parse_listener_def(0, config))
70+
hs = self.hs
71+
assert isinstance(hs, GenericWorkerServer)
72+
hs._listen_http(parse_listener_def(0, config))
7173

7274
# Grab the resource from the site that was told to listen
7375
site = self.reactor.tcpServers[0][1]
@@ -115,7 +117,9 @@ def test_openid_listener(self, names: List[str], expectation: str) -> None:
115117
}
116118

117119
# Listen with the config
118-
self.hs._listener_http(self.hs.config, parse_listener_def(0, config))
120+
hs = self.hs
121+
assert isinstance(hs, SynapseHomeServer)
122+
hs._listener_http(self.hs.config, parse_listener_def(0, config))
119123

120124
# Grab the resource from the site that was told to listen
121125
site = self.reactor.tcpServers[0][1]

tests/crypto/test_keyring.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,7 @@ def test_verify_json_for_server(self) -> None:
192192
key1 = signedjson.key.generate_signing_key("1")
193193
r = self.hs.get_datastores().main.store_server_verify_keys(
194194
"server9",
195-
time.time() * 1000,
195+
int(time.time() * 1000),
196196
[("server9", get_key_id(key1), FetchKeyResult(get_verify_key(key1), 1000))],
197197
)
198198
self.get_success(r)
@@ -287,7 +287,7 @@ def test_verify_json_for_server_with_null_valid_until_ms(self) -> None:
287287
key1 = signedjson.key.generate_signing_key("1")
288288
r = self.hs.get_datastores().main.store_server_verify_keys(
289289
"server9",
290-
time.time() * 1000,
290+
int(time.time() * 1000),
291291
# None is not a valid value in FetchKeyResult, but we're abusing this
292292
# API to insert null values into the database. The nulls get converted
293293
# to 0 when fetched in KeyStore.get_server_verify_keys.
@@ -466,9 +466,9 @@ async def get_json(destination: str, path: str, **kwargs: Any) -> JsonDict:
466466
key_json = self.get_success(
467467
self.hs.get_datastores().main.get_server_keys_json([lookup_triplet])
468468
)
469-
res = key_json[lookup_triplet]
470-
self.assertEqual(len(res), 1)
471-
res = res[0]
469+
res_keys = key_json[lookup_triplet]
470+
self.assertEqual(len(res_keys), 1)
471+
res = res_keys[0]
472472
self.assertEqual(res["key_id"], testverifykey_id)
473473
self.assertEqual(res["from_server"], SERVER_NAME)
474474
self.assertEqual(res["ts_added_ms"], self.reactor.seconds() * 1000)
@@ -584,9 +584,9 @@ def test_get_keys_from_perspectives(self) -> None:
584584
key_json = self.get_success(
585585
self.hs.get_datastores().main.get_server_keys_json([lookup_triplet])
586586
)
587-
res = key_json[lookup_triplet]
588-
self.assertEqual(len(res), 1)
589-
res = res[0]
587+
res_keys = key_json[lookup_triplet]
588+
self.assertEqual(len(res_keys), 1)
589+
res = res_keys[0]
590590
self.assertEqual(res["key_id"], testverifykey_id)
591591
self.assertEqual(res["from_server"], self.mock_perspective_server.server_name)
592592
self.assertEqual(res["ts_added_ms"], self.reactor.seconds() * 1000)
@@ -705,9 +705,9 @@ def test_get_perspectives_own_key(self) -> None:
705705
key_json = self.get_success(
706706
self.hs.get_datastores().main.get_server_keys_json([lookup_triplet])
707707
)
708-
res = key_json[lookup_triplet]
709-
self.assertEqual(len(res), 1)
710-
res = res[0]
708+
res_keys = key_json[lookup_triplet]
709+
self.assertEqual(len(res_keys), 1)
710+
res = res_keys[0]
711711
self.assertEqual(res["key_id"], testverifykey_id)
712712
self.assertEqual(res["from_server"], self.mock_perspective_server.server_name)
713713
self.assertEqual(res["ts_added_ms"], self.reactor.seconds() * 1000)

tests/events/test_presence_router.py

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -156,11 +156,11 @@ class PresenceRouterTestCase(FederatingHomeserverTestCase):
156156

157157
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
158158
# Mock out the calls over federation.
159-
fed_transport_client = Mock(spec=["send_transaction"])
160-
fed_transport_client.send_transaction = simple_async_mock({})
159+
self.fed_transport_client = Mock(spec=["send_transaction"])
160+
self.fed_transport_client.send_transaction = simple_async_mock({})
161161

162162
hs = self.setup_test_homeserver(
163-
federation_transport_client=fed_transport_client,
163+
federation_transport_client=self.fed_transport_client,
164164
)
165165

166166
load_legacy_presence_router(hs)
@@ -422,7 +422,7 @@ def send_local_online_presence_to_with_module_test_body(self) -> None:
422422
#
423423
# Thus we reset the mock, and try sending all online local user
424424
# presence again
425-
self.hs.get_federation_transport_client().send_transaction.reset_mock()
425+
self.fed_transport_client.send_transaction.reset_mock()
426426

427427
# Broadcast local user online presence
428428
self.get_success(
@@ -447,9 +447,7 @@ def send_local_online_presence_to_with_module_test_body(self) -> None:
447447
}
448448
found_users = set()
449449

450-
calls = (
451-
self.hs.get_federation_transport_client().send_transaction.call_args_list
452-
)
450+
calls = self.fed_transport_client.send_transaction.call_args_list
453451
for call in calls:
454452
call_args = call[0]
455453
federation_transaction: Transaction = call_args[0]

tests/federation/test_complexity.py

Lines changed: 20 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
from synapse.api.errors import Codes, SynapseError
1818
from synapse.rest import admin
1919
from synapse.rest.client import login, room
20-
from synapse.types import JsonDict, UserID
20+
from synapse.types import JsonDict, UserID, create_requester
2121

2222
from tests import unittest
2323
from tests.test_utils import make_awaitable
@@ -56,7 +56,11 @@ def test_complexity_simple(self) -> None:
5656

5757
# Artificially raise the complexity
5858
store = self.hs.get_datastores().main
59-
store.get_current_state_event_counts = lambda x: make_awaitable(500 * 1.23)
59+
60+
async def get_current_state_event_counts(room_id: str) -> int:
61+
return int(500 * 1.23)
62+
63+
store.get_current_state_event_counts = get_current_state_event_counts # type: ignore[assignment]
6064

6165
# Get the room complexity again -- make sure it's our artificial value
6266
channel = self.make_signed_federation_request(
@@ -75,12 +79,12 @@ def test_join_too_large(self) -> None:
7579

7680
# Mock out some things, because we don't want to test the whole join
7781
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
78-
handler.federation_handler.do_invite_join = Mock(
82+
handler.federation_handler.do_invite_join = Mock( # type: ignore[assignment]
7983
return_value=make_awaitable(("", 1))
8084
)
8185

8286
d = handler._remote_join(
83-
None,
87+
create_requester(u1),
8488
["other.example.com"],
8589
"roomid",
8690
UserID.from_string(u1),
@@ -106,12 +110,12 @@ def test_join_too_large_admin(self) -> None:
106110

107111
# Mock out some things, because we don't want to test the whole join
108112
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
109-
handler.federation_handler.do_invite_join = Mock(
113+
handler.federation_handler.do_invite_join = Mock( # type: ignore[assignment]
110114
return_value=make_awaitable(("", 1))
111115
)
112116

113117
d = handler._remote_join(
114-
None,
118+
create_requester(u1),
115119
["other.example.com"],
116120
"roomid",
117121
UserID.from_string(u1),
@@ -144,17 +148,18 @@ def test_join_too_large_once_joined(self) -> None:
144148

145149
# Mock out some things, because we don't want to test the whole join
146150
fed_transport.client.get_json = Mock(return_value=make_awaitable(None))
147-
handler.federation_handler.do_invite_join = Mock(
151+
handler.federation_handler.do_invite_join = Mock( # type: ignore[assignment]
148152
return_value=make_awaitable(("", 1))
149153
)
150154

151155
# Artificially raise the complexity
152-
self.hs.get_datastores().main.get_current_state_event_counts = (
153-
lambda x: make_awaitable(600)
154-
)
156+
async def get_current_state_event_counts(room_id: str) -> int:
157+
return 600
158+
159+
self.hs.get_datastores().main.get_current_state_event_counts = get_current_state_event_counts # type: ignore[assignment]
155160

156161
d = handler._remote_join(
157-
None,
162+
create_requester(u1),
158163
["other.example.com"],
159164
room_1,
160165
UserID.from_string(u1),
@@ -200,12 +205,12 @@ def test_join_too_large_no_admin(self) -> None:
200205

201206
# Mock out some things, because we don't want to test the whole join
202207
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
203-
handler.federation_handler.do_invite_join = Mock(
208+
handler.federation_handler.do_invite_join = Mock( # type: ignore[assignment]
204209
return_value=make_awaitable(("", 1))
205210
)
206211

207212
d = handler._remote_join(
208-
None,
213+
create_requester(u1),
209214
["other.example.com"],
210215
"roomid",
211216
UserID.from_string(u1),
@@ -230,12 +235,12 @@ def test_join_too_large_admin(self) -> None:
230235

231236
# Mock out some things, because we don't want to test the whole join
232237
fed_transport.client.get_json = Mock(return_value=make_awaitable({"v1": 9999}))
233-
handler.federation_handler.do_invite_join = Mock(
238+
handler.federation_handler.do_invite_join = Mock( # type: ignore[assignment]
234239
return_value=make_awaitable(("", 1))
235240
)
236241

237242
d = handler._remote_join(
238-
None,
243+
create_requester(u1),
239244
["other.example.com"],
240245
"roomid",
241246
UserID.from_string(u1),

tests/federation/test_federation_catch_up.py

Lines changed: 22 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,11 @@
55

66
from synapse.api.constants import EventTypes
77
from synapse.events import EventBase
8-
from synapse.federation.sender import PerDestinationQueue, TransactionManager
8+
from synapse.federation.sender import (
9+
FederationSender,
10+
PerDestinationQueue,
11+
TransactionManager,
12+
)
913
from synapse.federation.units import Edu, Transaction
1014
from synapse.rest import admin
1115
from synapse.rest.client import login, room
@@ -33,8 +37,9 @@ class FederationCatchUpTestCases(FederatingHomeserverTestCase):
3337
]
3438

3539
def make_homeserver(self, reactor: MemoryReactor, clock: Clock) -> HomeServer:
40+
self.federation_transport_client = Mock(spec=["send_transaction"])
3641
return self.setup_test_homeserver(
37-
federation_transport_client=Mock(spec=["send_transaction"]),
42+
federation_transport_client=self.federation_transport_client,
3843
)
3944

4045
def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
@@ -52,10 +57,14 @@ def prepare(self, reactor: MemoryReactor, clock: Clock, hs: HomeServer) -> None:
5257
self.pdus: List[JsonDict] = []
5358
self.failed_pdus: List[JsonDict] = []
5459
self.is_online = True
55-
self.hs.get_federation_transport_client().send_transaction.side_effect = (
60+
self.federation_transport_client.send_transaction.side_effect = (
5661
self.record_transaction
5762
)
5863

64+
federation_sender = hs.get_federation_sender()
65+
assert isinstance(federation_sender, FederationSender)
66+
self.federation_sender = federation_sender
67+
5968
def default_config(self) -> JsonDict:
6069
config = super().default_config()
6170
config["federation_sender_instances"] = None
@@ -229,11 +238,11 @@ def test_catch_up_from_blank_state(self) -> None:
229238
# let's delete the federation transmission queue
230239
# (this pretends we are starting up fresh.)
231240
self.assertFalse(
232-
self.hs.get_federation_sender()
233-
._per_destination_queues["host2"]
234-
.transmission_loop_running
241+
self.federation_sender._per_destination_queues[
242+
"host2"
243+
].transmission_loop_running
235244
)
236-
del self.hs.get_federation_sender()._per_destination_queues["host2"]
245+
del self.federation_sender._per_destination_queues["host2"]
237246

238247
# let's also clear any backoffs
239248
self.get_success(
@@ -322,6 +331,7 @@ def test_catch_up_loop(self) -> None:
322331
# also fetch event 5 so we know its last_successful_stream_ordering later
323332
event_5 = self.get_success(self.hs.get_datastores().main.get_event(event_id_5))
324333

334+
assert event_2.internal_metadata.stream_ordering is not None
325335
self.get_success(
326336
self.hs.get_datastores().main.set_destination_last_successful_stream_ordering(
327337
"host2", event_2.internal_metadata.stream_ordering
@@ -425,15 +435,16 @@ def test_catch_up_on_synapse_startup(self) -> None:
425435
def wake_destination_track(destination: str) -> None:
426436
woken.append(destination)
427437

428-
self.hs.get_federation_sender().wake_destination = wake_destination_track
438+
self.federation_sender.wake_destination = wake_destination_track # type: ignore[assignment]
429439

430440
# cancel the pre-existing timer for _wake_destinations_needing_catchup
431441
# this is because we are calling it manually rather than waiting for it
432442
# to be called automatically
433-
self.hs.get_federation_sender()._catchup_after_startup_timer.cancel()
443+
assert self.federation_sender._catchup_after_startup_timer is not None
444+
self.federation_sender._catchup_after_startup_timer.cancel()
434445

435446
self.get_success(
436-
self.hs.get_federation_sender()._wake_destinations_needing_catchup(), by=5.0
447+
self.federation_sender._wake_destinations_needing_catchup(), by=5.0
437448
)
438449

439450
# ASSERT (_wake_destinations_needing_catchup):
@@ -475,6 +486,7 @@ def test_not_latest_event(self) -> None:
475486
)
476487
)
477488

489+
assert event_1.internal_metadata.stream_ordering is not None
478490
self.get_success(
479491
self.hs.get_datastores().main.set_destination_last_successful_stream_ordering(
480492
"host2", event_1.internal_metadata.stream_ordering

tests/federation/test_federation_client.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ def test_get_pdu_event_from_cache_is_pristine(self) -> None:
178178
RoomVersions.V9,
179179
)
180180
)
181-
self.assertIsNotNone(pulled_pdu_info2)
181+
assert pulled_pdu_info2 is not None
182182
remote_pdu2 = pulled_pdu_info2.pdu
183183

184184
# Sanity check that we are working against the same event
@@ -226,7 +226,7 @@ def _get_pdu_once(self) -> EventBase:
226226
RoomVersions.V9,
227227
)
228228
)
229-
self.assertIsNotNone(pulled_pdu_info)
229+
assert pulled_pdu_info is not None
230230
remote_pdu = pulled_pdu_info.pdu
231231

232232
# check the right call got made to the agent

0 commit comments

Comments
 (0)