test(cli): isolate WebUI interrupt polling

This commit is contained in:
Xubin Ren
2026-08-17 20:56:10 +08:00
parent 79d51be71f
commit e84aa07bcc
2 changed files with 4 additions and 5 deletions
+2 -1
View File
@@ -443,6 +443,7 @@ def _attach_to_background_gateway(
runtime: "GatewayRuntime",
*,
poll_hook: Callable[[], None] | None = None,
sleep: Callable[[float], None] = time.sleep,
) -> None:
"""Keep a WebUI launcher attached without taking ownership of the gateway."""
_print_webui_foreground_lifecycle(attached=True)
@@ -450,7 +451,7 @@ def _attach_to_background_gateway(
while runtime.status().running:
if poll_hook is not None:
poll_hook()
time.sleep(0.5)
sleep(0.5)
except KeyboardInterrupt:
console.print("\n[yellow]WebUI launcher detached.[/yellow]")
return
+2 -4
View File
@@ -2565,7 +2565,7 @@ def test_webui_foreground_attaches_to_existing_managed_gateway(monkeypatch, tmp_
assert seen["open_kwargs"] == {"wait": False}
def test_attach_to_background_gateway_detaches_on_ctrl_c(monkeypatch, capsys) -> None:
def test_attach_to_background_gateway_detaches_on_ctrl_c(capsys) -> None:
stopped = False
class _FakeRuntime:
@@ -2580,9 +2580,7 @@ def test_attach_to_background_gateway_detaches_on_ctrl_c(monkeypatch, capsys) ->
def _interrupt(_seconds: float) -> None:
raise KeyboardInterrupt
monkeypatch.setattr("nanobot.cli.webui_support.time.sleep", _interrupt)
cli_webui_support._attach_to_background_gateway(_FakeRuntime())
cli_webui_support._attach_to_background_gateway(_FakeRuntime(), sleep=_interrupt)
assert stopped is False
output = capsys.readouterr().out