use filelock::FileLock;
#[test]
fn test_invalid_path_locking() {
let mut lock = FileLock::new("/invalid/path/that/does/not/exist/test.lock");
let result = lock.lock();
assert!(result.is_err(), "Locking on invalid path should fail");
}
#[cfg(unix)]
#[test]
fn test_file_permission_denied() {
use std::fs::File;
use std::os::unix::fs::PermissionsExt;
let filename = "test_permissions.lock";
File::create(filename).unwrap();
std::fs::set_permissions(filename, std::fs::Permissions::from_mode(0o000)).unwrap();
let mut lock = FileLock::new(filename);
let result = lock.lock();
assert!(
result.is_err(),
"Locking on file with no permissions should fail"
);
std::fs::set_permissions(filename, std::fs::Permissions::from_mode(0o644)).unwrap();
std::fs::remove_file(filename).unwrap();
}
#[test]
fn test_error_recovery() {
let filename = "test_error_recovery.lock";
let mut lock = FileLock::new(filename);
let guard1 = lock.lock().unwrap();
drop(guard1);
let _guard2 = lock.lock().unwrap();
}