"""171-1 「손입력 · 손 입력 · 손 줄」 → 「수기 입력 · 수기 줄」 화면 글 — 소스 시험. 화면 글(따옴표 안)만 바꿈 · 저장 키(`{손: 수}` · 수량출처 「손」 · 표 `손` 깃) · 주석 · 손료는 그대로. """ import re from pathlib import Path ROOT = Path(__file__).resolve().parents[2] SPOTS = { "A00_Common/design/design_structure_ford_calc.ts": ["설계유량 없음 — 수기 입력"], "B08_Quantity/B08_Quantity_UI_Material.ts": ["2공구 엑셀 수기 입력값과 다름"], "B09_Estimation/B09_Estimation_Calc_Bill.ts": ['"수기 줄 — 연결 없음(우클릭 [연결])"'], "B09_Estimation/B09_Estimation_Calc_Bill.py": ['"수기 줄 — 연결 없음(우클릭 [연결])"'], "B09_Estimation/B09_Estimation_Sangeun.py": ['"수기 줄" if'], "B09_Estimation/B09_Estimation_UI_Tabs_Base.ts": ["견적 단가는 수기 입력"], "B09_Estimation/B09_Estimation_UI_Tabs_Total.ts": ['"수기 입력"'], "ui_template/ui_template_locale_b2.ts": [ "수량 원천: 수기 입력(직접비)", "수량 원천: 수기 입력 공종", ], } # 따옴표 안 화면 글에 남은 옛 이름(주석 · 문서 글 빼고) OLD = re.compile(r"[\"'`][^\"'`\n]*(손 ?입력|손 줄|손값)") NOTE = re.compile(r'"""[\s\S]*?"""|/\*[\s\S]*?\*/|^\s*(//|#).*$', re.M) def _text(rel: str) -> str: return (ROOT / rel).read_text(encoding="utf-8") def test_새_이름_자리(): for rel, wants in SPOTS.items(): src = _text(rel) for w in wants: assert w in src, f"{rel}: {w}" def test_화면_글에_옛_이름_없음(): for rel in SPOTS: for line in NOTE.sub("", _text(rel)).splitlines(): assert not OLD.search(line), f"{rel}: {line.strip()}" def test_저장_키는_그대로(): calc = _text("M02_MasterTemplete/M02_MasterTemplete_Labor_Calc.ts") assert 'export type QtySource = "손" | "칸" | "없음";' in calc assert "export type Qty = { 손: number } | null;" in calc assert "손?: boolean;" in _text("ui_template/sheet/ui_template_sheet_types.ts") assert "손 줄 after" in _text("B09_Estimation/B09_Estimation_Calc_Bill.ts") # 주석 그대로