mirror of
https://github.com/eunomia-bpf/bpf-developer-tutorial.git
synced 2026-10-29 03:34:44 +08:00
Fix bilingual tutorial indexes and internal links (#209)
* Fix bilingual tutorial index generation * Check relative Markdown links in CI * Harden documentation regression checks * Reduce link parser complexity * Run link checks for every repository change --------- Co-authored-by: LinuxDev9002 <i@littlefisher.me>
This commit is contained in:
49
scripts/test_generate_toc.py
Normal file
49
scripts/test_generate_toc.py
Normal file
@@ -0,0 +1,49 @@
|
||||
import re
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from scripts.generate_toc import generate_toc, generate_toc_cn
|
||||
|
||||
|
||||
ROOT = Path(__file__).resolve().parent.parent
|
||||
LINK_PATTERN = re.compile(r"\]\((src/.+?)/README(?:\.zh)?\.md\)")
|
||||
TRACING_LESSONS = {
|
||||
"src/30-sslsniff",
|
||||
"src/31-goroutine",
|
||||
"src/33-funclatency",
|
||||
"src/37-uprobe-rust",
|
||||
"src/39-nginx",
|
||||
"src/40-mysql",
|
||||
"src/48-energy",
|
||||
}
|
||||
|
||||
|
||||
def lesson_links(markdown: str) -> set[str]:
|
||||
return set(LINK_PATTERN.findall(markdown))
|
||||
|
||||
|
||||
def subsection(markdown: str, heading: str, next_heading: str) -> str:
|
||||
return markdown.split(f"\n\n{heading}:\n\n", 1)[1].split(
|
||||
f"\n\n{next_heading}:\n\n", 1
|
||||
)[0]
|
||||
|
||||
|
||||
class TocParityTest(unittest.TestCase):
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
cls.english = generate_toc(ROOT / "src", ROOT, ROOT)
|
||||
cls.chinese = generate_toc_cn(ROOT / "src", ROOT, ROOT)
|
||||
|
||||
def test_english_and_chinese_indexes_contain_the_same_lessons(self):
|
||||
self.assertSetEqual(lesson_links(self.english), lesson_links(self.chinese))
|
||||
|
||||
def test_chinese_tracing_subsection_contains_all_tracing_lessons(self):
|
||||
english_tracing = lesson_links(subsection(self.english, "Tracing", "Security"))
|
||||
chinese_tracing = lesson_links(subsection(self.chinese, "追踪", "安全"))
|
||||
|
||||
self.assertSetEqual(english_tracing, TRACING_LESSONS)
|
||||
self.assertSetEqual(chinese_tracing, TRACING_LESSONS)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user