refactor(编号): 16 个测试模块码单词化 + 门禁识别面连带放宽
批 2(用户授权改名 + 「新名要一眼看懂」裁定)
- 16 个有歧义模块码单词化,共 1,146 处随 scripts/rename_ids.py 改写:
AI→ADCIN、AH→ADCHEALTH、PS→PROTSET、PE→PROTELEM、PH→PHASOR、
TS→TIMESYNC、VL→VOLLOCK、NP→NANDPORT、CFG→CONFIG、CLK→SYSCLK、
WD→WATCHDOG、STO→STORAGE、SH→SHA256、FA→FTPAUTH、FR→FREQ、104→IEC104
- 不动 NET/GD5F/RTC/SOE/UI/ADC/LOG/RS485/TOOL(已是单词、芯片名或业界通用词,
改了纯属 churn)
- 别名按全局登记:这批字面量已完全限定(TC-<码>-<nnn>),不存在裸形多义
- 映射表存档 scripts/rename_maps/batch2.json 作审计轨迹;§6 模块码表同步
连带修门禁(关键教训)
- 模块码涨到 9 位(ADCHEALTH/WATCHDOG)后,候选正则与族正则的 {0,4} 上界
会让改名后的号**整批从门禁眼里消失**:实测编号字面量从 8271 掉到 7315、
悬空假降 490 处。已放宽到 {0,9} 并写进 §6 注记
- 结论:改名批次必须连带复核识别面,只改数据不改判据 = 静默放行;
这次是靠「可判定比例跌破基线即失败」那条线拦下来的
现状与遗留
- 校验 1 未登记前缀 0 处;可判定比例 82.71%(基线 82.6%,只涨不跌成立)
- 遗留:7 个模块的「单元测试说明.md」仍缺(PROTSET 116、NANDPORT 109、
PROTELEM 65、FREQ 48、FTPAUTH 45、SHA256 25、SOE 14 处悬空)——改名不解决
缺文档,处置方式待议
- 遗留:T-2/T-3/T-4/T-6 历史任务号悬空(别名表未收全,属本工具批次漏项)
- 未改任何 C/H 可编译语义(仅注释与宏名内的编号),故不需 @build
This commit is contained in:
@@ -16,43 +16,43 @@
|
||||
*
|
||||
* 覆盖点(对应 docs/测试说明/配置文件单元测试说明.md 的 TC-CFG-xxx):
|
||||
* —— 值类型编解码(s_encode / s_decode 经公开 load/save 间接验证 + 直接白盒)——
|
||||
* TC-CFG-001 UINT 1/2/4 字节小端往返(含 0 / 最大值)
|
||||
* TC-CFG-002 UINT 非法:空 / 非数字 / 带后缀 / 超范围
|
||||
* TC-CFG-003 IP4 正常与非法(段数不足、>255、前导非数字、多余后缀)
|
||||
* TC-CFG-004 MAC 三种分隔符 + 大小写 + 非法
|
||||
* TC-CFG-005 STR 正常 / 超长拒绝 / 边界(恰好放下)
|
||||
* TC-CONFIG-001 UINT 1/2/4 字节小端往返(含 0 / 最大值)
|
||||
* TC-CONFIG-002 UINT 非法:空 / 非数字 / 带后缀 / 超范围
|
||||
* TC-CONFIG-003 IP4 正常与非法(段数不足、>255、前导非数字、多余后缀)
|
||||
* TC-CONFIG-004 MAC 三种分隔符 + 大小写 + 非法
|
||||
* TC-CONFIG-005 STR 正常 / 超长拒绝 / 边界(恰好放下)
|
||||
* —— INI 解析(s_split_line / s_match_section / s_key_value / s_parse)——
|
||||
* TC-CFG-010 注释(; 与 #)与空行忽略
|
||||
* TC-CFG-011 CRLF / LF 混排
|
||||
* TC-CFG-012 段名大小写无关匹配、前后空白修剪
|
||||
* TC-CFG-013 键名大小写无关、值前后空白修剪
|
||||
* TC-CFG-014 未知段 / 未知键留默认(不崩溃)
|
||||
* TC-CFG-015 键值行出现在段头之前 = 忽略
|
||||
* TC-CONFIG-010 注释(; 与 #)与空行忽略
|
||||
* TC-CONFIG-011 CRLF / LF 混排
|
||||
* TC-CONFIG-012 段名大小写无关匹配、前后空白修剪
|
||||
* TC-CONFIG-013 键名大小写无关、值前后空白修剪
|
||||
* TC-CONFIG-014 未知段 / 未知键留默认(不崩溃)
|
||||
* TC-CONFIG-015 键值行出现在段头之前 = 忽略
|
||||
* —— 注册校验(cfg_file_register)——
|
||||
* TC-CFG-020 正常注册 / 重复段名拒绝 / NULL 参数拒绝
|
||||
* TC-CFG-021 非法键定义拒绝(UINT len 非 1/2/4、MAC len≠6、STR len>79)
|
||||
* TC-CFG-022 段名超长拒绝(≥ CFG_NAME_MAX)
|
||||
* TC-CFG-023 挂回调段 data_size > CFG_SNAP_MAX 拒绝
|
||||
* TC-CFG-024 键名超长拒绝(≥ CFG_NAME_MAX);恰好 15 字符(= CFG_FILE_MAX_NAME_LEN)接受
|
||||
* TC-CONFIG-020 正常注册 / 重复段名拒绝 / NULL 参数拒绝
|
||||
* TC-CONFIG-021 非法键定义拒绝(UINT len 非 1/2/4、MAC len≠6、STR len>79)
|
||||
* TC-CONFIG-022 段名超长拒绝(≥ CFG_NAME_MAX)
|
||||
* TC-CONFIG-023 挂回调段 data_size > CFG_SNAP_MAX 拒绝
|
||||
* TC-CONFIG-024 键名超长拒绝(≥ CFG_NAME_MAX);恰好 15 字符(= CFG_FILE_MAX_NAME_LEN)接受
|
||||
* —— load 契约(cfg_file_load)——
|
||||
* TC-CFG-030 文件缺失 -> 生成出厂模板写盘 + 返回 0
|
||||
* TC-CFG-031 文件存在 -> 解析有效键进 RAM 副本
|
||||
* TC-CFG-032 超长文件(> CFG_FILE_MAX_LEN)-> 工厂默认 + 重建模板 + 自检留痕
|
||||
* TC-CFG-033 读取失败 -> 返回 -1(RAM 保持工厂默认)
|
||||
* TC-CFG-034 未注册任何段 -> 返回 -1
|
||||
* TC-CONFIG-030 文件缺失 -> 生成出厂模板写盘 + 返回 0
|
||||
* TC-CONFIG-031 文件存在 -> 解析有效键进 RAM 副本
|
||||
* TC-CONFIG-032 超长文件(> CFG_FILE_MAX_LEN)-> 工厂默认 + 重建模板 + 自检留痕
|
||||
* TC-CONFIG-033 读取失败 -> 返回 -1(RAM 保持工厂默认)
|
||||
* TC-CONFIG-034 未注册任何段 -> 返回 -1
|
||||
* —— save 契约(cfg_file_save)——
|
||||
* TC-CFG-040 文件缺失 -> 重建完整文档
|
||||
* TC-CFG-041 外科手术:保留注释/未知段/未知键,受管键原位改写
|
||||
* TC-CFG-042 缺失受管段/键补写
|
||||
* TC-CFG-043 输出超长 -> 拒绝保存(-1) 且原文件不动
|
||||
* TC-CFG-044 受管键行超 CFG_LINE_TEST_MAX -> 拒绝保存(-1) 原文件不动(P2-1);
|
||||
* TC-CONFIG-040 文件缺失 -> 重建完整文档
|
||||
* TC-CONFIG-041 外科手术:保留注释/未知段/未知键,受管键原位改写
|
||||
* TC-CONFIG-042 缺失受管段/键补写
|
||||
* TC-CONFIG-043 输出超长 -> 拒绝保存(-1) 且原文件不动
|
||||
* TC-CONFIG-044 受管键行超 CFG_LINE_TEST_MAX -> 拒绝保存(-1) 原文件不动(P2-1);
|
||||
* 非受管键的超长行照旧放过(原样保留)
|
||||
* —— poll 契约(cfg_file_poll)——
|
||||
* TC-CFG-050 首轮建立基线(不重载)
|
||||
* TC-CFG-051 沉降去抖:连续 2 次稳定才重载
|
||||
* TC-CFG-052 与基线一致不重载
|
||||
* TC-CFG-053 变更后重载 + 挂回调段差异触发回调
|
||||
* TC-CFG-054 溢出到文件超长 -> 工厂默认 + 重建模板 + 自检留痕(不触发回调)
|
||||
* TC-CONFIG-050 首轮建立基线(不重载)
|
||||
* TC-CONFIG-051 沉降去抖:连续 2 次稳定才重载
|
||||
* TC-CONFIG-052 与基线一致不重载
|
||||
* TC-CONFIG-053 变更后重载 + 挂回调段差异触发回调
|
||||
* TC-CONFIG-054 溢出到文件超长 -> 工厂默认 + 重建模板 + 自检留痕(不触发回调)
|
||||
*
|
||||
* 通过:全部 TC PASS(main 返回 0)。
|
||||
* 入口:int main(void),返回 0=PASS / 1=FAIL(由 run 脚本判读)。
|
||||
@@ -333,9 +333,9 @@ static void register_std(void) {
|
||||
|
||||
/* ===================== 用例 ===================== */
|
||||
|
||||
/* TC-CFG-001/002:UINT 往返与非法值 */
|
||||
/* TC-CONFIG-001/002:UINT 往返与非法值 */
|
||||
static void tc_uint(void) {
|
||||
printf("[TC-CFG-001] UINT encode/decode round-trip\n");
|
||||
printf("[TC-CONFIG-001] UINT encode/decode round-trip\n");
|
||||
{
|
||||
uint8_t d1[1]; uint8_t d2[2]; uint8_t d4[4];
|
||||
CHECK(s_decode_uint(d1, 1u, "255") == 0 && d1[0] == 0xFFu, "u8 max 255");
|
||||
@@ -349,7 +349,7 @@ static void tc_uint(void) {
|
||||
"u16 0x1234 little-endian order");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-002] UINT illegal values rejected\n");
|
||||
printf("[TC-CONFIG-002] UINT illegal values rejected\n");
|
||||
{
|
||||
uint8_t d[4];
|
||||
CHECK(s_decode_uint(d, 1u, "") == -1, "empty rejected");
|
||||
@@ -362,11 +362,11 @@ static void tc_uint(void) {
|
||||
}
|
||||
}
|
||||
|
||||
/* TC-CFG-003:IP4 */
|
||||
/* TC-CONFIG-003:IP4 */
|
||||
static void tc_ip4(void) {
|
||||
uint8_t d[4];
|
||||
|
||||
printf("[TC-CFG-003] IPv4 decode\n");
|
||||
printf("[TC-CONFIG-003] IPv4 decode\n");
|
||||
CHECK(s_decode_ip4(d, "0.0.0.0") == 0 && d[0] == 0u && d[3] == 0u, "all-zero");
|
||||
CHECK(s_decode_ip4(d, "255.255.255.255") == 0 &&
|
||||
d[0] == 255u && d[3] == 255u, "all-255");
|
||||
@@ -380,11 +380,11 @@ static void tc_ip4(void) {
|
||||
CHECK(s_decode_ip4(d, "") == -1, "empty rejected");
|
||||
}
|
||||
|
||||
/* TC-CFG-004:MAC */
|
||||
/* TC-CONFIG-004:MAC */
|
||||
static void tc_mac(void) {
|
||||
uint8_t d[6];
|
||||
|
||||
printf("[TC-CFG-004] MAC decode (separators/case)\n");
|
||||
printf("[TC-CONFIG-004] MAC decode (separators/case)\n");
|
||||
CHECK(s_decode_mac(d, "00:11:22:33:44:55") == 0 &&
|
||||
d[0] == 0x00u && d[5] == 0x55u, "colon separator");
|
||||
CHECK(s_decode_mac(d, "00-11-22-33-44-55") == 0 &&
|
||||
@@ -404,11 +404,11 @@ static void tc_mac(void) {
|
||||
CHECK(s_decode_mac(d, "") == -1, "empty rejected");
|
||||
}
|
||||
|
||||
/* TC-CFG-005:STR */
|
||||
/* TC-CONFIG-005:STR */
|
||||
static void tc_str(void) {
|
||||
uint8_t d[8];
|
||||
|
||||
printf("[TC-CFG-005] STR decode (length boundary)\n");
|
||||
printf("[TC-CONFIG-005] STR decode (length boundary)\n");
|
||||
CHECK(s_decode_str(d, 8u, "hello") == 0 && d[0] == 'h' && d[5] == '\0',
|
||||
"normal string + NUL");
|
||||
CHECK(s_decode_str(d, 8u, "1234567") == 0 && d[6] == '7' && d[7] == '\0',
|
||||
@@ -417,9 +417,9 @@ static void tc_str(void) {
|
||||
CHECK(s_decode_str(d, 8u, "") == 0 && d[0] == '\0', "empty string ok");
|
||||
}
|
||||
|
||||
/* TC-CFG-010~015:INI 解析 */
|
||||
/* TC-CONFIG-010~015:INI 解析 */
|
||||
static void tc_parse(void) {
|
||||
printf("[TC-CFG-010..015] INI parsing via load\n");
|
||||
printf("[TC-CONFIG-010..015] INI parsing via load\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -446,7 +446,7 @@ static void tc_parse(void) {
|
||||
CHECK(s_sys_data.baud == 9600u, "multi-section: sys parsed");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-012] section/key name case-insensitive + value whitespace trim\n");
|
||||
printf("[TC-CONFIG-012] section/key name case-insensitive + value whitespace trim\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -462,7 +462,7 @@ static void tc_parse(void) {
|
||||
CHECK(s_net_data.ip[0] == 1u && s_net_data.ip[3] == 4u, "value whitespace trimmed");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-011] LF-only line endings\n");
|
||||
printf("[TC-CONFIG-011] LF-only line endings\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -472,7 +472,7 @@ static void tc_parse(void) {
|
||||
CHECK(s_net_data.ip[3] == 8u, "LF: ip parsed");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-015] key-value before any section ignored\n");
|
||||
printf("[TC-CONFIG-015] key-value before any section ignored\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -482,7 +482,7 @@ static void tc_parse(void) {
|
||||
CHECK(s_net_data.ip[0] == 5u, "valid key after section parsed");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-014b] invalid value keeps factory default + logs\n");
|
||||
printf("[TC-CONFIG-014b] invalid value keeps factory default + logs\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -495,9 +495,9 @@ static void tc_parse(void) {
|
||||
}
|
||||
}
|
||||
|
||||
/* TC-CFG-020~023:register 校验 */
|
||||
/* TC-CONFIG-020~023:register 校验 */
|
||||
static void tc_register(void) {
|
||||
printf("[TC-CFG-020] register validation\n");
|
||||
printf("[TC-CONFIG-020] register validation\n");
|
||||
{
|
||||
cfg_section_reg_t r;
|
||||
vfs_reset();
|
||||
@@ -518,7 +518,7 @@ static void tc_register(void) {
|
||||
CHECK(cfg_file_register(&r) == -1, "NULL p_data rejected");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-021] invalid key definitions rejected\n");
|
||||
printf("[TC-CONFIG-021] invalid key definitions rejected\n");
|
||||
{
|
||||
cfg_section_reg_t r;
|
||||
static const cfg_key_def_t bad_uint[] = { { "k", CFG_VAL_UINT, 0u, 3u } };
|
||||
@@ -544,7 +544,7 @@ static void tc_register(void) {
|
||||
CHECK(cfg_file_register(&r) == -1, "key len=0 rejected");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-022] section name length limit\n");
|
||||
printf("[TC-CONFIG-022] section name length limit\n");
|
||||
{
|
||||
cfg_section_reg_t r;
|
||||
vfs_reset();
|
||||
@@ -558,7 +558,7 @@ static void tc_register(void) {
|
||||
CHECK(cfg_file_register(&r) == -1, "section name >= 16 chars rejected");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-023] callback section data_size limit\n");
|
||||
printf("[TC-CONFIG-023] callback section data_size limit\n");
|
||||
{
|
||||
cfg_section_reg_t r;
|
||||
vfs_reset();
|
||||
@@ -576,7 +576,7 @@ static void tc_register(void) {
|
||||
CHECK(cfg_file_register(&r) == 0, "same section without callback accepted");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-024] key name length limit\n");
|
||||
printf("[TC-CONFIG-024] key name length limit\n");
|
||||
{
|
||||
cfg_section_reg_t r;
|
||||
static const cfg_key_def_t long_key[] = {
|
||||
@@ -602,9 +602,9 @@ static void tc_register(void) {
|
||||
}
|
||||
}
|
||||
|
||||
/* TC-CFG-030~034:load 契约 */
|
||||
/* TC-CONFIG-030~034:load 契约 */
|
||||
static void tc_load(void) {
|
||||
printf("[TC-CFG-030] missing file -> factory template written\n");
|
||||
printf("[TC-CONFIG-030] missing file -> factory template written\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -618,7 +618,7 @@ static void tc_load(void) {
|
||||
CHECK(strstr(vfs_get(), "u8=7") != NULL, "template has default u8=7");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-032] oversized file -> factory default + regenerate + syslog\n");
|
||||
printf("[TC-CONFIG-032] oversized file -> factory default + regenerate + syslog\n");
|
||||
{
|
||||
size_t i;
|
||||
vfs_reset();
|
||||
@@ -637,7 +637,7 @@ static void tc_load(void) {
|
||||
CHECK(s_vfs_len <= CFG_FILE_MAX_LEN, "file regenerated within limit");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-033] read failure -> -1, RAM keeps factory default\n");
|
||||
printf("[TC-CONFIG-033] read failure -> -1, RAM keeps factory default\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -647,16 +647,16 @@ static void tc_load(void) {
|
||||
CHECK(s_net_data.u8 == s_net_def.u8, "RAM stays factory default");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-034] load with no registered section -> -1\n");
|
||||
printf("[TC-CONFIG-034] load with no registered section -> -1\n");
|
||||
{
|
||||
vfs_reset();
|
||||
CHECK(cfg_file_load() == -1, "no section registered returns -1");
|
||||
}
|
||||
}
|
||||
|
||||
/* TC-CFG-040~043:save 契约 */
|
||||
/* TC-CONFIG-040~043:save 契约 */
|
||||
static void tc_save(void) {
|
||||
printf("[TC-CFG-040] save with missing file -> full document\n");
|
||||
printf("[TC-CONFIG-040] save with missing file -> full document\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -668,7 +668,7 @@ static void tc_save(void) {
|
||||
CHECK(strstr(vfs_get(), "baud=38400") != NULL, "second section written");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-041] surgical save preserves comments/unknown\n");
|
||||
printf("[TC-CONFIG-041] surgical save preserves comments/unknown\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -689,7 +689,7 @@ static void tc_save(void) {
|
||||
CHECK(strstr(vfs_get(), "u8=200") != NULL, "managed key rewritten in place");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-042] surgical save appends missing managed section/key\n");
|
||||
printf("[TC-CONFIG-042] surgical save appends missing managed section/key\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -703,7 +703,7 @@ static void tc_save(void) {
|
||||
CHECK(strstr(vfs_get(), "baud=57600") != NULL, "missing key written");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-043] output overflow -> reject, original untouched\n");
|
||||
printf("[TC-CONFIG-043] output overflow -> reject, original untouched\n");
|
||||
{
|
||||
size_t i;
|
||||
vfs_reset();
|
||||
@@ -725,7 +725,7 @@ static void tc_save(void) {
|
||||
}
|
||||
}
|
||||
|
||||
printf("[TC-CFG-044] over-long managed key line -> reject (P2-1)\n");
|
||||
printf("[TC-CONFIG-044] over-long managed key line -> reject (P2-1)\n");
|
||||
{
|
||||
char buf[512];
|
||||
size_t n;
|
||||
@@ -772,9 +772,9 @@ static void tc_save(void) {
|
||||
}
|
||||
}
|
||||
|
||||
/* TC-CFG-050~054:poll 契约 */
|
||||
/* TC-CONFIG-050~054:poll 契约 */
|
||||
static void tc_poll(void) {
|
||||
printf("[TC-CFG-050] poll first round establishes baseline\n");
|
||||
printf("[TC-CONFIG-050] poll first round establishes baseline\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -784,7 +784,7 @@ static void tc_poll(void) {
|
||||
CHECK(s_base_valid == 1u, "baseline established");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-051/052] settle debounce + no-change skip\n");
|
||||
printf("[TC-CONFIG-051/052] settle debounce + no-change skip\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -801,7 +801,7 @@ static void tc_poll(void) {
|
||||
CHECK(s_net_data.u8 == 88u, "reloaded after settle");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-053] change triggers reload + callback\n");
|
||||
printf("[TC-CONFIG-053] change triggers reload + callback\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -815,7 +815,7 @@ static void tc_poll(void) {
|
||||
CHECK(s_net_cb_count >= 1, "callback fired on section change");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-055] content change without size/mtime token change -> not detected\n");
|
||||
printf("[TC-CONFIG-055] content change without size/mtime token change -> not detected\n");
|
||||
{
|
||||
vfs_reset();
|
||||
register_std();
|
||||
@@ -830,7 +830,7 @@ static void tc_poll(void) {
|
||||
"same-token change ignored (size+mtime is the change signal)");
|
||||
}
|
||||
|
||||
printf("[TC-CFG-054] poll detects oversized file -> factory + regenerate + syslog\n");
|
||||
printf("[TC-CONFIG-054] poll detects oversized file -> factory + regenerate + syslog\n");
|
||||
{
|
||||
size_t i;
|
||||
vfs_reset();
|
||||
|
||||
Reference in New Issue
Block a user