Files
ElyOffice/tasks/reviews/C00.4-r4.md
T

6 lines
1.4 KiB
Markdown

FAIL
scripts/build-libetpan.sh:11 — R3 的无 TLS 缓存问题仍可复现。缓存命中只检查 PIN 和 libetpan.a,直接跳过新增的 OpenSSL 与配置检查。实测在隔离目录用锁定源码构建 `--without-openssl --with-json` 的静态库,保留旧脚本会写入的 PIN 和 BUILD-config.h;随后使用正常 OpenSSL 连续执行两次当前构建脚本,均退出 0 并打印 `ok libetpan`,两次执行测试均退出 1,报 `libetpan built without TLS`。因此升级脚本后,R3 已产生的坏缓存仍会永久复用。修复方向:缓存命中前核对 BUILD-config.h 中 HAVE_OPENSSL、HAVE_JSON 均为 1;缺失或不符时使缓存失效并重新构建,加入旧坏缓存的恢复测试。
tests/engines/libetpan.sh:14 — 构建失败的具体诊断被重定向进临时 build.log,退出时第 8 行的 trap 随即删除该文件。实测在无缓存的隔离目录执行 `OPENSSL_DIR=/nonexistent tests/engines/libetpan.sh`,只收到 `FAIL: build failed, see .../build.log`,该路径在命令返回后已不存在;直接运行构建脚本才可看到 `no OpenSSL headers under /nonexistent`。新增前置检查失败以及 configure、编译失败时,指定的复核入口都会丢失错误原因,违反出错即暴露的规则。修复方向:失败时先将构建日志输出到 stderr,再清理临时目录;增加失败路径测试,断言原始诊断可见。