From 5dd3d57f8625158fdca2cee6cb2aab194a3a7a18 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 26 Aug 2026 04:21:17 +0000 Subject: [PATCH] test: harden reconcile warning alarm coverage and daemon wiring assertion Co-authored-by: genichin <4282227+genichin@users.noreply.github.com> --- .../test_reconcile_warning_blocking.py | 7 ++--- tests/runtime/test_daemon_resolve_symbol.py | 29 +++++++++++++++++-- 2 files changed, 30 insertions(+), 6 deletions(-) diff --git a/tests/application/test_reconcile_warning_blocking.py b/tests/application/test_reconcile_warning_blocking.py index f57f0e6..baf1af3 100644 --- a/tests/application/test_reconcile_warning_blocking.py +++ b/tests/application/test_reconcile_warning_blocking.py @@ -3,6 +3,8 @@ from __future__ import annotations import logging +import pytest + from trex_core.application.broker_port import BalanceItem from trex_core.application.intents import BuyIntent, IntentService, SellIntent from trex_core.application.messaging import RpcRequest @@ -488,11 +490,8 @@ def test_reconcile_warned_alarm_finalize_failure_and_publish_failure_are_isolate warn_store=warn_store, alarm_emitter=alarms, ) - try: + with pytest.raises(RuntimeError, match="finalize failed"): failing_finalize.submit_buy(BuyIntent(intent_id="b-finalize-fail", slot_id=slot.slot_id)) - assert False, "expected finalize failure" - except RuntimeError: - pass assert alarms.calls == [] soft_fail_alarm = RecordingAlarmEmitter(return_value=False) diff --git a/tests/runtime/test_daemon_resolve_symbol.py b/tests/runtime/test_daemon_resolve_symbol.py index 8500150..140d417 100644 --- a/tests/runtime/test_daemon_resolve_symbol.py +++ b/tests/runtime/test_daemon_resolve_symbol.py @@ -7,6 +7,7 @@ daemon wiring was never run until the REL-004 live smoke timed out every buy. """ from __future__ import annotations +import ast from pathlib import Path from trex_core.application.portfolio import PortfolioItem, SnapshotStore @@ -46,5 +47,29 @@ def test_daemon_wires_shared_alarm_emitter_into_intent_service(): / "runtime" / "daemon.py" ).read_text(encoding="utf-8") - assert "self.intent_service = IntentService(" in src - assert "alarm_emitter=self.alarm_emitter" in src + tree = ast.parse(src) + found = False + for node in ast.walk(tree): + if not isinstance(node, ast.Assign): + continue + if not any(isinstance(t, ast.Attribute) and t.attr == "intent_service" for t in node.targets): + continue + call = node.value + if not ( + isinstance(call, ast.Call) + and isinstance(call.func, ast.Name) + and call.func.id == "IntentService" + ): + continue + for kw in call.keywords: + if kw.arg != "alarm_emitter": + continue + if ( + isinstance(kw.value, ast.Attribute) + and kw.value.attr == "alarm_emitter" + and isinstance(kw.value.value, ast.Name) + and kw.value.value.id == "self" + ): + found = True + break + assert found, "Daemon must pass self.alarm_emitter into IntentService(alarm_emitter=...)"