Files
Aislo/resources/tester/test_pum_md_locked.py
T
eomsangdon 5f4ac8d990 knowledge(품셈md): 도구가 되풀이 머리를 스스로 가림 — 판정 기준 셋 · 기계검사 예외 표시
- pdf_lines — 이어진 자리(쪽 넘김 · 「→」)의 되풀이 머리를 뺄 때 셋을 다 갖춘 줄만 뺌:
  ① 이번 항에서 이미 나온 글자에 이어 붙음 ② 목·항 머리 모양이 아님(1. · 가. · ① · [주] · <…>)
  ③ md 가 못 가진 글자 몫 안(PDF - md) — 통째로 드는 것부터 빼고 남은 몫으로 앞 토막만 더 뺌
- 기계검사 예외 — md 머리 바로 아래 <!-- 기계검사 예외: 되풀이 머리 --> 면 「예외(되풀이 머리)」 로 적고 확정 지문도 적음
- 잠금 시험은 「통과」 또는 「예외」 를 받음(tool.passed)
- 작성규칙 4-5 되풀이 머리 주석 없앰 · 표 줄 사이 주석 금지 · 6장 예외 표시 한 줄
- 불통 22건 → 0건: 18건 통과로 바뀜(판정 나빠진 파일 0 · 확정지문 다시 적음) · 남은 4건은 예외 표시
2026-09-19 12:39:29 +09:00

43 lines
1.6 KiB
Python

"""품셈 md 잠금 — 상태 `확정` 파일은 확정지문이 맞고 기계검사가 「통과」 또는 「예외」 (규칙 6장).
`확정` 뒤 파일이 바뀌면 빨강. 고치려면 상태를 `작성중` 으로 되돌리고 ①②③ 다시.
"""
import sys
from pathlib import Path
import pytest
ROOT = Path(__file__).resolve().parents[2]
sys.path.insert(0, str(ROOT / "resources/knowledge/original/_pipeline"))
import pum_md_tool as tool # noqa: E402
LOCKED = [
path
for book in tool.BOOKS.values()
for path in sorted(book["out"].rglob("*.md"))
if tool.read_head(path).get("상태") == "확정"
]
@pytest.mark.parametrize("path", LOCKED, ids=lambda p: p.name)
def test_locked_file_unchanged_and_clean(path):
head = tool.read_head(path)
assert head["확정지문"], "확정인데 지문이 없음 — check 를 돌려 적을 것"
assert tool.fingerprint(path.read_text(encoding="utf-8")) == head["확정지문"], (
"확정 뒤 파일이 바뀜 — 상태를 작성중으로 되돌리고 ①②③ 다시"
)
pytest.importorskip("pymupdf")
_, line = tool.check_file(path)
assert tool.passed(line), line # 「통과」 또는 「예외(되풀이 머리)」
def test_heads_are_well_formed():
"""모든 새 md 머리 — 칸이 다 있고 상태가 넷 중 하나."""
for book in tool.BOOKS.values():
for path in book["out"].rglob("*.md"):
head = tool.read_head(path)
assert set(tool.HEAD_KEYS) <= set(head), path
assert head["상태"] in tool.STATES, f"{path}: {head['상태']}"