From c98b0585a70565ea8d0befc4f189ca16e86bde0d Mon Sep 17 00:00:00 2001 From: Alan Somers Date: Sat, 16 Aug 2025 18:54:22 -0600 Subject: [PATCH] Make the flock tests more robust Instead of attempting to lock Cargo.toml, use a temporary file. This fixes test failures that result from the source file system not supporting flock, like some NFS file systems. --- tests/fs/flock.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/tests/fs/flock.rs b/tests/fs/flock.rs index c90da58fb..537059492 100644 --- a/tests/fs/flock.rs +++ b/tests/fs/flock.rs @@ -3,29 +3,30 @@ fn test_flock() { use rustix::fs::{flock, openat, FlockOperation, Mode, OFlags, CWD}; - let f = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap(); + let tf = tempfile::NamedTempFile::new().unwrap(); + let f = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap(); flock(&f, FlockOperation::LockExclusive).unwrap(); flock(&f, FlockOperation::Unlock).unwrap(); - let g = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap(); + let g = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap(); flock(&g, FlockOperation::LockExclusive).unwrap(); flock(&g, FlockOperation::Unlock).unwrap(); drop(f); drop(g); - let f = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap(); + let f = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap(); flock(&f, FlockOperation::LockShared).unwrap(); - let g = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap(); + let g = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap(); flock(&g, FlockOperation::LockShared).unwrap(); flock(&f, FlockOperation::Unlock).unwrap(); flock(&g, FlockOperation::Unlock).unwrap(); drop(f); drop(g); - let f = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap(); + let f = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap(); flock(&f, FlockOperation::LockShared).unwrap(); flock(&f, FlockOperation::LockExclusive).unwrap(); flock(&f, FlockOperation::Unlock).unwrap(); - let g = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap(); + let g = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap(); flock(&g, FlockOperation::LockShared).unwrap(); flock(&g, FlockOperation::LockExclusive).unwrap(); flock(&g, FlockOperation::Unlock).unwrap();