fix(830-7): 일괄 시험 계산이 고르기 빈 입력 로직을 건너뜀으로 셈 — GC001199~1201 IndexError 해소
- check_master.calc_all: 고르기 목록이 빈 입력이 있는 로직(내 기계 전용 식)은 멈춤이 아닌 「건너뜀」 — 결과는 (통과 · 멈춤 · 건너뜀 키) 셋 · 계산전부 출력에 건너뜀 수와 키 - 호출 시험 둘(test_masterdata_check · test_713_4)을 셋 묶음에 맞춤 - 나머지 1,517 개 시험 계산 결과 그대로 · 정본 · 금액 안 바뀜 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
@@ -519,19 +519,24 @@ def 시험입력(row: dict) -> dict:
|
||||
return given
|
||||
|
||||
|
||||
def calc_all(files: dict[str, dict], whole: mf.Master) -> tuple[int, list[str]]:
|
||||
"""로직 전부를 시험 입력으로 돌림 — (통과 수, 멈춘 줄 목록)."""
|
||||
passed, stuck = 0, []
|
||||
def calc_all(files: dict[str, dict], whole: mf.Master) -> tuple[int, list[str], list[str]]:
|
||||
"""로직 전부를 시험 입력으로 돌림 — (통과 수, 멈춘 줄 목록, 건너뜀 키 목록).
|
||||
고르기 목록이 빈 입력이 있는 로직(GC001199~1201 = 내 기계 전용 식 · M01 정본 기계가 안 씀)은
|
||||
고를 값이 없어 건너뜀 — 멈춤으로 세지 않음."""
|
||||
passed, stuck, skipped = 0, [], []
|
||||
for data in files.values():
|
||||
if data.get("그룹") != "로직":
|
||||
continue
|
||||
for row in data.get("줄", []):
|
||||
if any(i.get("고르기") == [] for i in row.get("입력", [])):
|
||||
skipped.append(str(row["키"]))
|
||||
continue
|
||||
try:
|
||||
mf.run(whole, str(row["키"]), 시험입력(row))
|
||||
passed += 1
|
||||
except mf.FormulaError as err:
|
||||
stuck.append(f"{row['키']} {row.get('이름')} · {err}")
|
||||
return passed, stuck
|
||||
return passed, stuck, skipped
|
||||
|
||||
|
||||
def _value(text: str):
|
||||
@@ -549,8 +554,8 @@ def main(argv: list[str]) -> int:
|
||||
return 0
|
||||
if mode == "계산전부":
|
||||
files, whole = load(), master()
|
||||
passed, stuck = calc_all(files, whole)
|
||||
print(f"(계산) 통과 {passed} · 멈춤 {len(stuck)}")
|
||||
passed, stuck, skipped = calc_all(files, whole)
|
||||
print(f"(계산) 통과 {passed} · 멈춤 {len(stuck)} · 건너뜀 {len(skipped)} {skipped}")
|
||||
for line in stuck:
|
||||
print(" " + line)
|
||||
return 0
|
||||
|
||||
Reference in New Issue
Block a user