Files
isparkclaw-webui/tests/test_title_sanitization.py
Pavol Biely 96c97c5e0e fix: remove hardcoded chinese title heuristics (#887)
* fix: remove hardcoded chinese title heuristics

* fix: use english placeholder for non-latin fallback titles
2026-04-23 09:45:34 -07:00

69 lines
2.6 KiB
Python

import unittest
from pathlib import Path
from api.streaming import (
_fallback_title_from_exchange,
_first_exchange_snippets,
_sanitize_generated_title,
)
class TestGeneratedTitleSanitization(unittest.TestCase):
def test_strips_session_title_markdown_prefix(self):
self.assertEqual(
_sanitize_generated_title("**Session Title:** Clarifying Topic for Discussion"),
"Clarifying Topic for Discussion",
)
def test_strips_plain_title_prefix(self):
self.assertEqual(
_sanitize_generated_title("Title: Clarifying Topic for Discussion"),
"Clarifying Topic for Discussion",
)
def test_strips_wrapping_markdown_emphasis(self):
self.assertEqual(
_sanitize_generated_title("**Clarifying Topic for Discussion**"),
"Clarifying Topic for Discussion",
)
def test_first_exchange_skips_empty_assistant_tool_call_placeholder(self):
messages = [
{"role": "user", "content": "What time is it in San Francisco?"},
{"role": "assistant", "content": "", "tool_calls": [{"id": "call_1"}]},
{"role": "tool", "content": "tool output", "tool_call_id": "call_1"},
{"role": "assistant", "content": "It is 6:16 PM in San Francisco."},
]
self.assertEqual(
_first_exchange_snippets(messages),
("What time is it in San Francisco?", "It is 6:16 PM in San Francisco."),
)
def test_fallback_title_uses_english_discussion_suffix(self):
self.assertEqual(
_fallback_title_from_exchange('Please review "random cancel"', ""),
"random cancel discussion",
)
def test_fallback_title_summary_label_is_english(self):
self.assertEqual(
_fallback_title_from_exchange("Generate a short title summary test", ""),
"Session title auto-summary test",
)
def test_fallback_title_non_latin_input_uses_english_placeholder(self):
self.assertEqual(
_fallback_title_from_exchange("讨论一下这个问题", ""),
"Conversation topic",
)
def test_fallback_title_non_latin_quoted_topic_uses_english_placeholder(self):
self.assertEqual(
_fallback_title_from_exchange('Please review "讨论主题"', ""),
"Conversation topic",
)
def test_title_generation_source_has_no_cjk_literals(self):
src = Path("api/streaming.py").read_text(encoding="utf-8")
self.assertNotRegex(src, r"[\u4e00-\u9fff]", "title generation code should stay English-only")