mirror of
https://github.com/rennf93/roboco.git
synced 2026-08-03 07:23:24 +02:00
57 lines
1.8 KiB
Python
57 lines
1.8 KiB
Python
"""Guard the hard-wrap reflow gate: wiring into `make quality` + the check exit code.
|
|||
|
|
|
||
|
|
Nothing previously pinned that `make quality` actually runs
|
||
|
|
`scripts/reflow_md.py --check` — a `Makefile` edit could silently drop the
|
||
|
|
line and no test would notice the regression. These tests pin the wiring and
|
||
|
|
the script's own pass/fail exit codes behind the I/O shell.
|
||
|
|
"""
|
||
|
|
|
||
|
|
from __future__ import annotations
|
||
|
|
|
||
|
|
import subprocess
|
||
|
|
import sys
|
||
|
|
from pathlib import Path
|
||
|
|
|
||
|
|
ROOT = Path(__file__).parents[3]
|
||
|
|
SCRIPT = ROOT / "scripts" / "reflow_md.py"
|
||
|
|
MAKEFILE = ROOT / "Makefile"
|
||
|
|
|
||
|
|
|
||
|
|
def test_quality_target_wires_in_reflow_check() -> None:
|
||
|
|
text = MAKEFILE.read_text()
|
||
|
|
quality_block = text.split("\n.PHONY: quality\n", 1)[1].split("\n.PHONY: ", 1)[0]
|
||
|
|
assert "scripts/reflow_md.py --check" in quality_block, (
|
||
|
|
"make quality must run scripts/reflow_md.py --check "
|
||
|
|
"(the hard-wrap reflow gate) — wiring was removed"
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
def test_check_passes_on_repo_as_committed() -> None:
|
||
|
|
result = subprocess.run(
|
||
|
|
[sys.executable, str(SCRIPT), "--check"],
|
||
|
|
cwd=ROOT,
|
||
|
|
capture_output=True,
|
||
|
|
text=True,
|
||
|
|
check=False,
|
||
|
|
)
|
||
|
|
assert result.returncode == 0, result.stdout + result.stderr
|
||
|
|
assert "OK: no hard-wrapped markdown prose in scope." in result.stdout
|
||
|
|
|
||
|
|
|
||
|
|
def test_check_fails_on_a_hard_wrapped_file(tmp_path: Path) -> None:
|
||
|
|
wrapped = tmp_path / "sample.md"
|
||
|
|
wrapped.write_text(
|
||
|
|
"This is a paragraph that has been\n"
|
||
|
|
"hard-wrapped mid-sentence across two\n"
|
||
|
|
"separate lines for no good reason.\n"
|
||
|
|
)
|
||
|
|
result = subprocess.run(
|
||
|
|
[sys.executable, str(SCRIPT), "--check"],
|
||
|
|
cwd=tmp_path,
|
||
|
|
capture_output=True,
|
||
|
|
text=True,
|
||
|
|
check=False,
|
||
|
|
)
|
||
|
|
assert result.returncode == 1
|
||
|
|
assert "hard-wrapped prose" in result.stdout
|