Keep complete-source synchronization byte exact

This commit is contained in:
LinuxDev9002
2026-07-18 20:13:43 -07:00
parent 7f7ec65363
commit b523765944
3 changed files with 55 additions and 3 deletions

View File

@@ -78,13 +78,19 @@ def render(
raise ValueError(f"missing matching generated fence and {END!r} after {source_name}")
language = LANGUAGES[source.suffix]
source_text = source.read_bytes().decode("utf-8")
source_bytes = source.read_bytes()
if not source_bytes:
raise ValueError(f"complete source cannot be empty: {source_name}")
if not source_bytes.endswith(b"\n"):
raise ValueError(
f"complete source must end with an LF byte for exact fenced inclusion: {source_name}"
)
source_text = source_bytes.decode("utf-8")
if "\r" in source_text:
raise ValueError(f"complete source must use LF line endings: {source_name}")
max_backticks = max((len(run) for run in re.findall(r"`+", source_text)), default=0)
generated_fence = "`" * max(3, max_backticks + 1)
if source_text.endswith("\n"):
source_text = source_text[:-1]
source_text = source_text[:-1]
rendered.extend(
[
lines[index],

View File

@@ -214,6 +214,50 @@ class SyncSourceBlocksTest(unittest.TestCase):
self.assertEqual(first_english, english.read_bytes())
self.assertEqual(first_chinese, chinese.read_bytes())
def test_rejects_empty_source_without_changing_either_readme(self) -> None:
source = self.root / "src/lesson/tool.c"
source.write_bytes(b"")
english = self.write_readme("src/lesson/README.md")
chinese = self.write_readme("src/lesson/README.zh.md")
before = (english.read_bytes(), chinese.read_bytes())
result = self.run_script(
"--readme", "src/lesson/README.md",
"--readme", "src/lesson/README.zh.md",
"--write",
)
self.assertEqual(1, result.returncode)
self.assertIn("complete source cannot be empty", result.stderr)
self.assertEqual(before, (english.read_bytes(), chinese.read_bytes()))
def test_rejects_source_without_final_lf(self) -> None:
source = self.root / "src/lesson/tool.c"
source.write_bytes(b"int value = 1;")
self.write_readme("src/lesson/README.md")
self.write_readme("src/lesson/README.zh.md")
result = self.run_script(
"--readme", "src/lesson/README.md",
"--readme", "src/lesson/README.zh.md",
"--write",
)
self.assertEqual(1, result.returncode)
self.assertIn("must end with an LF byte", result.stderr)
def test_preserves_multiple_trailing_lfs(self) -> None:
source = self.root / "src/lesson/tool.c"
source.write_bytes(b"int value = 1;\n\n\n")
english = self.write_readme("src/lesson/README.md")
self.write_readme("src/lesson/README.zh.md")
result = self.run_script(
"--readme", "src/lesson/README.md",
"--readme", "src/lesson/README.zh.md",
"--write",
)
self.assertEqual(0, result.returncode, result.stderr)
self.assertIn("int value = 1;\n\n\n```", english.read_text(encoding="utf-8"))
def test_requires_bilingual_pair(self) -> None:
self.write_readme("src/lesson/README.md")
result = self.run_script(