use asar_rust::disk::write_filesystem;
use asar_rust::filesystem::Filesystem;
use std::collections::HashMap;
use std::fs;
use std::path::PathBuf;
fn setup_test_dir() -> PathBuf {
let dir = std::env::temp_dir().join("asar-disk-test");
let _ = fs::remove_dir_all(&dir);
fs::create_dir_all(&dir).unwrap();
dir
}
#[test]
fn test_write_and_read_back() {
let dir = setup_test_dir();
let src = dir.join("src");
fs::create_dir_all(&src).unwrap();
fs::write(src.join("hello.txt"), b"hello world").unwrap();
let dest = dir.join("test.asar");
let mut filesystem = Filesystem::new(&src);
filesystem.insert_file(&src.join("hello.txt"), 11, false, false, None).unwrap();
let files = vec![(src.join("hello.txt"), false)];
let metadata = HashMap::new();
write_filesystem(&dest, &filesystem, &files, &metadata).unwrap();
assert!(dest.exists());
let meta = fs::metadata(&dest).unwrap();
assert!(meta.len() > 8 + 11);
let _ = fs::remove_dir_all(&dir);
}
#[test]
fn test_empty_file_in_archive() {
let dir = setup_test_dir();
let src = dir.join("src");
fs::create_dir_all(&src).unwrap();
fs::write(src.join("empty.txt"), b"").unwrap();
let dest = dir.join("empty.asar");
let mut filesystem = Filesystem::new(&src);
filesystem.insert_file(&src.join("empty.txt"), 0, false, false, None).unwrap();
let files = vec![(src.join("empty.txt"), false)];
let metadata = HashMap::new();
write_filesystem(&dest, &filesystem, &files, &metadata).unwrap();
assert!(dest.exists());
let _ = fs::remove_dir_all(&dir);
}