fix(m157): r4 修复未收集的周快照用例 + 两处 clippy 红,并补整环回归(复审 p1-2)
P1-1 crates/core/src/launch/overrides/tests.rs:modded_weekly_snapshot_needs_the_root_version_for_the_gate 原先写在 backend_allowed_combines_capability_and_threshold 函数体内(unnameable_test_items,永不执行)。移到模块层;移动后首次真正执行暴露出用例自身的 EmptyJavaPath(AdapterOptions 默认 java 为空),补 JavaSelection 后绿。--list 现在 10 条 launch::overrides::tests::(含该名字)。
P1-2 clippy -D warnings 两处:cli/commands/instance_launch.rs needless_borrows_for_generic_args(去 &);presenter/mock_data.rs items_after_test_module(mock_launch 移到 mod tests 之前)。
P3-a 新增整环回归 app/tests/instances_save_loop.rs:真 Message → dispatch → 后端回错误 Toast → pump → refresh_view → sync_launch_form,断言 4g 草稿与脏标记都还在。
P3-b LaunchForm::matches 内存改按数值比(解析失败退文本),补 memory_is_compared_by_value_not_by_text(04096 / +4096 / 清空三档)。
P3-c 门槛文案不再在 catalog 硬编码 26.2:InstancesLaunchBackendGated 改用 {min} 占位符,页面从 LaunchFacts::min_version(← core GRAPHICS_BACKEND_MIN_VERSION)代入;金表同步;灰化态截图重拍。
This commit is contained in:
1 parent
211e07b470
commit
ee67965b9b
11 files changed
+285
-87
No files matched your search
@@ -295,59 +295,62 @@ fn backend_allowed_combines_capability_and_threshold() {
|
||||
// 周快照:看库表。
|
||||
assert!(backend_allowed(&GameVersion::parse("26w14a"), &with_vulkan));
|
||||
assert!(!backend_allowed(&GameVersion::parse("26w14a"), &without));
|
||||
}
|
||||
|
||||
/// **周快照 + 加载器**(M157 r3 复审 P2-1):装配门限必须按**继承链的 MC 根版本**判。
|
||||
///
|
||||
/// 造一个 Fabric 实例(id `26w14a-fabric-0.16.5`,继承周快照 `26w14a`),库表里有
|
||||
/// `org.lwjgl:lwjgl-vulkan`:`game_version = Some("26w14a")` ⇒ 命令行带 `--graphicsBackend vulkan`;
|
||||
/// 退回到「拿带加载器后缀的 version_id 当游戏版本」⇒ `GameVersion::is_weekly_snapshot`
|
||||
/// 的 6 字符形态认不出来,参数被跳过(**负向锚点**:这正是复审复现出来的静默丢失)。
|
||||
///
|
||||
/// 抓得住:adapter 的 `game_version` 传错(调用方又回退成 `None`)——周快照 loader 实例
|
||||
/// 「UI 说可用、命令行里没有」。
|
||||
/// 抓不住:两个调用点自己有没有传(那由 presenter `host::launch::tests` 与
|
||||
/// CLI `snapshot::tests` 各自的根版本断言守)。
|
||||
#[test]
|
||||
fn modded_weekly_snapshot_needs_the_root_version_for_the_gate() {
|
||||
let version_id = "26w14a-fabric-0.16.5";
|
||||
let libraries = [LibraryInput::new(
|
||||
"C:/mc/libraries/org/lwjgl/lwjgl-vulkan/3.4.3/lwjgl-vulkan-3.4.3.jar",
|
||||
"org.lwjgl:lwjgl-vulkan:3.4.3",
|
||||
)];
|
||||
/// **周快照 + 加载器**(M157 r3 复审 P2-1):装配门限必须按**继承链的 MC 根版本**判。
|
||||
///
|
||||
/// 造一个 Fabric 实例(id `26w14a-fabric-0.16.5`,继承周快照 `26w14a`),库表里有
|
||||
/// `org.lwjgl:lwjgl-vulkan`:`game_version = Some("26w14a")` ⇒ 命令行带 `--graphicsBackend vulkan`;
|
||||
/// 退回到「拿带加载器后缀的 version_id 当游戏版本」⇒ `GameVersion::is_weekly_snapshot`
|
||||
/// 的 6 字符形态认不出来,参数被跳过(**负向锚点**:这正是复审复现出来的静默丢失)。
|
||||
///
|
||||
/// 抓得住:adapter 的 `game_version` 传错(调用方又回退成 `None`)——周快照 loader 实例
|
||||
/// 「UI 说可用、命令行里没有」。
|
||||
/// 抓不住:两个调用点自己有没有传(那由 presenter `host::launch::tests` 与
|
||||
/// CLI `snapshot::tests` 各自的根版本断言守)。
|
||||
#[test]
|
||||
fn modded_weekly_snapshot_needs_the_root_version_for_the_gate() {
|
||||
let version_id = "26w14a-fabric-0.16.5";
|
||||
let libraries = [LibraryInput::new(
|
||||
"C:/mc/libraries/org/lwjgl/lwjgl-vulkan/3.4.3/lwjgl-vulkan-3.4.3.jar",
|
||||
"org.lwjgl:lwjgl-vulkan:3.4.3",
|
||||
)];
|
||||
|
||||
for (game_version, expected) in [(Some("26w14a"), true), (None, false)] {
|
||||
let snapshot = SnapshotInput {
|
||||
game_version,
|
||||
libraries: &libraries,
|
||||
primary_jar: PathBuf::from("C:/mc/versions/x/x.jar"),
|
||||
..SnapshotInput::minimal(version_id, "net.minecraft.client.main.Main")
|
||||
};
|
||||
let options = AdapterOptions {
|
||||
check_classpath: false,
|
||||
language: "zh-CN".to_string(),
|
||||
..AdapterOptions::default()
|
||||
};
|
||||
let mut out = build_request(&snapshot, options).request;
|
||||
let resolved = resolve(
|
||||
Some(&LaunchOverrides {
|
||||
graphics_backend: Some(GraphicsBackend::Vulkan),
|
||||
..LaunchOverrides::default()
|
||||
}),
|
||||
&GlobalLaunchDefaults::default(),
|
||||
);
|
||||
apply(&mut out, &resolved);
|
||||
let command = assemble(&out, &ctx()).expect("组装应成功");
|
||||
let sent = command.args.iter().any(|arg| arg == "--graphicsBackend");
|
||||
assert_eq!(
|
||||
sent, expected,
|
||||
"game_version={game_version:?} 时是否下发不对:{:?}",
|
||||
command.args
|
||||
);
|
||||
let skipped = command
|
||||
.warnings
|
||||
.iter()
|
||||
.any(|warning| matches!(warning, AssemblyWarning::GraphicsBackendSkipped { .. }));
|
||||
assert_eq!(skipped, !expected, "跳过与否必须与下发相反(不静默)");
|
||||
}
|
||||
for (game_version, expected) in [(Some("26w14a"), true), (None, false)] {
|
||||
let snapshot = SnapshotInput {
|
||||
game_version,
|
||||
libraries: &libraries,
|
||||
primary_jar: PathBuf::from("C:/mc/versions/x/x.jar"),
|
||||
..SnapshotInput::minimal(version_id, "net.minecraft.client.main.Main")
|
||||
};
|
||||
let options = AdapterOptions {
|
||||
// `assemble` 要求 Java 可执行文件非空(`EmptyJavaPath`);adapter 默认是空路径,
|
||||
// 所以这里显式给一个(原来这条用例从没被执行过,r4 把它提到模块层才暴露出来)。
|
||||
java: JavaSelection::new("C:/java/bin/java.exe", 21, 64),
|
||||
check_classpath: false,
|
||||
language: "zh-CN".to_string(),
|
||||
..AdapterOptions::default()
|
||||
};
|
||||
let mut out = build_request(&snapshot, options).request;
|
||||
let resolved = resolve(
|
||||
Some(&LaunchOverrides {
|
||||
graphics_backend: Some(GraphicsBackend::Vulkan),
|
||||
..LaunchOverrides::default()
|
||||
}),
|
||||
&GlobalLaunchDefaults::default(),
|
||||
);
|
||||
apply(&mut out, &resolved);
|
||||
let command = assemble(&out, &ctx()).expect("组装应成功");
|
||||
let sent = command.args.iter().any(|arg| arg == "--graphicsBackend");
|
||||
assert_eq!(
|
||||
sent, expected,
|
||||
"game_version={game_version:?} 时是否下发不对:{:?}",
|
||||
command.args
|
||||
);
|
||||
let skipped = command
|
||||
.warnings
|
||||
.iter()
|
||||
.any(|warning| matches!(warning, AssemblyWarning::GraphicsBackendSkipped { .. }));
|
||||
assert_eq!(skipped, !expected, "跳过与否必须与下发相反(不静默)");
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user