fix(sim): UI 回归改为自洽运行——修 netcfg_save 假失败
现象:check_content_pages.py 只有 netcfg_save 一页 FAIL(保存行值列 显示 ERR 而非 OK),其余 10 页像素与两处往返池水位全过。 真因不是代码回归:模拟器按**当前工作目录**读写 sim_config.ini,而 --cfgtest 的 E-01 场景 2 会伪造一份 4000 B 纯注释"雷"文件、并断言 "拒写后原文件不动"(size == 4000)——连正常通过路径也不删除它。 实测仓库根那份是 2026-10-11 08:37 留下的。之后每次运行都会加载它 → 外科式保存要在 4000 B 注释后补写受管段 → 输出必超 CFG_FILE_MAX_LEN → 引擎按设计拒写 → 保存行显示 ERR,与"工厂默认 态"的黄金参考对不上。引擎行为是对的,错在自检留雷 + 回归不自洽。 修三处: - simulator/main.c:run_cfgtest 拆成 scenarios + 外壳,无论成败一律 cfg_store_remove 配置路径与临时路径,让配置回到"无文件 = 工厂默认" - check_menu_rows.py / check_content_pages.py:以空临时目录当工作 目录跑 lvgl_sim(cwd=tmp),调用目录里的残留档不再影响结果 - check_content_pages.py:作废"删 sim_netcfg.bin 残留"的旧兼容清理 (旧档迁移 2026-10-10 已删),改为只提示、不删别人的档 验证:--cfgtest PASS 且跑完不再留下 sim_config.ini; check_menu_rows.py PASS(8 状态 + 池基线 5,368 B); check_content_pages.py "PASS: 11 内容页 + 往返池水位全部通过", 往返 5,448 B。**未刷任何黄金参考**——参考本来就是对的。顺带删掉 本地两份 4000 B 残留(仓库根与 build/Debug,均 gitignore 产物)。 未跑 @build:本次只改 simulator/ 侧代码,固件工程无涉及;模拟器 CMake 构建 0 错 0 警,cppcheck 钩子覆盖 simulator/main.c。 文档:UI_自动化测试流程 §五 加排查行 + 变更记录;simulator/README §3.7 说明删除保证与原因;lvgl-simulator skill 同步;订正审查报告 R-9 那条把该差异误归给 cfg_file 改动的表述。
This commit is contained in:
+22
-1
@@ -259,7 +259,7 @@ static const uint8_t s_cfgtest_ip[4] = { 10u, 0u, 0u, 1u };
|
||||
* 说明:验证链 net_cfg_load(只读 INI)→ poll 建基线 → 伪造外部编辑
|
||||
* → poll 两次(沉降去抖)→ 重载并更新 RAM 副本
|
||||
*/
|
||||
static int run_cfgtest(void) {
|
||||
static int run_cfgtest_scenarios(void) {
|
||||
int i;
|
||||
const net_cfg_t *p_cfg;
|
||||
|
||||
@@ -380,6 +380,27 @@ static int run_cfgtest(void) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:配置自检外壳——保证不在工作目录留下伪造的配置档
|
||||
* 入口参数:无
|
||||
* 返回值:run_cfgtest_scenarios 的判定 int
|
||||
* 说明:E-01 场景 2 会写一个 4000 B 纯注释"雷"文件,并断言"拒写后原文件不动"
|
||||
* (size == 4000)——**因此连正常通过路径也会把它留在原地**。该文件是
|
||||
* gitignore 的本地产物,但之后每一次 UI 回归都会加载它:外科手术保存要在
|
||||
* 4000 B 注释后补写受管段,输出必然超 CFG_FILE_MAX_LEN → 引擎按设计拒写
|
||||
* → 网口设置页保存行显示 ERR → 黄金参考(工厂默认态)比对失败
|
||||
* (2026-10-15 实测踩中)。故无论成败一律删除,让配置路径回到
|
||||
* "无文件 = 工厂默认"这一确定态;回归脚本另以空工作目录运行做双保险
|
||||
* → docs/UI设计/UI_自动化测试流程.md §三
|
||||
*/
|
||||
static int run_cfgtest(void) {
|
||||
int rc = run_cfgtest_scenarios();
|
||||
|
||||
(void)cfg_store_remove(cfg_store_config_path());
|
||||
(void)cfg_store_remove(cfg_store_tmp_path());
|
||||
return rc;
|
||||
}
|
||||
|
||||
/*
|
||||
* 函数功能:日志引擎自检(无窗口、进程内闭环)
|
||||
* 入口参数:无
|
||||
|
||||
Reference in New Issue
Block a user