fix: fix voice interupt

This commit is contained in:
0Xiao0
2026-06-12 11:17:12 +08:00
parent 78b9138c17
commit 820dc44053
8 changed files with 537 additions and 48 deletions

View File

@ -14,6 +14,7 @@ if __name__ == "__main__":
try:
from custom.beaver_terminal_client import (
BeaverTerminalClient,
BeaverTerminalConnectionClosed,
BeaverTerminalError,
MessageIdGenerator,
build_connect_frame,
@ -22,6 +23,7 @@ try:
except ModuleNotFoundError:
from beaver_terminal_client import (
BeaverTerminalClient,
BeaverTerminalConnectionClosed,
BeaverTerminalError,
MessageIdGenerator,
build_connect_frame,
@ -244,6 +246,36 @@ async def test_client_raises_on_error_frames(unused_tcp_port: int) -> None:
await runner.cleanup()
async def test_client_cleans_up_owned_session_when_connect_fails(
unused_tcp_port: int,
) -> None:
async def websocket_handler(request: web.Request) -> web.Response:
return web.Response(status=200, text="not a websocket")
app = web.Application()
app.router.add_get("/api/channels/terminal-dev/ws", websocket_handler)
runner = web.AppRunner(app)
await runner.setup()
site = web.TCPSite(runner, "127.0.0.1", unused_tcp_port)
await site.start()
client = BeaverTerminalClient(
url=f"http://127.0.0.1:{unused_tcp_port}/api/channels/terminal-dev/ws",
peer_id="device-001",
device_name="desk-terminal",
message_ids=MessageIdGenerator(peer_id="device-001"),
)
try:
with pytest.raises(BeaverTerminalConnectionClosed, match="failed to connect"):
await client.connect()
assert client._http_session is None
assert client._ws is None
finally:
await client.close()
await runner.cleanup()
async def test_client_treats_assistant_finish_reason_error_as_failed_turn(
unused_tcp_port: int,
) -> None: