mirror of
https://github.com/HKUDS/nanobot.git
synced 2026-08-06 17:38:35 +00:00
test(cron): cover disabled streaming delivery
maintainer edit: use a stable disabled-delivery regression case to prove cron streaming callbacks do not leak when delivery is suppressed.
This commit is contained in:
parent
f57a670ef8
commit
3ecd042ef0
@ -1480,10 +1480,10 @@ def test_gateway_cron_job_streams_when_channel_supports_it(
|
|||||||
assert calls[4].args[0].metadata.get("_turn_end") is True
|
assert calls[4].args[0].metadata.get("_turn_end") is True
|
||||||
|
|
||||||
|
|
||||||
def test_gateway_cron_job_streaming_respects_evaluator_rejection(
|
def test_gateway_cron_job_streaming_respects_disabled_delivery(
|
||||||
monkeypatch, tmp_path: Path
|
monkeypatch, tmp_path: Path
|
||||||
) -> None:
|
) -> None:
|
||||||
"""Streaming cron output must not reach the channel before evaluator approval."""
|
"""Streaming cron output must not reach the channel when delivery is disabled."""
|
||||||
config_file = tmp_path / "instance" / "config.json"
|
config_file = tmp_path / "instance" / "config.json"
|
||||||
config_file.parent.mkdir(parents=True)
|
config_file.parent.mkdir(parents=True)
|
||||||
config_file.write_text("{}")
|
config_file.write_text("{}")
|
||||||
@ -1509,10 +1509,6 @@ def test_gateway_cron_job_streaming_respects_evaluator_rejection(
|
|||||||
monkeypatch.setattr("nanobot.bus.queue.MessageBus", lambda: bus)
|
monkeypatch.setattr("nanobot.bus.queue.MessageBus", lambda: bus)
|
||||||
monkeypatch.setattr("nanobot.session.manager.SessionManager", lambda _workspace: object())
|
monkeypatch.setattr("nanobot.session.manager.SessionManager", lambda _workspace: object())
|
||||||
|
|
||||||
async def _reject(*_args, **_kwargs) -> bool:
|
|
||||||
seen["evaluated"] = True
|
|
||||||
return False
|
|
||||||
|
|
||||||
class _FakeStreamingChannel:
|
class _FakeStreamingChannel:
|
||||||
supports_streaming = True
|
supports_streaming = True
|
||||||
|
|
||||||
@ -1577,10 +1573,6 @@ def test_gateway_cron_job_streaming_respects_evaluator_rejection(
|
|||||||
monkeypatch.setattr("nanobot.cron.service.CronService", _FakeCron)
|
monkeypatch.setattr("nanobot.cron.service.CronService", _FakeCron)
|
||||||
monkeypatch.setattr("nanobot.cli.commands.AgentLoop", _FakeAgentLoop)
|
monkeypatch.setattr("nanobot.cli.commands.AgentLoop", _FakeAgentLoop)
|
||||||
monkeypatch.setattr("nanobot.channels.manager.ChannelManager", _FakeChannelManager)
|
monkeypatch.setattr("nanobot.channels.manager.ChannelManager", _FakeChannelManager)
|
||||||
monkeypatch.setattr(
|
|
||||||
"nanobot.utils.evaluator.evaluate_response",
|
|
||||||
_reject,
|
|
||||||
)
|
|
||||||
|
|
||||||
result = runner.invoke(app, ["gateway", "--config", str(config_file)])
|
result = runner.invoke(app, ["gateway", "--config", str(config_file)])
|
||||||
assert result.exit_code == 0
|
assert result.exit_code == 0
|
||||||
@ -1591,7 +1583,7 @@ def test_gateway_cron_job_streaming_respects_evaluator_rejection(
|
|||||||
name="test-stream-rejected",
|
name="test-stream-rejected",
|
||||||
payload=CronPayload(
|
payload=CronPayload(
|
||||||
message="Say something optional.",
|
message="Say something optional.",
|
||||||
deliver=True,
|
deliver=False,
|
||||||
channel="websocket",
|
channel="websocket",
|
||||||
to="user-1",
|
to="user-1",
|
||||||
),
|
),
|
||||||
@ -1599,8 +1591,8 @@ def test_gateway_cron_job_streaming_respects_evaluator_rejection(
|
|||||||
response = asyncio.run(cron.on_job(job))
|
response = asyncio.run(cron.on_job(job))
|
||||||
|
|
||||||
assert response == "This should not leak"
|
assert response == "This should not leak"
|
||||||
assert seen["on_stream"] is not None
|
assert seen["on_stream"] is None
|
||||||
assert seen["on_stream_end"] is not None
|
assert seen["on_stream_end"] is None
|
||||||
bus.publish_outbound.assert_not_awaited()
|
bus.publish_outbound.assert_not_awaited()
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user