From 99a47bec03f86e6a3eb2bd133a28dc66841fb3c2 Mon Sep 17 00:00:00 2001 From: umsangdon Date: Thu, 1 Oct 2026 23:25:20 +0900 Subject: [PATCH] =?UTF-8?q?feat(M01):=20=EB=A7=88=EC=8A=A4=ED=84=B0=20?= =?UTF-8?q?=EC=82=AC=EB=B3=B8=20=ED=8F=B4=EB=8D=94=20=EA=B8=B8=20=E2=80=94?= =?UTF-8?q?=20AISLO=5FMASTER=5FDIR=20=EA=B0=80=20=EC=9E=88=EC=9C=BC?= =?UTF-8?q?=EB=A9=B4=20=EA=B7=B8=20=ED=8F=B4=EB=8D=94=20=C2=B7=20=EC=97=86?= =?UTF-8?q?=EC=9C=BC=EB=A9=B4=20=EC=A0=95=EB=B3=B8(=ED=9D=90=EB=A6=84?= =?UTF-8?q?=EB=8F=84=20=EC=A0=81=EC=9A=A9=20=EC=A0=95=ED=95=A8=2013=20?= =?UTF-8?q?=C2=B7=20PLAN=2036-4)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01KmELpdXFDRZHhfbGuRhSmL --- M01_MasterData/M01_MasterData_Store.py | 3 +- .../tester/test_m01_logic_flow_folder.py | 38 +++++++++++++++++++ 2 files changed, 40 insertions(+), 1 deletion(-) create mode 100644 resources/tester/test_m01_logic_flow_folder.py diff --git a/M01_MasterData/M01_MasterData_Store.py b/M01_MasterData/M01_MasterData_Store.py index 165086730..8f7b2d789 100644 --- a/M01_MasterData/M01_MasterData_Store.py +++ b/M01_MasterData/M01_MasterData_Store.py @@ -28,7 +28,8 @@ import master_text as mtx # noqa: E402 from M01_MasterData import M01_MasterData_Store_Cache as cache # noqa: E402 from M01_MasterData.M01_MasterData_Store_Shape import dump, keep_shape # noqa: E402 -FOLDER: Path = cm.MASTER # 시험은 사본 폴더로 바꿈 +_COPY = os.environ.get("AISLO_MASTER_DIR") # 화면 저장 시험 사본 폴더(정함 13) · 없으면 정본 +FOLDER: Path = Path(_COPY).resolve() if _COPY else cm.MASTER # 시험은 사본 폴더로 바꿈 DRAFT = "_초안.json" # 저장 안 한 새 로직을 얹는 메모리 자리 — 파일로 쓰지 않음 _CHAPTER = re.compile(r"_(\d\d)장_(.+)\.json$") # 「_03장_토공사.json」 # ponytail: 저장은 한 번에 하나(프로세스 안 잠금) · 서버를 여럿 띄우면 파일 잠금으로 diff --git a/resources/tester/test_m01_logic_flow_folder.py b/resources/tester/test_m01_logic_flow_folder.py new file mode 100644 index 000000000..bd624e2c1 --- /dev/null +++ b/resources/tester/test_m01_logic_flow_folder.py @@ -0,0 +1,38 @@ +"""흐름도 적용(PLAN 36-4 · 정함 13) — 마스터 사본 폴더 길 시험. + +· 환경 변수 AISLO_MASTER_DIR 가 있으면 M01 저장소 마스터 폴더 = 그 폴더 · 없으면 정본 +""" + +from __future__ import annotations + +import os +import subprocess +import sys +from pathlib import Path + +ROOT = Path(__file__).resolve().parents[2] +PROBE = "from M01_MasterData import M01_MasterData_Store as s; print(s.FOLDER)" + + +def _folder(env_dir: str | None) -> Path: + env = {k: v for k, v in os.environ.items() if k != "AISLO_MASTER_DIR"} + if env_dir: + env["AISLO_MASTER_DIR"] = env_dir + got = subprocess.run( + [sys.executable, "-c", PROBE], + cwd=ROOT, + env=env, + capture_output=True, + text=True, + timeout=120, + ) + assert got.returncode == 0, got.stderr + return Path(got.stdout.strip().splitlines()[-1]) + + +def test_사본_폴더_변수가_있으면_그_폴더(tmp_path: Path) -> None: + assert _folder(str(tmp_path)) == tmp_path.resolve() + + +def test_변수가_없으면_정본() -> None: + assert _folder(None) == (ROOT / "resources" / "master_data").resolve()