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", runtime: "GatewayRuntime",
*, *,
poll_hook: Callable[[], None] | None = None, poll_hook: Callable[[], None] | None = None,
sleep: Callable[[float], None] = time.sleep,
) -> None: ) -> None:
"""Keep a WebUI launcher attached without taking ownership of the gateway.""" """Keep a WebUI launcher attached without taking ownership of the gateway."""
_print_webui_foreground_lifecycle(attached=True) _print_webui_foreground_lifecycle(attached=True)
@@ -450,7 +451,7 @@ def _attach_to_background_gateway(
while runtime.status().running: while runtime.status().running:
if poll_hook is not None: if poll_hook is not None:
poll_hook() poll_hook()
time.sleep(0.5) sleep(0.5)
except KeyboardInterrupt: except KeyboardInterrupt:
console.print("\n[yellow]WebUI launcher detached.[/yellow]") console.print("\n[yellow]WebUI launcher detached.[/yellow]")
return 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} 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 stopped = False
class _FakeRuntime: class _FakeRuntime:
@@ -2580,9 +2580,7 @@ def test_attach_to_background_gateway_detaches_on_ctrl_c(monkeypatch, capsys) ->
def _interrupt(_seconds: float) -> None: def _interrupt(_seconds: float) -> None:
raise KeyboardInterrupt raise KeyboardInterrupt
monkeypatch.setattr("nanobot.cli.webui_support.time.sleep", _interrupt) cli_webui_support._attach_to_background_gateway(_FakeRuntime(), sleep=_interrupt)
cli_webui_support._attach_to_background_gateway(_FakeRuntime())
assert stopped is False assert stopped is False
output = capsys.readouterr().out output = capsys.readouterr().out