Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ dependencies = [
"watchdog>=6.0.0",
"websocket-client==1.5.1",
"websockets>=13.0",
"wecom-notifier>=0.3.1",
"wecom-notifier>=0.3.2",
"youtube-transcript-api>=1.2.3",
"yt-dlp[default]>=2025.12.8",
"zlx-ops-sdk>=0.1,<0.2",
Expand Down
33 changes: 33 additions & 0 deletions tests/unit/test_wecom_notifier_chunking.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
"""Offline regression for wecom-notifier markdown_v2 chunk budget.

Locks the 0.3.2 fix for zlxlabs/wecom-notifier#2: after short lines, a
~4.5KB single line must still yield chunks within the WeCom markdown_v2
UTF-8 byte budget (page markers included).
"""

from wecom_notifier import MessageSegmenter

# Upstream closeout (wecom-notifier#2): final markdown_v2 budget includes
# page indicator, fences, and moderation expansion.
WECOM_MARKDOWN_V2_BUDGET_BYTES = 3800


def test_markdown_v2_chunks_stay_within_wecom_budget():
short_lines = "short line\n" * 500
oversized_line = "X" * 4500
content = short_lines + oversized_line + "\ntail line\n" * 50
assert len(content.encode("utf-8")) >= 10_000
assert "\n" not in oversized_line
assert len(oversized_line.encode("utf-8")) >= 4500

segments = MessageSegmenter().segment(content, "markdown_v2")

assert segments
oversize = [
(index, len(segment.content.encode("utf-8")))
for index, segment in enumerate(segments)
if len(segment.content.encode("utf-8")) > WECOM_MARKDOWN_V2_BUDGET_BYTES
]
assert oversize == [], (
f"chunks exceeded markdown_v2 budget {WECOM_MARKDOWN_V2_BUDGET_BYTES}: {oversize}"
)
8 changes: 4 additions & 4 deletions uv.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading