openhands / .github /scripts /tests /test_markdown_sections.py
SaylorTwift's picture
SaylorTwift HF Staff
Add files using upload-large-folder tool
3201ca6 verified
Raw
History Blame Contribute Delete
3.66 kB
"""Tests for markdown_sections.py — the fence-aware heading scanner."""
import re
import sys
from pathlib import Path
# Make the sibling script importable.
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
from markdown_sections import find_headings, without_fenced_code_blocks
H3_RE = re.compile(r"(?m)^###\s+(.+?)\s*$")
def headings(body: str) -> list[str]:
return [match.group(1) for match in find_headings(body, H3_RE)]
# ---------------------------------------------------------------------------
# Offsets
# ---------------------------------------------------------------------------
def test_masking_preserves_offsets():
body = "### One\n```py\n### Two\n```\n### Three\n"
masked = without_fenced_code_blocks(body)
assert len(masked) == len(body)
assert masked.splitlines() == [
"### One",
" ",
" ",
" ",
"### Three",
]
def test_masking_preserves_crlf_offsets():
body = "### One\r\n```py\r\n### Two\r\n```\r\n### Three\r\n"
masked = without_fenced_code_blocks(body)
assert len(masked) == len(body)
assert headings(body) == ["One", "Three"]
# ---------------------------------------------------------------------------
# Unclosed fences
# ---------------------------------------------------------------------------
def test_unclosed_fence_does_not_hide_later_headings():
"""A stray marker in a pasted log must not swallow the rest of the body."""
body = """### Relevant Logs
```shell
Traceback (most recent call last):
the paste was cut off here
### Actual Behavior
It broke.
"""
assert headings(body) == ["Relevant Logs", "Actual Behavior"]
def test_unclosed_fence_leaves_text_untouched():
body = "### One\n~~~\nstill here\n"
assert without_fenced_code_blocks(body) == body
def test_second_fence_reopens_after_a_balanced_one():
body = """### One
```
### Masked
```
### Two
```
### Not masked, fence never closes
"""
assert headings(body) == ["One", "Two", "Not masked, fence never closes"]
# ---------------------------------------------------------------------------
# Fence markers
# ---------------------------------------------------------------------------
def test_tilde_fence_is_not_closed_by_backticks():
body = "### One\n~~~\n### Masked\n```\n### Also masked\n~~~\n### Two\n"
assert headings(body) == ["One", "Two"]
def test_longer_fence_is_not_closed_by_a_shorter_one():
body = "### One\n````\n### Masked\n```\n### Also masked\n````\n### Two\n"
assert headings(body) == ["One", "Two"]
def test_info_string_does_not_close_a_fence():
body = "### One\n```\n### Masked\n```py\n### Also masked\n```\n### Two\n"
assert headings(body) == ["One", "Two"]
# ---------------------------------------------------------------------------
# Indentation
# ---------------------------------------------------------------------------
def test_fence_indented_inside_a_list_item_is_masked():
"""CommonMark measures a nested fence from the list's content column."""
body = """### Steps to Reproduce
1. Quote the template:
```markdown
### Acceptance Criteria
- [ ] not a real criterion
```
### Actual Behavior
It broke.
"""
assert headings(body) == ["Steps to Reproduce", "Actual Behavior"]
def test_closing_fence_indented_past_the_limit_does_not_close():
body = """### One
```text
### Masked
```
### Also masked
```
### Two
"""
assert headings(body) == ["One", "Two"]
def test_closing_fence_may_be_indented_three_spaces():
body = "### One\n```\n### Masked\n ```\n### Two\n"
assert headings(body) == ["One", "Two"]