From f412751b37db8b9f10be52645b2e488803358388 Mon Sep 17 00:00:00 2001 From: JianFeeeee Date: Mon, 14 Sep 2026 15:20:39 +0800 Subject: [PATCH] =?UTF-8?q?test(criteria):=20=E8=A7=84=E8=8C=83=E5=8A=A0?= =?UTF-8?q?=20=C2=A71.5=E3=80=8C=E4=B8=A4=E5=BC=A0=E8=A1=A8=E5=90=84?= =?UTF-8?q?=E7=BC=BA=E4=B8=80=E5=8D=8A=E6=97=B6=E6=8C=89=20id=20=E8=81=94?= =?UTF-8?q?=E6=8E=A5=EF=BC=8C=E4=B8=8D=E6=8C=89=E7=9B=B8=E9=82=BB=E5=85=B3?= =?UTF-8?q?=E7=B3=BB=E9=85=8D=E5=AF=B9=E3=80=8D=EF=BC=88pi=20=E7=9A=84?= =?UTF-8?q?=E5=BB=BA=E8=AE=AE=20+=20=E6=88=91=E6=96=B9=E5=AE=9E=E6=B5=8B?= =?UTF-8?q?=E7=9A=84=E4=B8=B2=E8=A1=8C=E5=AE=9E=E4=BE=8B=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/electron/test/CRITERIA.md | 11 +++++++++++ client/electron/test/run-all.mjs | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/client/electron/test/CRITERIA.md b/client/electron/test/CRITERIA.md index 557e712..768d8b5 100644 --- a/client/electron/test/CRITERIA.md +++ b/client/electron/test/CRITERIA.md @@ -31,6 +31,17 @@ `client/electron/test/background.test.mjs` 里还有一批 `\{[\s\S]{0,80}…`、`{0,160}` 窗口。 下次碰那个文件时按本节形状改成"取规则体",不要在那里再加一条注释算了。 +### 1.5 两张表各缺一半时,必须**按 id 联接**,不能按相邻关系配对(pi 2026-09-14) + +读 SDK 的系统色时踩到的:`sysResource.js` 只有**名字→id**,`resources.txt` 只有 **id→值**, +而后者把名字与值排得并不总是紧邻(我第一遍按文本邻近关系读,直接串了行, +把 `ohos_id_color_background` 读成了 `ohos_id_color_background_dark` 的值)。 +正确做法:名字查 id、id 查值,**两次联接都基于标识符**;顺便用一张表校验另一张表 +(例如 `_dark` 结尾的名字应当拿到深色值),对不上就说明联接方式错了。 + +这与第 1 条是同一件事:**邻接不是结构**。它同样适用于"我自己写的判据" +(§6.6 里那条被变异测试抓住两次的窗口式正则就是反例)。 + ## 2. 合成的清单 + 空 allow-list:条目要结构化 "清单从 SDK/参考实现生成 + allow-list 目前为空"是个好形状,但它**迟早被侵蚀**: diff --git a/client/electron/test/run-all.mjs b/client/electron/test/run-all.mjs index 456cf0c..0bde5f2 100644 --- a/client/electron/test/run-all.mjs +++ b/client/electron/test/run-all.mjs @@ -49,7 +49,7 @@ if (!existsSync(CRITERIA_DOC)) { process.exit(1); } const criteriaDoc = readFileSync(CRITERIA_DOC, 'utf8'); -for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法']) { +for (const must of ['配对/解析', 'allow-list', '变异验证', '剥掉注释', '按行', '自报条数', '只支撑你看到的那一层', '已经在某个提交里', '自带修法', '按 id 联接']) { if (!criteriaDoc.includes(must)) { console.error(`✗ 判据规范里少了「${must}」这条 —— 规则被删掉了还是搬走了?`); process.exit(1);