Merge pull request #1278 from NousResearch/hermes/hermes-f48b210a

test: fix gateway async tests without implicit event loop
This commit is contained in:
Teknium 2026-03-14 02:57:47 -07:00 committed by GitHub
commit f279bb004f
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 17 additions and 12 deletions

View file

@ -17,6 +17,11 @@ from gateway.config import PlatformConfig
from gateway.platforms.base import BasePlatformAdapter, SendResult from gateway.platforms.base import BasePlatformAdapter, SendResult
def _run(coro):
"""Run a coroutine in a fresh event loop for sync-style tests."""
return asyncio.run(coro)
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
# MEDIA: extraction tests for image files # MEDIA: extraction tests for image files
# --------------------------------------------------------------------------- # ---------------------------------------------------------------------------
@ -97,7 +102,7 @@ class TestTelegramSendImageFile:
mock_msg.message_id = 42 mock_msg.message_id = 42
adapter._bot.send_photo = AsyncMock(return_value=mock_msg) adapter._bot.send_photo = AsyncMock(return_value=mock_msg)
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="12345", image_path=str(img)) adapter.send_image_file(chat_id="12345", image_path=str(img))
) )
assert result.success assert result.success
@ -110,7 +115,7 @@ class TestTelegramSendImageFile:
def test_returns_error_when_file_missing(self, adapter): def test_returns_error_when_file_missing(self, adapter):
"""send_image_file should return error for nonexistent file.""" """send_image_file should return error for nonexistent file."""
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="12345", image_path="/nonexistent/image.png") adapter.send_image_file(chat_id="12345", image_path="/nonexistent/image.png")
) )
assert not result.success assert not result.success
@ -119,7 +124,7 @@ class TestTelegramSendImageFile:
def test_returns_error_when_not_connected(self, adapter): def test_returns_error_when_not_connected(self, adapter):
"""send_image_file should return error when bot is None.""" """send_image_file should return error when bot is None."""
adapter._bot = None adapter._bot = None
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="12345", image_path="/tmp/img.png") adapter.send_image_file(chat_id="12345", image_path="/tmp/img.png")
) )
assert not result.success assert not result.success
@ -135,7 +140,7 @@ class TestTelegramSendImageFile:
adapter._bot.send_photo = AsyncMock(return_value=mock_msg) adapter._bot.send_photo = AsyncMock(return_value=mock_msg)
long_caption = "A" * 2000 long_caption = "A" * 2000
asyncio.get_event_loop().run_until_complete( _run(
adapter.send_image_file(chat_id="12345", image_path=str(img), caption=long_caption) adapter.send_image_file(chat_id="12345", image_path=str(img), caption=long_caption)
) )
@ -187,7 +192,7 @@ class TestDiscordSendImageFile:
mock_channel.send = AsyncMock(return_value=mock_msg) mock_channel.send = AsyncMock(return_value=mock_msg)
adapter._client.get_channel = MagicMock(return_value=mock_channel) adapter._client.get_channel = MagicMock(return_value=mock_channel)
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="67890", image_path=str(img)) adapter.send_image_file(chat_id="67890", image_path=str(img))
) )
assert result.success assert result.success
@ -195,7 +200,7 @@ class TestDiscordSendImageFile:
mock_channel.send.assert_awaited_once() mock_channel.send.assert_awaited_once()
def test_returns_error_when_file_missing(self, adapter): def test_returns_error_when_file_missing(self, adapter):
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="67890", image_path="/nonexistent.png") adapter.send_image_file(chat_id="67890", image_path="/nonexistent.png")
) )
assert not result.success assert not result.success
@ -203,7 +208,7 @@ class TestDiscordSendImageFile:
def test_returns_error_when_not_connected(self, adapter): def test_returns_error_when_not_connected(self, adapter):
adapter._client = None adapter._client = None
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="67890", image_path="/tmp/img.png") adapter.send_image_file(chat_id="67890", image_path="/tmp/img.png")
) )
assert not result.success assert not result.success
@ -213,7 +218,7 @@ class TestDiscordSendImageFile:
adapter._client.get_channel = MagicMock(return_value=None) adapter._client.get_channel = MagicMock(return_value=None)
adapter._client.fetch_channel = AsyncMock(return_value=None) adapter._client.fetch_channel = AsyncMock(return_value=None)
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="99999", image_path="/tmp/img.png") adapter.send_image_file(chat_id="99999", image_path="/tmp/img.png")
) )
assert not result.success assert not result.success
@ -256,7 +261,7 @@ class TestSlackSendImageFile:
mock_result = MagicMock() mock_result = MagicMock()
adapter._app.client.files_upload_v2 = AsyncMock(return_value=mock_result) adapter._app.client.files_upload_v2 = AsyncMock(return_value=mock_result)
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="C12345", image_path=str(img)) adapter.send_image_file(chat_id="C12345", image_path=str(img))
) )
assert result.success assert result.success
@ -268,7 +273,7 @@ class TestSlackSendImageFile:
assert call_kwargs["channel"] == "C12345" assert call_kwargs["channel"] == "C12345"
def test_returns_error_when_file_missing(self, adapter): def test_returns_error_when_file_missing(self, adapter):
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="C12345", image_path="/nonexistent.png") adapter.send_image_file(chat_id="C12345", image_path="/nonexistent.png")
) )
assert not result.success assert not result.success
@ -276,7 +281,7 @@ class TestSlackSendImageFile:
def test_returns_error_when_not_connected(self, adapter): def test_returns_error_when_not_connected(self, adapter):
adapter._app = None adapter._app = None
result = asyncio.get_event_loop().run_until_complete( result = _run(
adapter.send_image_file(chat_id="C12345", image_path="/tmp/img.png") adapter.send_image_file(chat_id="C12345", image_path="/tmp/img.png")
) )
assert not result.success assert not result.success

View file

@ -130,7 +130,7 @@ class TestAppMentionHandler:
patch.object(_slack_mod, "AsyncSocketModeHandler", return_value=MagicMock()), \ patch.object(_slack_mod, "AsyncSocketModeHandler", return_value=MagicMock()), \
patch.dict(os.environ, {"SLACK_APP_TOKEN": "xapp-fake"}), \ patch.dict(os.environ, {"SLACK_APP_TOKEN": "xapp-fake"}), \
patch("asyncio.create_task"): patch("asyncio.create_task"):
asyncio.get_event_loop().run_until_complete(adapter.connect()) asyncio.run(adapter.connect())
assert "message" in registered_events assert "message" in registered_events
assert "app_mention" in registered_events assert "app_mention" in registered_events