35 lines
1.5 KiB
Rust
35 lines
1.5 KiB
Rust
// SPDX-License-Identifier: GPL-3.0-or-later
|
|
use molotov_bootstrap::cleaner::Cleaner;
|
|
use tempfile::tempdir;
|
|
|
|
#[test]
|
|
fn test_cleaner_purges_stale_versions_and_part_files() {
|
|
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();
|
|
std::fs::create_dir_all(&downloads_dir).unwrap();
|
|
|
|
// Create current version and stale version
|
|
let current_ver = versions_dir.join("version-current");
|
|
let stale_ver = versions_dir.join("version-stale-1");
|
|
std::fs::create_dir_all(¤t_ver).unwrap();
|
|
std::fs::create_dir_all(&stale_ver).unwrap();
|
|
std::fs::write(current_ver.join("libroblox.so"), b"ACTIVE_LIB").unwrap();
|
|
std::fs::write(stale_ver.join("libroblox.so"), b"STALE_LIB").unwrap();
|
|
|
|
// Create leftover .part file
|
|
let part_file = downloads_dir.join("download.apk.part");
|
|
std::fs::write(&part_file, b"DANGLING_PART").unwrap();
|
|
|
|
let cleaner = Cleaner::new(versions_dir, downloads_dir);
|
|
let report = cleaner.clean_stale_data("version-current").unwrap();
|
|
|
|
assert_eq!(report.purged_versions.len(), 1);
|
|
assert_eq!(report.purged_versions[0], "version-stale-1");
|
|
assert_eq!(report.purged_parts_count, 1);
|
|
assert!(report.reclaimed_bytes > 0);
|
|
assert!(!stale_ver.exists(), "Stale version must be deleted");
|
|
assert!(!part_file.exists(), "Dangling .part file must be deleted");
|
|
assert!(current_ver.exists(), "Active version must NOT be deleted");
|
|
}
|