chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,72 @@
|
||||
"""Unit tests for the shared markdown heading renderer."""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import pytest
|
||||
|
||||
from lightrag.parser._markdown import (
|
||||
render_heading_line,
|
||||
strip_heading_markdown_prefix,
|
||||
)
|
||||
|
||||
|
||||
@pytest.mark.offline
|
||||
@pytest.mark.parametrize(
|
||||
("level", "text", "expected"),
|
||||
[
|
||||
(1, "Intro", "# Intro"),
|
||||
(2, "Sub", "## Sub"),
|
||||
(6, "Deep", "###### Deep"),
|
||||
# level >= 7 is clamped to six "#".
|
||||
(7, "Deeper", "###### Deeper"),
|
||||
(99, "Deepest", "###### Deepest"),
|
||||
# level < 1 falls back to a single "#".
|
||||
(0, "Zero", "# Zero"),
|
||||
(-3, "Neg", "# Neg"),
|
||||
],
|
||||
)
|
||||
def test_render_heading_line_prefix_and_cap(level, text, expected) -> None:
|
||||
assert render_heading_line(level, text) == expected
|
||||
|
||||
|
||||
@pytest.mark.offline
|
||||
@pytest.mark.parametrize(
|
||||
"already",
|
||||
["# Foo", "## Bar", "###### Six"],
|
||||
)
|
||||
def test_render_heading_line_keeps_existing_markdown(already) -> None:
|
||||
# Already a markdown heading (1-6 "#" + space) → returned unchanged,
|
||||
# regardless of the requested level (no double-prefixing).
|
||||
assert render_heading_line(3, already) == already
|
||||
|
||||
|
||||
@pytest.mark.offline
|
||||
@pytest.mark.parametrize(
|
||||
("text", "expected"),
|
||||
[
|
||||
# 7 "#" is NOT a valid markdown heading → still gets prefixed.
|
||||
("####### Seven", "# ####### Seven"),
|
||||
# "#" with no following space → not a heading marker → prefixed.
|
||||
("#NoSpace", "# #NoSpace"),
|
||||
],
|
||||
)
|
||||
def test_render_heading_line_non_heading_hash_is_prefixed(text, expected) -> None:
|
||||
assert render_heading_line(1, text) == expected
|
||||
|
||||
|
||||
@pytest.mark.offline
|
||||
@pytest.mark.parametrize(
|
||||
("text", "expected"),
|
||||
[
|
||||
("# Foo", "Foo"),
|
||||
("## Bar", "Bar"),
|
||||
("###### Six", "Six"),
|
||||
# The whole "#" run plus all following spaces are stripped — no
|
||||
# leading space leaks into the cleaned metadata.
|
||||
("# Extra space", "Extra space"),
|
||||
("#NoSpace", "#NoSpace"),
|
||||
("####### Seven", "####### Seven"),
|
||||
],
|
||||
)
|
||||
def test_strip_heading_markdown_prefix(text, expected) -> None:
|
||||
assert strip_heading_markdown_prefix(text) == expected
|
||||
Reference in New Issue
Block a user