use easy_fuser::prelude::*;
use easy_fuser::templates::{DefaultFuseHandler, mirror_fs::*};
use std::path::PathBuf;
use std::thread;
use std::time::Duration;
fn mount_fs<FS: MirrorFsTrait>() {
unsafe { std::env::set_var("RUST_BACKTRACE", "full") };
let _ = env_logger::builder()
.is_test(true)
.filter_level(log::LevelFilter::Trace)
.try_init();
let mount_dir = PathBuf::from("/tmp/easy_fuser_mirror_fs_mount");
let source_dir = PathBuf::from("/tmp/easy_fuser_mirror_fs_source");
let _ = std::process::Command::new("fusermount")
.arg("-u")
.arg(&mount_dir)
.status();
let _ = std::fs::create_dir(&mount_dir);
if !source_dir.exists() {
let _ = std::fs::create_dir(&source_dir);
}
println!("Mount point: {:?}", mount_dir);
println!("Source directory: {:?}", source_dir);
let fs = FS::new(source_dir, DefaultFuseHandler::new());
println!("Mounting MirrorFs...");
#[cfg(feature = "serial")]
let mount_result = mount(fs, &mount_dir, &[]);
#[cfg(not(feature = "serial"))]
let mount_result = mount(fs, &mount_dir, &[], 4);
match mount_result {
Ok(_) => {
println!("MirrorFs mounted successfully. Press Ctrl+C to unmount and exit.");
loop {
thread::sleep(Duration::from_secs(1));
}
}
Err(e) => {
eprintln!("Failed to mount MirrorFs: {:?}", e);
}
}
println!("Exiting debug mount.");
}
#[test]
#[ignore]
fn mount_mirror_fs() {
mount_fs::<MirrorFs>();
}
#[test]
#[ignore]
fn mount_mirror_fs_read_only() {
mount_fs::<MirrorFsReadOnly>();
}