From 35b67b216e0bd28b6ed3122e6d7edd239bdae1ea Mon Sep 17 00:00:00 2001 From: "DeepSeek V4.1 Flash" <> Date: Wed, 4 Nov 2026 14:39:27 +0800 Subject: [PATCH] =?UTF-8?q?test(tools):=20=E9=BB=98=E8=AE=A4=E6=95=B0?= =?UTF-8?q?=E6=8D=AE/=E6=8A=A5=E5=91=8A=E8=B7=AF=E5=BE=84=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E6=94=AF=E6=8C=81=E5=9C=A8=E4=BB=93=E5=BA=93=E6=A0=B9?= =?UTF-8?q?=E7=9B=AE=E5=BD=95=E8=BF=90=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 问题:`OffscreenChecks` 的默认 `-data` 只探测 `../TestData/...`,默认 `-report` 也固定写 `../Temp/tools/...`;在**仓库根目录**运行时会静默报 "no data file"(退出码 2),容易被误认为工具坏了(本轮实际踩到)。 改动: * 默认数据文件候选同时包含 `../TestData/X` 与 `TestData/X`; * 报告打不开时,若路径以 `../Temp/` 开头则去掉前缀重试一次; * `Tools/README.md` 补充说明两种调用方式等价,显式 `-data/-out/-report` 仍以当前工作目录为准。 验证:在仓库根目录执行 `Tools\OffscreenChecks\Build\OffscreenChecks.exe -all` → 6/6 检查 PASS,`checks=108 failed=0`;在 `Tools/` 下行为不变。 --- Tools/OffscreenChecks/Src/Main.cpp | 18 +++++++++++++++--- Tools/README.md | 8 ++++++++ 2 files changed, 23 insertions(+), 3 deletions(-) diff --git a/Tools/OffscreenChecks/Src/Main.cpp b/Tools/OffscreenChecks/Src/Main.cpp index 11d92bd..4882aea 100644 --- a/Tools/OffscreenChecks/Src/Main.cpp +++ b/Tools/OffscreenChecks/Src/Main.cpp @@ -160,18 +160,30 @@ int main(int argc, char** argv) EnsureDirectory(options.outDir); + // 报告路径同样要能在两种工作目录下工作(见上面 `-data` 的说明)。 g_report = std::fopen(reportPath.c_str(), "wb"); + if (g_report == nullptr && reportPath.rfind("../Temp/", 0) == 0) + { + reportPath = reportPath.substr(3); // 去掉 "../" + g_report = std::fopen(reportPath.c_str(), "wb"); + } EmitLine("==============================================================\n"); EmitLine(" Just DataInspector - offscreen checks\n"); EmitLine(" mode=%s out=%s report=%s\n", options.mode.c_str(), options.outDir.c_str(), reportPath.c_str()); EmitLine("==============================================================\n"); - // 数据文件:命令行优先,否则在 TestData 里挑一个可用的样本 + // 数据文件:命令行优先,否则在 TestData 里挑一个可用的样本。 + // ⚠️ 默认路径同时支持「在 Tools/ 下运行」与「在仓库根目录运行」两种习惯: + // 前者要 `../TestData/...`,后者要 `TestData/...`。只认一种会让另一种 + // 静默报 "no data file"(本轮就踩过,容易被误认为工具坏了)。 if (options.dataPath.empty()) { - static const char* const candidates[] = {"../TestData/SCATTER_TEST.csv", "../TestData/[1].CSV", - "../TestData/BIG_DATA.csv", "../TestData/Problem_Data.CSV"}; + static const char* const candidates[] = {"../TestData/SCATTER_TEST.csv", "TestData/SCATTER_TEST.csv", + "../TestData/[1].CSV", "TestData/[1].CSV", + "../TestData/BIG_DATA.csv", "TestData/BIG_DATA.csv", + "../TestData/Problem_Data.CSV", + "TestData/Problem_Data.CSV"}; for (const char* const candidate : candidates) { if (FileExists(candidate)) diff --git a/Tools/README.md b/Tools/README.md index ac21064..27ca1ac 100644 --- a/Tools/README.md +++ b/Tools/README.md @@ -157,6 +157,14 @@ Tools\OffscreenChecks\Build\OffscreenChecks.exe -list `SCATTER_TEST.csv` → `[1].CSV` → `BIG_DATA.csv` → `Problem_Data.CSV`; `TestData/` 不入库,缺失时请用 `-data` 指定。 +> 默认路径(数据 / 输出 / 报告)**同时支持在 `Tools/` 下运行和在仓库根目录运行** +> (两种写法会自动回退),因此下面两种调用等价: +> ```powershell +> cd Tools ; .\OffscreenChecks\Build\OffscreenChecks.exe -all +> .\Tools\OffscreenChecks\Build\OffscreenChecks.exe -all +> ``` +> 显式 `-data` / `-out` / `-report` 仍以**当前工作目录**为准。 + ### 4.1 检查项 | 检查 | 做了什么 | 断言 / 判据 |