test(markdown): add live_gui smoke test for markdown table + bullet rendering
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
import time
|
||||
import pytest
|
||||
import sys
|
||||
import os
|
||||
from unittest.mock import patch
|
||||
|
||||
sys.path.insert(0, os.path.abspath(os.path.join(os.path.dirname(__file__), "..")))
|
||||
|
||||
from src.api_hook_client import ApiHookClient
|
||||
from src.markdown_helper import MarkdownRenderer
|
||||
|
||||
def _mock_imgui_for_table(mock_imgui):
|
||||
mock_imgui.TableFlags_ = type("T", (), {"borders": 1, "row_bg": 2, "resizable": 4})()
|
||||
mock_imgui.begin_table.return_value = True
|
||||
mock_imgui.table_next_column = lambda: None
|
||||
mock_imgui.table_next_row = lambda: None
|
||||
mock_imgui.table_headers_row = lambda: None
|
||||
mock_imgui.text = lambda *a, **k: None
|
||||
mock_imgui.text_wrapped = lambda *a, **k: None
|
||||
mock_imgui.end_table = lambda: None
|
||||
mock_imgui.same_line = lambda: None
|
||||
mock_imgui.spacing = lambda: None
|
||||
mock_imgui.indent = lambda *a: None
|
||||
mock_imgui.unindent = lambda *a: None
|
||||
|
||||
def test_markdown_session_injection_does_not_crash(live_gui) -> None:
|
||||
client = ApiHookClient()
|
||||
assert client.wait_for_server(timeout=10)
|
||||
table_md = "| col1 | col2 |\n| --- | --- |\n| a | b |"
|
||||
bullet_md = "- item1\n- item2\n- item3"
|
||||
session_entries = [
|
||||
{"role": "user", "content": table_md},
|
||||
{"role": "user", "content": bullet_md}
|
||||
]
|
||||
result = client.post_session(session_entries)
|
||||
assert result is not None
|
||||
time.sleep(0.5)
|
||||
status = client.get_status()
|
||||
assert status and "status" in status
|
||||
retrieved = client.get_session()
|
||||
assert retrieved is not None
|
||||
entries = retrieved.get("session", {}).get("entries", [])
|
||||
assert len(entries) >= 2
|
||||
|
||||
def test_markdown_renderer_runs_on_demand(live_gui) -> None:
|
||||
client = ApiHookClient()
|
||||
assert client.wait_for_server(timeout=10)
|
||||
md_text = (
|
||||
"| col1 | col2 |\n| --- | --- |\n| x | y |\n\n"
|
||||
"- alpha\n- beta\n- gamma"
|
||||
)
|
||||
with patch("src.markdown_helper.imgui_md") as mock_md, \
|
||||
patch("src.markdown_helper.imgui") as mock_imgui, \
|
||||
patch("src.markdown_table.imgui") as mock_table_imgui:
|
||||
_mock_imgui_for_table(mock_table_imgui)
|
||||
try:
|
||||
MarkdownRenderer().render(md_text, context_id="live_md_test")
|
||||
except Exception as e:
|
||||
pytest.fail(f"MarkdownRenderer.render raised: {e}")
|
||||
status = client.get_status()
|
||||
assert status and "status" in status
|
||||
diag = client.get_gui_diagnostics()
|
||||
assert isinstance(diag, dict)
|
||||
assert "fps" in diag
|
||||
Reference in New Issue
Block a user