fix(core): LiteLoader 快照仓固定为 repo.mumfrey.com/snapshots(1.10.2 的 repo.url 是 /repo/ 形态,照它会 404)
This commit is contained in:
1 parent
944b1610c8
commit
7ed954f7fa
5 files changed
+164
-12
No files matched your search
@@ -172,3 +172,69 @@ fn stacks_on_forge_and_keeps_the_forge_tweak_class() {
|
||||
.expect("缺 LiteLoader 本体库");
|
||||
assert!(forge_lib < liteloader_lib, "{libraries:?}");
|
||||
}
|
||||
|
||||
/// **新式 args 的父链**:父版本用 `arguments.game`(没有 `minecraftArguments`)。
|
||||
///
|
||||
/// 现实里 LiteLoader 只到 1.12.2,碰不到这种父版本;但「追加语义」是这套路线的准入条件,
|
||||
/// 两种父版本形状都得钉住——否则哪天上游把老版本清单改成新式,我们会静默丢参数。
|
||||
/// 这里用一份**手工夹具**(`--launchTarget forgeclient` 是 Forge 1.13+ 的真实形态)说明:
|
||||
/// 父层参数在前、LiteLoader 的 tweakClass 在后,中间不互相覆盖。
|
||||
#[test]
|
||||
fn new_style_parent_args_are_appended_not_replaced() {
|
||||
const MODERN_PARENT: &str = r#"{
|
||||
"id": "1.12.2-modern-1.0",
|
||||
"inheritsFrom": "1.12.2",
|
||||
"mainClass": "net.minecraft.launchwrapper.Launch",
|
||||
"arguments": {"game": ["--launchTarget", "forgeclient"], "jvm": ["-Dmodern=1"]},
|
||||
"libraries": [{"name": "example:modern:1.0", "url": "https://example.invalid/"}]
|
||||
}"#;
|
||||
|
||||
let temp = TempDir::new("modern-args");
|
||||
let layout = GameLayout::new(temp.path());
|
||||
put_version(&layout, "1.12.2", VANILLA_1122);
|
||||
put_version(&layout, "1.12.2-modern-1.0", MODERN_PARENT);
|
||||
|
||||
let release = liteloader_release("1.12.2-modern-1.0");
|
||||
let plan = LoaderInstallPlan::build(LoaderPlanInput {
|
||||
layout: &layout,
|
||||
release: &release,
|
||||
environment: &Environment::host(),
|
||||
parent_installed: true,
|
||||
})
|
||||
.expect("计划应可组");
|
||||
let engine = engine(temp.path());
|
||||
prefill(&plan.install);
|
||||
let report = block_on(execute(&engine, &plan.install, 4, None)).expect("执行应成功");
|
||||
assert!(report.is_complete(), "{:?}", report.failures(3));
|
||||
|
||||
let mut source = std::collections::BTreeMap::new();
|
||||
source.insert("1.12.2".to_string(), read_version(&layout, "1.12.2"));
|
||||
source.insert(
|
||||
"1.12.2-modern-1.0".to_string(),
|
||||
read_version(&layout, "1.12.2-modern-1.0"),
|
||||
);
|
||||
source.insert(
|
||||
release.version_id.clone(),
|
||||
read_version(&layout, &release.version_id),
|
||||
);
|
||||
let resolved = resolve(&source, &source[&release.version_id]).expect("三层继承应可解析");
|
||||
|
||||
// 父层用的是新式参数:子层没有把 legacy 串写进来,继承后仍然没有。
|
||||
assert!(resolved.minecraft_arguments.is_none());
|
||||
let game = resolved
|
||||
.arguments
|
||||
.as_ref()
|
||||
.expect("arguments")
|
||||
.expand(&Environment::host())
|
||||
.game;
|
||||
let assert_order = |needle: &str| {
|
||||
game.iter()
|
||||
.position(|token| token == needle)
|
||||
.unwrap_or_else(|| panic!("缺 `{needle}`:{game:?}"))
|
||||
};
|
||||
assert!(
|
||||
assert_order("forgeclient")
|
||||
< assert_order("com.mumfrey.liteloader.launch.LiteLoaderTweaker"),
|
||||
"父层参数必须在前:{game:?}"
|
||||
);
|
||||
}
|
||||
Reference in new issue
Block a user