From a23aea6ed1d3b4c3f052aa806325f8c6ff615f53 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 8 Oct 2026 22:48:53 +0900 Subject: [PATCH] =?UTF-8?q?test(B05):=20115-5=20=EC=8B=9C=ED=97=98=20?= =?UTF-8?q?=EB=8F=84=EA=B5=AC=EA=B0=80=20TIN=20=EB=9D=BC=EC=9D=B4=EB=B8=8C?= =?UTF-8?q?=EB=9F=AC=EB=A6=AC(=EB=A7=A8=20=EC=9D=B4=EB=A6=84=20=EB=91=98)?= =?UTF-8?q?=EB=A5=BC=20config/node=5Fmodules=20=EC=97=90=EC=84=9C=20?= =?UTF-8?q?=ED=92=82=20=C2=B7=20=EB=93=B1=EB=A1=9D=EB=B6=80=20=EB=8B=A8?= =?UTF-8?q?=EC=96=B8=EC=9D=84=20=EC=A0=9C=EC=95=88=20=E2=91=A1=20=EB=93=B1?= =?UTF-8?q?=EB=A1=9D=20=EB=92=A4=EB=A1=9C(115-6)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - helper_115_5: delaunator · @kninnug/constrainautor 를 helper_115_6 과 같은 규칙으로 해석 - test_115_5 등록부: 등록 목록에 proposal2 · 제안 ② 고르면 제안 ② 로 그림 Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01EYJJRCfHfdCGNhmXTjQKV7 --- resources/tester/helper_115_5_corridor_improve.cjs | 11 +++++++++++ resources/tester/test_115_5_corridor_improve.py | 6 ++++-- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/resources/tester/helper_115_5_corridor_improve.cjs b/resources/tester/helper_115_5_corridor_improve.cjs index 7e0fa52de..4905f312f 100644 --- a/resources/tester/helper_115_5_corridor_improve.cjs +++ b/resources/tester/helper_115_5_corridor_improve.cjs @@ -9,6 +9,16 @@ const path = require("path"); const ROOT = path.join(__dirname, "..", ".."); const ts = require(path.join(ROOT, "config", "node_modules", "typescript")); const THREE = require(path.join(ROOT, "config", "node_modules", "three")); +const NM = path.join(ROOT, "config", "node_modules"); +// 맨 이름 라이브러리(제안 ② TIN · 등록부가 끌어옴) — config/node_modules 에서 푼다(helper_115_6 과 같은 규칙). +const LIBS = { + // delaunator 는 ESM 전용 — Node 22 require(esm) 가 내주는 이름공간(default 포함). + delaunator: require(path.join(NM, "delaunator", "index.js")), + "@kninnug/constrainautor": { + __esModule: true, + default: require(path.join(NM, "@kninnug", "constrainautor", "lib", "Constrainautor.cjs")), + }, +}; const cache = new Map(); function loadTs(file) { @@ -21,6 +31,7 @@ function loadTs(file) { cache.set(full, box.exports); const localRequire = (request) => { if (request === "three") return THREE; + if (LIBS[request]) return LIBS[request]; // 화면 모듈(@ui · @config)은 코리도 계산이 부르지 않는다 — 빈 껍데기로 넘긴다. if (request.startsWith("@ui/") || request.startsWith("@config/")) { return new Proxy({}, { get: () => () => undefined }); diff --git a/resources/tester/test_115_5_corridor_improve.py b/resources/tester/test_115_5_corridor_improve.py index bacae7d5d..6f7a3d810 100644 --- a/resources/tester/test_115_5_corridor_improve.py +++ b/resources/tester/test_115_5_corridor_improve.py @@ -70,12 +70,14 @@ def test_structure_top_hole_and_drape(results): def test_mode_registry_and_migration(results): r = results["modes"] assert r["slots"] == ["current:지금", "legacy-a:옛 A", "new1:새 ①", "proposal2:제안 ②"] - assert r["registered"] == ["current", "legacy-a", "new1"] # 제안 ② 는 다른 창 몫(빈자리) + assert r["registered"] == ["current", "legacy-a", "new1", "proposal2"] # 제안 ② 등록(115-6) assert r["defaultMode"] == "new1" and r["fresh"] == "new1" assert r["newHasTerrain"] is True assert r["oldDeformOff"] == "current" # 옛 「새 방식」 끔 → 지금 assert r["oldLegacyOn"] == "legacy-a" # 옛 「옛 방식 A」 켬 → 옛 A - assert r["proposal"] == "proposal2" and r["proposalDraws"] == "new1" # 미등록 → 기본으로 그림 + assert ( + r["proposal"] == "proposal2" and r["proposalDraws"] == "proposal2" + ) # 등록됨 → 제안 ② 로 그림 assert r["set"] == "new1"