Skip to content

Commit 83bd4bd

Browse files
authored
Make the flock tests more robust (#1499)
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.
1 parent 7b32af6 commit 83bd4bd

File tree

1 file changed

+7
-6
lines changed

1 file changed

+7
-6
lines changed

tests/fs/flock.rs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,29 +3,30 @@
33
fn test_flock() {
44
use rustix::fs::{flock, openat, FlockOperation, Mode, OFlags, CWD};
55

6-
let f = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap();
6+
let tf = tempfile::NamedTempFile::new().unwrap();
7+
let f = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap();
78
flock(&f, FlockOperation::LockExclusive).unwrap();
89
flock(&f, FlockOperation::Unlock).unwrap();
9-
let g = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap();
10+
let g = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap();
1011
flock(&g, FlockOperation::LockExclusive).unwrap();
1112
flock(&g, FlockOperation::Unlock).unwrap();
1213
drop(f);
1314
drop(g);
1415

15-
let f = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap();
16+
let f = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap();
1617
flock(&f, FlockOperation::LockShared).unwrap();
17-
let g = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap();
18+
let g = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap();
1819
flock(&g, FlockOperation::LockShared).unwrap();
1920
flock(&f, FlockOperation::Unlock).unwrap();
2021
flock(&g, FlockOperation::Unlock).unwrap();
2122
drop(f);
2223
drop(g);
2324

24-
let f = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap();
25+
let f = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap();
2526
flock(&f, FlockOperation::LockShared).unwrap();
2627
flock(&f, FlockOperation::LockExclusive).unwrap();
2728
flock(&f, FlockOperation::Unlock).unwrap();
28-
let g = openat(CWD, "Cargo.toml", OFlags::RDONLY, Mode::empty()).unwrap();
29+
let g = openat(CWD, tf.path(), OFlags::RDONLY, Mode::empty()).unwrap();
2930
flock(&g, FlockOperation::LockShared).unwrap();
3031
flock(&g, FlockOperation::LockExclusive).unwrap();
3132
flock(&g, FlockOperation::Unlock).unwrap();

0 commit comments

Comments
 (0)