mirror of
https://github.com/eunomia-bpf/bpf-developer-tutorial.git
synced 2026-10-29 03:34:44 +08:00
52 lines
1.5 KiB
Python
52 lines
1.5 KiB
Python
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",
|
|
"src/52-fsession-latency",
|
|
"src/57-oom-watch",
|
|
}
|
|
|
|
|
|
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()
|