diff --git a/website/builder/test_site_assets.py b/website/builder/test_site_assets.py
index 04f747ae..bfda55ab 100644
--- a/website/builder/test_site_assets.py
+++ b/website/builder/test_site_assets.py
@@ -7,9 +7,24 @@ from pathlib import Path
sys.path.insert(0, str(Path(__file__).resolve().parent))
from site_assets import heading_slug, optimize_images, referenced_paths, search_document
+from build import github_slug, hot_spans, strip_hot
class SearchIndexTests(unittest.TestCase):
+ def test_hot_heading_mark(self):
+ # 标题末尾的“不换行空格 + 🔥”不改变 GitHub 锚点;网站上换成空的 span,Docsify 的 id 也不变
+ self.assertEqual(github_slug('ThreadPoolExecutor\u00a0🔥🔥'), 'threadpoolexecutor')
+ self.assertEqual(github_slug('5. 协程\u00a0🔥'), '5-协程')
+ self.assertEqual(github_slug('ThreadPoolExecutor 🔥'), 'threadpoolexecutor-')
+ self.assertEqual(strip_hot('### 5. 协程\u00a0🔥\n正文 🔥'), '### 5. 协程\n正文 🔥')
+ site = hot_spans('* [三、检索增强生成](#三检索增强生成) 🔥🔥\n## 三、检索增强生成\u00a0🔥🔥')
+ self.assertEqual(site, '* [三、检索增强生成](#三检索增强生成) \n'
+ '## 三、检索增强生成')
+ self.assertEqual(heading_slug(site.split('\n')[1][3:], Counter()), '三、检索增强生成')
+ doc = search_document(Path('x.md'), site)
+ self.assertEqual([s['title'] for s in doc['sections']], ['x', '三、检索增强生成'])
+ self.assertEqual(doc['sections'][0]['text'], '')
+
def test_docsify_numeric_duplicate_and_chinese_punctuation(self):
counts = Counter()
self.assertEqual(heading_slug('1. 慢开始与拥塞避免', counts), '_1-慢开始与拥塞避免')