This repository has been archived on 2026-10-10. You can view files and clone it, but cannot push or open issues or pull requests.
molotov/crates/molotov-bootstrap/tests/final_mile_fixes_test.rs

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");
}