fix: 清除硬编码API Key与机器特定路径,改用环境变量+混合式路径解析
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
# ============================================================================
|
||||
# _paths.py — test-data 回归脚本统一路径解析(混合式)
|
||||
#
|
||||
# 优先级: 环境变量 → %USERPROFILE%\Desktop\2026技术大赛\ 兜底推导
|
||||
# 缺失时在使用方通过 require() 得到清晰的设置指引。
|
||||
# 环境变量说明见项目根 .env.example。
|
||||
# ============================================================================
|
||||
import os
|
||||
import sys
|
||||
from pathlib import Path
|
||||
|
||||
V3_ROOT = Path(__file__).resolve().parent.parent
|
||||
_DESKTOP = Path(os.environ.get("USERPROFILE", "")) / "Desktop"
|
||||
_CONTEST_ROOT = _DESKTOP / "2026技术大赛"
|
||||
|
||||
|
||||
def _resolve(env_name: str, fallback: Path) -> Path:
|
||||
if env_name in os.environ:
|
||||
return Path(os.environ[env_name])
|
||||
return fallback
|
||||
|
||||
|
||||
def require(path, label: str, env_name: str) -> Path:
|
||||
"""存在性检查,失败时给出环境变量设置指引。"""
|
||||
p = Path(path)
|
||||
if not p.exists():
|
||||
sys.exit(
|
||||
f"[错误] {label} 目录不存在: {p}\n"
|
||||
f"请设置环境变量 {env_name} 指向实际目录"
|
||||
f"(例: setx {env_name} \"D:\\...\"),或参见 .env.example"
|
||||
)
|
||||
return p
|
||||
|
||||
|
||||
# 基准程序集(cobol-test-programs)— 本机当前布局中不存在,需 COBOL_BENCH_ROOT
|
||||
BENCH_ROOT = _resolve("COBOL_BENCH_ROOT", _CONTEST_ROOT / "cobol-test-programs")
|
||||
COPYBOOKS_BENCH = BENCH_ROOT / "common" / "copybooks"
|
||||
|
||||
# TNA 电信测试系统 — 当前布局位于大赛目录下
|
||||
TNA_ROOT = _resolve("COBOL_TNA_ROOT", _CONTEST_ROOT / "cobol-tna-system")
|
||||
COPYBOOKS_TNA = TNA_ROOT / "cpy"
|
||||
|
||||
# jcl-cobol-git(HINA 分类验证用旧仓库)
|
||||
COBOL_GIT_ROOT = _resolve("COBOL_GIT_ROOT", _CONTEST_ROOT / "jcl-cobol-git")
|
||||
|
||||
# 散置样本源码
|
||||
SAMPLE_SRC_DIR = _resolve("SAMPLE_SRC_DIR", _CONTEST_ROOT)
|
||||
@@ -5,7 +5,7 @@ P=0;F=0;BUGS=[]
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1,BUGS.append(m))
|
||||
def sec(n): print(f"\n--- {n} ---")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
from hina.pipeline.pipeline import classify_program
|
||||
from hina.classifier import detect_keyword
|
||||
|
||||
@@ -5,7 +5,7 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n{'='*60}\n{n}\n{'='*60}")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common", "copybooks")
|
||||
COBC = "cobc"
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n--- {n} ---")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common", "copybooks")
|
||||
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
"""S18: ALL benchmark programs — full E2E: parse → generate → flatfile → compile → run → verify
|
||||
|
||||
Run: cd D:/cobol-java/cobol-java-v3 && python test-data/s18_all_benchmark_e2e.py
|
||||
Run: cd <project-root> && python test-data/s18_all_benchmark_e2e.py
|
||||
"""
|
||||
import sys, os, subprocess, re, json
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
@@ -8,7 +8,7 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n{'='*60}\n{n}\n{'='*60}")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common", "copybooks")
|
||||
COBC = "cobc"
|
||||
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
import sys, os, re, time
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common", "copybooks")
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
from cobol_testgen.read import preprocess, resolve_copybooks
|
||||
|
||||
@@ -17,7 +17,7 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n{'='*60}\n{n}\n{'='*60}")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common", "copybooks")
|
||||
COBC = "cobc"
|
||||
|
||||
|
||||
@@ -16,7 +16,7 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n{'='*60}\n{n}\n{'='*60}")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common", "copybooks")
|
||||
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
|
||||
@@ -8,7 +8,7 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n{'='*60}\n{n}\n{'='*60}")
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-tna-system/"
|
||||
from _paths import TNA_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "cpy")
|
||||
BINDIR = os.path.join(ROOT, "bin")
|
||||
COBC = "cobc"
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
import sys, os, re, subprocess, time
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
ROOT_BENCH = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT_BENCH, COPYBOOKS_BENCH
|
||||
COPYBOOKS_BENCH = os.path.join(ROOT_BENCH, "common", "copybooks")
|
||||
ROOT_TNA = "D:/cobol-java/cobol-tna-system/"
|
||||
from _paths import TNA_ROOT as ROOT_TNA
|
||||
COPYBOOKS_TNA = os.path.join(ROOT_TNA, "cpy")
|
||||
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
import sys, os, re, time
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
ROOT_BENCH = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT_BENCH, COPYBOOKS_BENCH
|
||||
COPYBOOKS_BENCH = os.path.join(ROOT_BENCH, "common", "copybooks")
|
||||
ROOT_TNA = "D:/cobol-java/cobol-tna-system/"
|
||||
from _paths import TNA_ROOT as ROOT_TNA
|
||||
COPYBOOKS_TNA = os.path.join(ROOT_TNA, "cpy")
|
||||
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
|
||||
@@ -2,10 +2,8 @@
|
||||
import sys, os, re, time, json
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
ROOT_BENCH = "D:/cobol-java/cobol-test-programs/"
|
||||
COPYBOOKS_BENCH = os.path.join(ROOT_BENCH, "common", "copybooks")
|
||||
ROOT_TNA = "D:/cobol-java/cobol-tna-system/"
|
||||
COPYBOOKS_TNA = os.path.join(ROOT_TNA, "cpy")
|
||||
from _paths import BENCH_ROOT as ROOT_BENCH, COPYBOOKS_BENCH
|
||||
from _paths import TNA_ROOT as ROOT_TNA, COPYBOOKS_TNA
|
||||
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
from cobol_testgen.read import preprocess, resolve_copybooks, \
|
||||
|
||||
@@ -2,9 +2,9 @@
|
||||
import sys, os, re
|
||||
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
|
||||
|
||||
ROOT = "D:/cobol-java/cobol-test-programs/"
|
||||
from _paths import BENCH_ROOT as ROOT
|
||||
COPYBOOKS = os.path.join(ROOT, "common/copybooks")
|
||||
TNA = "D:/cobol-java/cobol-tna-system/"
|
||||
from _paths import TNA_ROOT as TNA
|
||||
from cobol_testgen import extract_structure, generate_data
|
||||
|
||||
total_br = 0; total_cov = 0; errors = []; below = []
|
||||
|
||||
@@ -5,8 +5,8 @@ P=0;F=0
|
||||
def ck(v,m=""): global P,F; (P:=P+1) if v else (F:=F+1, print(f" FAIL {m}"))
|
||||
def sec(n): print(f"\n{'='*60}\n{n}\n{'='*60}")
|
||||
|
||||
DESKTOP = os.path.join(os.environ['USERPROFILE'], "Desktop")
|
||||
ROOT = os.path.join(DESKTOP, "2026技术大赛", "cobol-tna-system") + "/"
|
||||
from _paths import TNA_ROOT, require
|
||||
ROOT = str(require(TNA_ROOT, "TNA 测试数据", "COBOL_TNA_ROOT")) + "/"
|
||||
COPYBOOKS = [os.path.join(ROOT, "cpy"), os.path.join(ROOT, "src")]
|
||||
|
||||
from config import Config
|
||||
|
||||
@@ -47,7 +47,8 @@ from cobol_testgen.read import resolve_copybooks, preprocess, extract_procedure_
|
||||
from cobol_testgen.core import build_branch_tree
|
||||
|
||||
try:
|
||||
src_path = Path("D:/cobol-java/sample_ソース_SAN01MAT.cbl")
|
||||
from _paths import SAMPLE_SRC_DIR
|
||||
src_path = SAMPLE_SRC_DIR / "sample_ソース_SAN01MAT.cbl"
|
||||
src = src_path.read_text(encoding="utf-8")
|
||||
sdir = str(src_path.parent)
|
||||
|
||||
@@ -89,7 +90,8 @@ section("2. HINA分類: 実プログラム判定精度")
|
||||
from hina.classifier import compute_confidence
|
||||
|
||||
# jcl-cobol-git の4プログラム
|
||||
cobol_git = Path("D:/cobol-java/jcl-cobol-git/cobol")
|
||||
from _paths import COBOL_GIT_ROOT
|
||||
cobol_git = COBOL_GIT_ROOT / "cobol"
|
||||
if cobol_git.exists():
|
||||
for f in ['CRDVAL', 'CRDCALC', 'CRDRPT', 'GENDATA']:
|
||||
try:
|
||||
|
||||
Reference in New Issue
Block a user