test(harmony): 「用系统方案」的地基 —— 系统资源名与 BlurStyle 取值离线可校验(判据先于替换)
jianf 追加要求「鸿蒙要求用系统方案」(§二·五)。难点是**没有设备**:
`$r('sys.color.写错了')` 编译期不报、只有真机运行到那一行才炸 —— 这块会变成谁都验不了的区域。
SDK 里其实带着答案:`sdk/default/openharmony/toolchains/id_defined.json` 列了全部系统资源名
及其类型(本机 API 26:7826 条,color 1059 条);BlurStyle 取值在 `component/common.d.ts` 的
`declare enum BlurStyle` 里。两边都能离线查,所以"名字写对没有"可以变成构建期判据。
新增 `test/harmony-system-api.test.mjs`(4 条,已接进 run-all):
1. SDK 名表/组件声明找不到时**判红并给出替代做法**(会静默跳过的判据等于没有这条判据 ——
本仓库已栽过四次同类问题);
2. 源码里每个 `$r('sys.<type>.<name>')` 必须存在且**类型相符**;
3. 每个 `BlurStyle.<MEMBER>` 必须在 SDK enum 里;
4. 替换计划要用的那批系统色**先核过再写代码**,并且钉住一条边界:名表里没有
`brand`/`confirm`/`success` —— 权限三档、预算三档这些**业务语义色没有系统对应物**,
继续用自定义令牌,不许"为了系统化"把 plan 档画成 warning 色(那是丢语义换形式)。
变异验证:拼错色名 `ohos_id_color_list_cad_bg` → 报「查无此名」并指出文件;
写错 `BlurStyle.COMPONENT_不存在` → 报出可用取值。顺带修掉解析精度问题:
早先的宽松正则把文档里的 `T`、`R` 也当成了枚举成员,现在精确到 `,`/`=` 分隔符。
验证:`npm test` 退出码 0(10 个判据文件全绿 + vitest 258/258)。
This commit is contained in:
@ -463,3 +463,23 @@ deb 也不必从 targets 里摘。已写进 `client/electron/BUILD.md`(含排
|
||||
**玻璃只出现在一层**(不嵌套各自加模糊)——
|
||||
收件箱现在的通栏行 + 分隔线要改成卡片/气泡,这项排在系统材质替换之前做,
|
||||
因为它决定组件结构。
|
||||
|
||||
### 7.11 「用系统方案」的第一块地基:系统资源名**离线可校验**(判据先于替换)
|
||||
|
||||
没有设备,`$r('sys.color.写错了')` 编译期不报、只有真机运行到那一行才炸 ——
|
||||
"用系统方案"会变成一块谁都验不了的区域。所以先把校验立起来:
|
||||
`client/electron/test/harmony-system-api.test.mjs`(4 条,已接进 `run-all`):
|
||||
|
||||
- 源码里每个 `$r('sys.<type>.<name>')` 都必须在 SDK 名表
|
||||
`sdk/default/openharmony/toolchains/id_defined.json` 里**存在且类型相符**;
|
||||
- 每个 `BlurStyle.<MEMBER>` 都必须在 SDK 的 `declare enum BlurStyle` 里;
|
||||
- 替换计划里要用的那批系统色**先核过再写代码**(`ohos_id_color_list_card_bg`、
|
||||
`_list_separator`、`_background`/`_sub_background`、`_text_primary/secondary/tertiary`、
|
||||
`_emphasize`、`_warning`、`_alert`、`_mask_regular`);
|
||||
- 名表里没有 `brand` / `confirm` / `success` —— 这条**边界也钉住**:
|
||||
权限三档、预算三档这些**业务语义色没有系统对应物**,继续用自定义令牌,
|
||||
不许"为了系统化"把 plan 档画成 warning 色。
|
||||
|
||||
两条纪律写进判据本身:SDK 名表找不到时**判红并说明**(会静默跳过的判据等于没有),
|
||||
以及变异验证(拼错色名 `list_cad_bg` → 报"查无此名";写错 `BlurStyle.COMPONENT_不存在` → 报可用取值;
|
||||
名字解析精确到 `,`/`=` 分隔符 —— 早先的宽松写法把文档里的 `T`、`R` 也算成了枚举成员)。
|
||||
|
||||
Reference in New Issue
Block a user