diff options
Diffstat (limited to 'vendor/fd-lock/tests')
-rw-r--r-- | vendor/fd-lock/tests/test.rs | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/vendor/fd-lock/tests/test.rs b/vendor/fd-lock/tests/test.rs new file mode 100644 index 000000000..35fd5b33b --- /dev/null +++ b/vendor/fd-lock/tests/test.rs @@ -0,0 +1,33 @@ +use fd_lock::RwLock; +use std::fs::File; +use std::io::ErrorKind; + +use tempfile::tempdir; + +#[test] +fn double_read_lock() { + let dir = tempdir().unwrap(); + let path = dir.path().join("lockfile"); + + let l0 = RwLock::new(File::create(&path).unwrap()); + let l1 = RwLock::new(File::open(path).unwrap()); + + let _g0 = l0.try_read().unwrap(); + let _g1 = l1.try_read().unwrap(); +} + +#[test] +fn double_write_lock() { + let dir = tempdir().unwrap(); + let path = dir.path().join("lockfile"); + + let mut l0 = RwLock::new(File::create(&path).unwrap()); + let mut l1 = RwLock::new(File::open(path).unwrap()); + + let g0 = l0.try_write().unwrap(); + + let err = l1.try_write().unwrap_err(); + assert!(matches!(err.kind(), ErrorKind::WouldBlock)); + + drop(g0); +} |