测试闭环补 [ERR] 禁项:DBG_ERROR 前缀为 [ERR] 且不匹配 ERROR 子串,此前错误日志漏检

This commit is contained in:
2026-09-21 03:03:37 +08:00
parent 5d386cedfb
commit 4114416bf4
3 changed files with 21 additions and 5 deletions
+7 -3
View File
@@ -7,7 +7,7 @@
用法:
& '.venv\\Scripts\\python.exe' test/verify_log.py --log-path <file>
[--required 'marker1;marker2']
[--forbidden 'FAIL;ERROR;HardFault;assert']
[--forbidden 'FAIL;ERROR;HardFault;assert;[ERR]']
[--show-tail-lines 40]
退出码(与旧版一致):
@@ -18,12 +18,16 @@
默认 Required 标记对应 STM32F4-Base 启动序列(见 App/app_main.c + App/task/net_task.c),
按测试用例覆盖,例如:
--required 'App init OK;net init: OK;PHY: 100M FULL'
--forbidden 'FAIL;ERROR;HardFault;assert'
--forbidden 'FAIL;ERROR;HardFault;assert;[ERR]'
语义约定(与旧 PowerShell 版对齐):
- Required:大小写敏感子串匹配(全文)
- Forbidden:大小写**不敏感**子串匹配、逐行计数(旧版 -like 语义;
如 Forbidden 'FAIL' 会命中 "write /log/run.log fail (7)" 这类行)
- 固件错误级日志前缀是 `[ERR]`(`DBG_ERROR`,形如 `[时间][ERR][TAG] 消息`),
与 `ERROR` 子串**不匹配**——默认 Forbidden 因此显式包含 `[ERR]`,驱动/模块
错误行不再漏检(2026-09-21 修复)。测试套件中**预期**出现 `[ERR]` 的用例
(如 GD5F DMA 守卫负路径、FatFs 非法名校验)须用 --forbidden 覆盖默认值。
- 读取编码:先按 UTF-8,解码失败回退系统 locale 编码(旧版 Get-Content 行为)
- 控制台输出重配置为 UTF-8(errors=replace):任何 Windows 控制台代码页
都只影响终端显示,不会导致本脚本崩溃
@@ -35,7 +39,7 @@ import sys
from pathlib import Path
REQUIRED_DEFAULT = "App init OK;Network Init;net init: OK"
FORBIDDEN_DEFAULT = "FAIL;ERROR;HardFault;assert"
FORBIDDEN_DEFAULT = "FAIL;ERROR;HardFault;assert;[ERR]"
def _split_list(spec):