fix(phase3): Resolve remaining test failures and stabilize GUI
- Fixed ullcontext NameError in gui_2.py. - Corrected TestMMAApprovalIndicators to call real rendering methods on mock app. - Updated est_history_manager.py to provide required context_files argument to UISnapshot. - Stabilized est_z_negative_flows.py with robust polling for terminal response status and corrected field names. - Cleaned up debug logging in ag_engine.py and pp_controller.py.
This commit is contained in:
@@ -70,6 +70,7 @@ class TestHistoryManager:
|
||||
auto_add_history=True,
|
||||
disc_entries=[{"role": "user", "content": "hello"}],
|
||||
files=[{"path": "a.txt"}],
|
||||
context_files=[],
|
||||
screenshots=["screenshot.png"],
|
||||
)
|
||||
d = snap.to_dict()
|
||||
@@ -85,6 +86,7 @@ class TestHistoryManager:
|
||||
assert restored.auto_add_history == snap.auto_add_history
|
||||
assert restored.disc_entries == snap.disc_entries
|
||||
assert restored.files == snap.files
|
||||
assert restored.context_files == snap.context_files
|
||||
assert restored.screenshots == snap.screenshots
|
||||
|
||||
def test_push_clears_redo_stack(self):
|
||||
|
||||
@@ -61,6 +61,21 @@ def _make_app(**kwargs):
|
||||
mock_controller = MagicMock()
|
||||
mock_controller.engine = mock_engine
|
||||
app.controller = mock_controller
|
||||
|
||||
# Ensure real methods are called for the dashboard rendering components
|
||||
app._render_mma_dashboard = lambda: App._render_mma_dashboard(app)
|
||||
app._render_mma_focus_selector = lambda: App._render_mma_focus_selector(app)
|
||||
app._render_mma_track_summary = lambda: App._render_mma_track_summary(app)
|
||||
app._render_mma_epic_planner = lambda: App._render_mma_epic_planner(app)
|
||||
app._render_mma_conductor_setup = lambda: App._render_mma_conductor_setup(app)
|
||||
app._render_mma_track_browser = lambda: App._render_mma_track_browser(app)
|
||||
app._render_mma_global_controls = lambda: App._render_mma_global_controls(app)
|
||||
app._render_mma_usage_section = lambda: App._render_mma_usage_section(app)
|
||||
app._render_ticket_queue = lambda: App._render_ticket_queue(app)
|
||||
app._render_window_if_open = lambda name, func, condition=True: func() if condition else None
|
||||
app._render_mma_ticket_editor = lambda: App._render_mma_ticket_editor(app)
|
||||
app._render_mma_agent_streams = lambda: App._render_mma_agent_streams(app)
|
||||
|
||||
return app
|
||||
|
||||
def _make_imgui_mock():
|
||||
|
||||
@@ -25,12 +25,19 @@ def test_mock_malformed_json(live_gui) -> None:
|
||||
|
||||
try:
|
||||
# Trigger generation
|
||||
client.set_value("system_prompt_input", "Trigger malformed")
|
||||
client.set_value("ai_input", "Trigger malformed")
|
||||
client.click("btn_gen_send")
|
||||
|
||||
# Wait for response
|
||||
event = client.wait_for_event("response", timeout=15)
|
||||
assert event is not None, "Did not receive response event"
|
||||
# Wait for terminal response
|
||||
event = None
|
||||
start = time.time()
|
||||
while time.time() - start < 30:
|
||||
ev = client.wait_for_event("response", timeout=5)
|
||||
if ev and ev.get("payload", {}).get("status") != "streaming...":
|
||||
event = ev
|
||||
break
|
||||
|
||||
assert event is not None, "Did not receive terminal response event"
|
||||
assert event["payload"]["status"] == "error"
|
||||
assert "JSONDecodeError" in event["payload"]["text"] or "json" in event["payload"]["text"].lower()
|
||||
finally:
|
||||
@@ -60,12 +67,19 @@ def test_mock_error_result(live_gui) -> None:
|
||||
|
||||
try:
|
||||
# Trigger generation
|
||||
client.set_value("system_prompt_input", "Trigger error")
|
||||
client.set_value("ai_input", "Trigger error")
|
||||
client.click("btn_gen_send")
|
||||
|
||||
# Wait for response
|
||||
event = client.wait_for_event("response", timeout=15)
|
||||
assert event is not None, "Did not receive response event"
|
||||
# Wait for terminal response
|
||||
event = None
|
||||
start = time.time()
|
||||
while time.time() - start < 30:
|
||||
ev = client.wait_for_event("response", timeout=5)
|
||||
if ev and ev.get("payload", {}).get("status") != "streaming...":
|
||||
event = ev
|
||||
break
|
||||
|
||||
assert event is not None, "Did not receive terminal response event"
|
||||
assert event["payload"]["status"] == "error"
|
||||
assert "Mock simulated error" in event["payload"]["text"]
|
||||
finally:
|
||||
@@ -95,13 +109,19 @@ def test_mock_timeout(live_gui) -> None:
|
||||
|
||||
try:
|
||||
# Trigger generation
|
||||
client.set_value("system_prompt_input", "Trigger timeout")
|
||||
client.set_value("ai_input", "Trigger timeout")
|
||||
client.click("btn_gen_send")
|
||||
|
||||
# Wait for response. Note: gemini_cli_adapter has a 60s timeout,
|
||||
# but the mock might not actually hang for 60s if we adjust it or we wait for 65s here.
|
||||
event = client.wait_for_event("response", timeout=70)
|
||||
assert event is not None, "Did not receive response event"
|
||||
# Wait for terminal response
|
||||
event = None
|
||||
start = time.time()
|
||||
while time.time() - start < 80:
|
||||
ev = client.wait_for_event("response", timeout=5)
|
||||
if ev and ev.get("payload", {}).get("status") != "streaming...":
|
||||
event = ev
|
||||
break
|
||||
|
||||
assert event is not None, "Did not receive terminal response event"
|
||||
assert event["payload"]["status"] == "error"
|
||||
assert "timeout" in event["payload"]["text"].lower()
|
||||
finally:
|
||||
|
||||
Reference in New Issue
Block a user