test(workspace): add top-down release gates

This commit is contained in:
huanghuoguoguo
2026-07-19 08:53:39 +08:00
parent 7706634c34
commit 3359951837
26 changed files with 1351 additions and 19 deletions
+22 -1
View File
@@ -1,7 +1,8 @@
from __future__ import annotations
import asyncio
from types import SimpleNamespace
from unittest.mock import Mock
from unittest.mock import AsyncMock, Mock
import pytest
@@ -104,3 +105,23 @@ def test_box_runtime_connector_dispose_terminates_subprocess(monkeypatch: pytest
ctrl_task.cancel.assert_called_once()
assert connector._handler_task is None
assert connector._ctrl_task is None
@pytest.mark.asyncio
async def test_box_runtime_connector_heartbeat_failure_requests_reconnect(monkeypatch: pytest.MonkeyPatch):
monkeypatch.setattr('langbot.pkg.box.connector._HEARTBEAT_INTERVAL_SEC', 0)
disconnected = asyncio.Event()
callbacks = []
async def on_disconnect(connector):
callbacks.append(connector)
disconnected.set()
connector = BoxRuntimeConnector(make_app(Mock()), runtime_disconnect_callback=on_disconnect)
connector._handler = SimpleNamespace(call_action=AsyncMock(side_effect=TimeoutError('silent runtime')))
heartbeat = asyncio.create_task(connector._heartbeat_loop())
await asyncio.wait_for(disconnected.wait(), timeout=1)
await heartbeat
assert callbacks == [connector]