diff --git a/docs/manualtools.py b/docs/manualtools.py index 463932d..58bda76 100644 --- a/docs/manualtools.py +++ b/docs/manualtools.py @@ -29,7 +29,7 @@ def parse(path: Path) -> tuple[dict, str]: if end == -1: return {}, text.rstrip() fm = yaml.safe_load(text[4:end]) or {} - return fm, text[end + 5 :].lstrip('\n').rstrip() + return fm, text[end + 5 :].removeprefix("\n").rstrip() def serialize(fm: dict, body: str) -> str: diff --git a/docs/verify-manual.py b/docs/verify-manual.py index 23f04c7..ea44cdf 100644 --- a/docs/verify-manual.py +++ b/docs/verify-manual.py @@ -72,6 +72,18 @@ def test_walk_nests_directory_after_its_index(): assert got == expected, f"wrong nesting: {got}" +def test_parse_roundtrip_body_with_leading_blank_line(): + fm = {"title": "Test"} + body = "\nContent starts after blank line." + text = mt.serialize(fm, body) + with tempfile.TemporaryDirectory() as d: + p = Path(d) / "t.md" + p.write_text(text) + got_fm, got_body = mt.parse(p) + assert got_fm == fm, f"frontmatter mismatch: {got_fm!r}" + assert got_body == body, f"body mismatch: expected {body!r}, got {got_body!r}" + + TESTS = [v for k, v in sorted(globals().items()) if k.startswith("test_")]