工程(影响面选闸): 代码域闸壳按 diff 推触发面——game/ 改动全在测量面(tests/sim)时 00 冒烟/03/04 探针/05 渲染闸记 SKIP,01/02/09 恒跑(测量面改动的验证载体),11 对拍触面判定沿用既有机制——真值表五例验证(含混行为面/SIM 冒名),本机 grep -q -v 退出码反常改用反选判空可移植写法;映射单点在闸壳,SKIP 与 --quick 同构回执记 not_run;条目完成即删
This commit is contained in:
1 parent
219af09a04
commit
667a6060f8
2 files changed
+37
-15
No files matched your search
+37
-7
@@ -14,6 +14,8 @@
|
||||
# --code 只跑代码域闸(00 冒烟测试/01 系统测试/02 单元与集成测试/03 探针 --click/
|
||||
# 04 探针 --full/05 渲染闸/09 静态扫描/11 回放确定性对拍+10 熵增闸)
|
||||
# ——本批改动含 game/ 下非 .md 的行为载体(代码/测试脚本/探针/场景/数据表/素材)时用。
|
||||
# 影响面选闸:本批 game/ 改动全在测量面(game/tests、game/sim)时,00/03/04/05 记
|
||||
# SKIP(测量面不触开机路径/场景树/渲染输出;映射定义在脚本中部,判定保守)。
|
||||
# --docs 只跑文档域闸(06 gdd_lint/07 doc_link/08 doc_term/08c 流水线闸/08d 引用可核
|
||||
# +10 熵增闸)
|
||||
# ——本批改动只有文档件时用:game/ 内的 .md(README、生成清单)、design/、根规则文件、
|
||||
@@ -152,6 +154,23 @@ fi
|
||||
declare -a NAMES=() EXITS=() LOGS=()
|
||||
FAILED=0
|
||||
|
||||
# ── 影响面选闸(2026-10-28 用户裁):本批 diff 相对 master 分叉点的 game/ 改动若全部落在
|
||||
# 测量面(game/tests/**、game/sim/**——测试与模拟驱动件,不触开机路径、场景树与渲染
|
||||
# 输出),则 00 冒烟/03/04 探针/05 渲染闸记 SKIP。判定保守取向:diff 含任一行为面
|
||||
# 文件即全部实跑;01/02/09 恒跑(测试宿主与静态扫描正是测量面改动的验证载体)。
|
||||
# 触发面映射只在本脚本一处定义;SKIP 与 --quick 同构,回执记 not_run,不作闸况变化。
|
||||
NONBEHAVIOR=0
|
||||
if in_domain code; then
|
||||
_base="$(git -C "$REPO" merge-base master HEAD 2>/dev/null || true)"
|
||||
_gfiles="$(git -C "$REPO" -c core.quotepath=false diff --name-only "${_base:-HEAD}" HEAD -- game/ 2>/dev/null || true)"
|
||||
# 反选(测量面之外的行)非空=含行为面。不用 grep -q:本机 git-bash 的 -q -v 组合退出码反常。
|
||||
_behavior="$(echo "$_gfiles" | grep -vE '^(game/tests/|game/sim/)' || true)"
|
||||
if [ -n "$_gfiles" ] && [ -z "$_behavior" ]; then
|
||||
NONBEHAVIOR=1
|
||||
echo "[gates] 影响面选闸:game/ 改动全在测量面(tests/sim)——00 冒烟/03/04 探针/05 渲染闸 → SKIP"
|
||||
fi
|
||||
fi
|
||||
|
||||
echo "闸机跑批 · 域=$DOMAIN · 仓库 $REPO"
|
||||
echo "起跑 commit: $(git -C "$REPO" rev-parse --short HEAD 2>/dev/null || echo '非git目录')"
|
||||
echo "python: $PY"
|
||||
@@ -197,21 +216,32 @@ gate_unit() { # run_all 是 --script 模式,退出码为唯一判据
|
||||
# ══ 代码域(0–5)══
|
||||
if in_domain code; then
|
||||
# ── 0. 冒烟测试(极小启动场景:真实开机路径存活检查,零逻辑判定,秒级)──
|
||||
gate "00 冒烟测试" "smoke_boot.log" "$PY" "$REPO/tools/run_smoke.py"
|
||||
if [ $NONBEHAVIOR -eq 1 ]; then
|
||||
NAMES+=("00 冒烟测试"); EXITS+=("SKIP"); LOGS+=("")
|
||||
echo ""; echo "[gates] 00 冒烟测试 → SKIP(影响面选闸:测量面改动不触开机路径)"
|
||||
else
|
||||
gate "00 冒烟测试" "smoke_boot.log" "$PY" "$REPO/tools/run_smoke.py"
|
||||
fi
|
||||
# ── 1. 系统测试(真实玩法路径断言面;宿主=game/tests/system_test.gd,缺省 --script 由 run_system_test.py 持有)──
|
||||
gate "01 系统测试" "system_test.log" "$PY" "$REPO/tools/run_system_test.py"
|
||||
# ── 2. 单元与集成测试 ──
|
||||
gate_unit
|
||||
# ── 3. 场景探针 · 行为走查段 ──
|
||||
gate "03 探针 --click" "probe_click.log" bash "$REPO/tools/probe_gate.sh" "$GAME" --click
|
||||
# ── 4. 场景探针 · 断言段(iter27 漏跑的就是这一段)──
|
||||
gate "04 探针 --full" "probe_full.log" bash "$REPO/tools/probe_gate.sh" "$GAME" --full
|
||||
# ── 5. 渲染面(窗口化,依赖 PIL)──
|
||||
if [ $QUICK -eq 0 ]; then
|
||||
gate "05 渲染闸" "render.log" bash "$REPO/tools/render_gate.sh" "$GAME"
|
||||
if [ $NONBEHAVIOR -eq 1 ]; then
|
||||
NAMES+=("03 探针 --click"); EXITS+=("SKIP"); LOGS+=("")
|
||||
NAMES+=("04 探针 --full"); EXITS+=("SKIP"); LOGS+=("")
|
||||
echo ""; echo "[gates] 03/04 探针 → SKIP(影响面选闸:测量面改动不触场景树与探针断言面)"
|
||||
else
|
||||
gate "03 探针 --click" "probe_click.log" bash "$REPO/tools/probe_gate.sh" "$GAME" --click
|
||||
gate "04 探针 --full" "probe_full.log" bash "$REPO/tools/probe_gate.sh" "$GAME" --full
|
||||
fi
|
||||
# ── 5. 渲染面(窗口化,依赖 PIL)──
|
||||
if [ $QUICK -eq 1 ] || [ $NONBEHAVIOR -eq 1 ]; then
|
||||
NAMES+=("05 渲染闸"); EXITS+=("SKIP"); LOGS+=("")
|
||||
echo ""; echo "[gates] 05 渲染闸 → SKIP(--quick)"
|
||||
echo ""; echo "[gates] 05 渲染闸 → SKIP(--quick 或 影响面选闸:测量面改动不触渲染输出)"
|
||||
else
|
||||
gate "05 渲染闸" "render.log" bash "$REPO/tools/render_gate.sh" "$GAME"
|
||||
fi
|
||||
fi
|
||||
# ══ 文档域(6–8c)══
|
||||
|
||||
Reference in new issue
Block a user