fix(feishu): keep fenced markdown tables out of card tables

This commit is contained in:
santhreal
2026-07-23 14:02:33 +08:00
committed by chengyongru
parent 9cf2fb19c2
commit 8195181783
2 changed files with 36 additions and 5 deletions
@@ -1,7 +1,6 @@
# Check optional Feishu dependencies before running tests
try:
from nanobot.channels import feishu
FEISHU_AVAILABLE = getattr(feishu, "FEISHU_AVAILABLE", False)
from nanobot.channels.feishu.runtime import FEISHU_AVAILABLE
except ImportError:
FEISHU_AVAILABLE = False
@@ -66,3 +65,23 @@ def test_split_headings_keeps_markdown_body_and_code_blocks_intact() -> None:
assert elements[1]["tag"] == "markdown"
assert "Body with **bold** text." in elements[1]["content"]
assert "```python\nprint('hi')\n```" in elements[1]["content"]
def test_build_card_elements_keeps_fenced_markdown_tables_intact() -> None:
channel = FeishuChannel.__new__(FeishuChannel)
text = "Before\n\n```\n| a | b |\n| - | - |\n| 1 | 2 |\n```\n\nAfter"
elements = channel._build_card_elements(text)
assert all(el.get("tag") != "table" for el in elements)
joined = "\n".join(el["content"] for el in elements if el.get("tag") == "markdown")
assert "```\n| a | b |\n| - | - |\n| 1 | 2 |\n```" in joined
def test_build_card_elements_still_parses_unfenced_markdown_tables() -> None:
channel = FeishuChannel.__new__(FeishuChannel)
text = "Before\n\n| a | b |\n| - | - |\n| 1 | 2 |\n\nAfter"
elements = channel._build_card_elements(text)
assert any(el.get("tag") == "table" for el in elements)