Skip to content

Commit 34c44ff

Browse files
committed
Propagate thread creation error in flock
1 parent c26438e commit 34c44ff

2 files changed

Lines changed: 11 additions & 10 deletions

File tree

src/flock.rs

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
use crate::error::Result;
12
use once_cell::sync::OnceCell;
23
use std::fs::{self, File, OpenOptions};
34
use std::io;
@@ -32,11 +33,11 @@ enum FileLock {
3233
}
3334

3435
impl Lock {
35-
pub fn acquire(path: impl AsRef<Path>) -> Self {
36-
Lock {
36+
pub fn acquire(path: impl AsRef<Path>) -> Result<Self> {
37+
Ok(Lock {
3738
intraprocess_guard: Guard::acquire(),
38-
lockfile: FileLock::acquire(path),
39-
}
39+
lockfile: FileLock::acquire(path)?,
40+
})
4041
}
4142
}
4243

@@ -51,18 +52,18 @@ impl Guard {
5152
}
5253

5354
impl FileLock {
54-
fn acquire(path: impl AsRef<Path>) -> Self {
55+
fn acquire(path: impl AsRef<Path>) -> Result<Self> {
5556
let path = path.as_ref().to_owned();
5657
let lockfile = match create(&path) {
57-
None => return FileLock::NotLocked,
58+
None => return Ok(FileLock::NotLocked),
5859
Some(lockfile) => lockfile,
5960
};
6061
let done = Arc::new(AtomicBool::new(false));
61-
thread::spawn({
62+
thread::Builder::new().spawn({
6263
let done = Arc::clone(&done);
6364
move || poll(lockfile, done)
64-
});
65-
FileLock::Locked { path, done }
65+
})?;
66+
Ok(FileLock::Locked { path, done })
6667
}
6768
}
6869

src/run.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ impl Runner {
5252

5353
let (project, _lock) = (|| {
5454
let mut project = self.prepare(&tests)?;
55-
let lock = Lock::acquire(path!(project.dir / ".lock"));
55+
let lock = Lock::acquire(path!(project.dir / ".lock"))?;
5656
self.write(&mut project)?;
5757
Ok((project, lock))
5858
})()

0 commit comments

Comments
 (0)