use filelock::FileLock;
#[test]
fn test_basic_lock_and_unlock() {
let filename = "test_basic.lock";
let mut lock = FileLock::new(filename);
let guard = lock.lock().unwrap();
guard.unlock().unwrap();
let _guard = lock.lock().unwrap();
}
#[test]
fn test_raii_automatic_unlock() {
let filename = "test_raii.lock";
let mut lock = FileLock::new(filename);
{
let _guard = lock.lock().unwrap();
}
let _guard = lock.lock().unwrap();
}
#[test]
fn test_multiple_instances_same_file() {
let filename = "test_instances.lock";
let mut lock1 = FileLock::new(filename);
let mut lock2 = FileLock::new(filename);
let guard1 = lock1.lock().unwrap();
drop(guard1);
let _guard2 = lock2.lock().unwrap();
}
#[test]
fn test_lock_file_creation_and_cleanup() {
let filename = "test_creation.lock";
let _ = std::fs::remove_file(filename);
{
let mut lock = FileLock::new(filename);
let _guard = lock.lock().unwrap();
assert!(
std::path::Path::new(filename).exists(),
"Lock file should exist while locked"
);
}
assert!(
!std::path::Path::new(filename).exists(),
"Lock file should be deleted after guard is dropped"
);
}