Fix "There is no current event loop in thread" error in tests (#19134)

This commit is contained in:
Andrew Morgan
2025-11-04 13:32:49 +01:00
committed by GitHub
parent db00925ae7
commit 08f570f5f5
2 changed files with 6 additions and 14 deletions

1
changelog.d/19134.bugfix Normal file
View File

@@ -0,0 +1 @@
Add support for Python 3.14.

View File

@@ -19,9 +19,8 @@
#
#
import asyncio
from asyncio import Future
from http import HTTPStatus
from typing import Any, Awaitable, Optional, TypeVar, cast
from typing import Any, Optional, TypeVar, cast
from unittest.mock import Mock
import attr
@@ -787,20 +786,12 @@ TV = TypeVar("TV")
async def make_awaitable(value: T) -> T:
"""
Makes a fresh awaitable, suitable for mocking an `async` function.
"""
return value
def make_multiple_awaitable(result: TV) -> Awaitable[TV]:
"""
Makes an awaitable, suitable for mocking an `async` function.
This uses Futures as they can be awaited multiple times so can be returned
to multiple callers.
"""
future: Future[TV] = Future()
future.set_result(result)
return future
def create_module(
config_override: Optional[dict[str, Any]] = None, worker_name: Optional[str] = None
) -> InviteAutoAccepter:
@@ -809,7 +800,7 @@ def create_module(
module_api = Mock(spec=ModuleApi)
module_api.is_mine.side_effect = lambda a: a.split(":")[1] == "test"
module_api.worker_name = worker_name
module_api.sleep.return_value = make_multiple_awaitable(None)
module_api.sleep.return_value = lambda *_args, **_kwargs: make_awaitable(None)
module_api.get_userinfo_by_id.return_value = UserInfo(
user_id=UserID.from_string("@user:test"),
is_admin=False,