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