test(app-iced): 接线守卫改判「代码行」,注释掉不再算接线(M252 r1 P1-1)

复审实测:三处接线守卫都是纯文本 `contains`,把真接线注释掉(行注释,或 `/*` 独占一行的
块注释)之后 943 条用例一条不红;`field.rs` 那处连 rustc 的 unused-variable 兜底也能用
`let _submit` 一起绕掉 —— 功能整条静默失效时,测试与 lint 两条线同时不响。

- `pages/layout/source/code.rs`(新):`code_lines()` 剥 `//` 与跨行/可嵌套 `/* … */`,
  字符串与字符字面量整段保留(`"http://x"` 里的 `//` 不剥);`code_line()` / `has_code_line()`
  给「某行代码的行首就是那个调用」这条谓词。边界写在模块文档:原始字符串里出现 `"` 是唯一
  可能朝松方向错的形态(本仓 src 现无此写法),其余偏差都是假红。
- 三处守卫改用它:`text_field_forwards_the_submit_callback`(行首是 `on_submit_maybe(`
  且实参不是 `None`、消息来自 `submit_message`)、`the_rename_field_wires_enter`(回车与
  「改名」按钮的行都含 `commit_rename()`,且都不含第二种页面意图 —— 一并关掉 r1 P2-1
  「Debug 自证撑不住判据」)、`the_accent_field_wires_enter_to_commit`(含产地那条代码行)。
- `submit_is_wired_only_at_the_two_call_sites` 的 `scan()` 换成同一谓词并跳过测试文件
  (守卫自己的 fixture 里也有 `.on_submit(` 样本)。
- T29 顺手收敛 scope 内的同族旧断言:`pages/instances/tests.rs` 的行距/散文接线判据与
  `pages/instances/tests/i18n.rs` 的五条取词判据改走 `code_text()`(一行改动、方向不变)。
This commit is contained in:
AskaEth committed 2026-11-11 19:55:21 +08:00
1 parent 92a3c1bbc8
commit a17f6fb29f
7 files changed
+464 -45

No files matched your search

@@ -20,6 +20,8 @@
use unlucky_i18n::catalog::MISSING;
use unlucky_i18n::{Catalog, Key, Lang};
use crate::pages::layout::source;
use super::super::Texts;
/// 中文界面里允许出现的 ASCII 词:**品牌名与技术标识**。
@@ -341,24 +343,24 @@ fn every_english_literal_in_the_page_sources_is_whitelisted() {
.unwrap_or_else(|| panic!("PAGE_SOURCES 里没有 {name}:拆文件之后忘了登记?"))
};
assert!(
source("instances.rs").contains("Texts::of("),
"实例页没有从 Texts 取词"
source::code_text(source("instances.rs")).contains("Texts::of("),
"实例页没有从 Texts 取词(注释里写不算)"
);
assert!(
source("instances.rs").contains("Header::new(texts.title())"),
source::code_text(source("instances.rs")).contains("Header::new(texts.title())"),
"页头标题必须是词表里的那条(`Header::new` 里写死字符串 = 中文界面上顶着英文标题)"
);
assert!(
source("instances/text.rs").contains("Key::Instances"),
"text.rs 没有引用本族的 key"
source::code_text(source("instances/text.rs")).contains("Key::Instances"),
"text.rs 没有引用本族的 key(注释里写不算)"
);
assert!(
source("app/view/instances.rs").contains("Key::InstancesStage"),
"阶段标签没有走目录"
source::code_text(source("app/view/instances.rs")).contains("Key::InstancesStage"),
"阶段标签没有走目录(注释里写不算)"
);
assert!(
source("instances/launch_args.rs").contains("texts.launch_title()"),
"启动参数区没有走目录"
source::code_text(source("instances/launch_args.rs")).contains("texts.launch_title()"),
"启动参数区没有走目录(注释里写不算)"
);
}