# -*- coding: utf-8 -*- r"""把我在 verify_all 里加的 $out 改名成 $stageOut。 事故: 我加的 $out = & python (Join-Path $root "_tests\xxx.py") 2>&1 把 verify_all 原有的 $out = Join-Path $root "_tests\out_java" (Java 编译输出目录)覆盖了! 第 5 阶段编译 Java 时 $out 变成空字符串,Test-Path 直接报错。 这个变量名起得太随意了 —— 脚本里已有同名变量。 """ from __future__ import annotations import sys from pathlib import Path VERIFY = Path(r"C:\Users\shu\Desktop\deepseekagent\LanRemote\_tests" r"\verify_all.ps1") OLD_ASSIGN = "$out = & python (Join-Path $root" NEW_ASSIGN = "$stageOut = & python (Join-Path $root" OLD_USE = " Show-Fails $out" NEW_USE = " Show-Fails $stageOut" def main() -> int: raw = VERIFY.read_bytes() had_bom = raw.startswith(b"\xef\xbb\xbf") text = raw.decode("utf-8-sig") if NEW_ASSIGN in text: print(" 已经改过") return 0 count_assign = text.count(OLD_ASSIGN) count_use = text.count(OLD_USE) text = text.replace(OLD_ASSIGN, NEW_ASSIGN) text = text.replace(OLD_USE, NEW_USE) VERIFY.write_bytes((b"\xef\xbb\xbf" if had_bom else b"") + text.replace("\r\n", "\n").encode("utf-8")) print(f" 改名 $out -> $stageOut({count_assign} 处赋值,{count_use} 处引用)") # 复核:原来的 $out 定义必须还在,而且没有残留的 $out = & python lines = text.splitlines() still_bad = [line for line in lines if line.strip().startswith("$out = & python")] print(f" 残留的 $out = & python:{len(still_bad)} 处") for line in lines: if line.startswith("$out ") or line.startswith("$out="): print(f" 原有的 $out 定义:{line.strip()}") return 0 if not still_bad else 1 if __name__ == "__main__": sys.exit(main())