48 lines
1.8 KiB
Rust
48 lines
1.8 KiB
Rust
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
use molotov_bootstrap::cleaner::Cleaner;
|
|
use molotov_bootstrap::launcher::{LaunchOptions, Launcher};
|
|
use molotov_bootstrap::region::ServerRegion;
|
|
use tempfile::tempdir;
|
|
|
|
#[test]
|
|
fn test_cleaner_fail_safe_when_active_version_unspecified() {
|
|
let temp = tempdir().unwrap();
|
|
let versions_dir = temp.path().join("versions");
|
|
let downloads_dir = temp.path().join("downloads");
|
|
std::fs::create_dir_all(&versions_dir).unwrap();
|
|
|
|
let ver_dir = versions_dir.join("version-real-12345");
|
|
std::fs::create_dir_all(&ver_dir).unwrap();
|
|
|
|
let cleaner = Cleaner::new(versions_dir, downloads_dir);
|
|
// If active_version_guid is empty or unknown, cleaner must NOT delete installed versions
|
|
let report = cleaner.clean_stale_data("").unwrap();
|
|
assert_eq!(report.purged_versions.len(), 0);
|
|
assert!(ver_dir.exists(), "Version directory must not be deleted when active version is unspecified");
|
|
}
|
|
|
|
#[test]
|
|
fn test_launcher_prepare_does_not_poison_watchdog_state() {
|
|
let temp = tempdir().unwrap();
|
|
let root = temp.path().to_path_buf();
|
|
|
|
let launcher = Launcher::new(root);
|
|
let options = LaunchOptions {
|
|
place_id: None,
|
|
safe_mode: false,
|
|
region: ServerRegion::Auto,
|
|
instance_id: "default".to_string(),
|
|
fps_cap: Some(144),
|
|
vram_skip_mips: true,
|
|
};
|
|
|
|
// Calling prepare_launch 3 times must NOT trigger Safe Mode
|
|
let plan1 = launcher.prepare_launch(options.clone()).unwrap();
|
|
assert!(!plan1.is_safe_mode);
|
|
|
|
let plan2 = launcher.prepare_launch(options.clone()).unwrap();
|
|
assert!(!plan2.is_safe_mode);
|
|
|
|
let plan3 = launcher.prepare_launch(options).unwrap();
|
|
assert!(!plan3.is_safe_mode, "Static preparation must not poison watchdog into Safe Mode");
|
|
}
|