From 7e572c08b04d43279325567e1d94db26cfd8a311 Mon Sep 17 00:00:00 2001 From: Andrew Walbran Date: Thu, 30 Nov 2023 16:30:49 +0000 Subject: [PATCH 1/2] Fix flaky test. FD 3 might not be used already. --- src/lib.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index fbeb20c..11686f8 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -296,7 +296,7 @@ mod tests { let file = File::open("testdata/file1.txt").unwrap(); let file_fd: OwnedFd = file.into(); let raw_file_fd = file_fd.as_raw_fd(); - assert!(raw_file_fd > 3); + assert!(raw_file_fd > 2); command.preserved_fds(vec![file_fd]); let output = command.output().unwrap(); @@ -419,7 +419,7 @@ mod tests { for entry in dir { let entry = entry.unwrap(); let fd: RawFd = entry.file_name().to_str().unwrap().parse().unwrap(); - if fd > 3 { + if fd > 2 { close(fd).unwrap(); } } From a5ae0bdb062f9fea91e4514d03f89372210a6ef1 Mon Sep 17 00:00:00 2001 From: Andrew Walbran Date: Thu, 30 Nov 2023 16:35:00 +0000 Subject: [PATCH 2/2] Don't close the directory while we're still reading it. --- src/lib.rs | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 11686f8..f4cf066 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -416,11 +416,16 @@ mod tests { /// This is necessary because GitHub Actions opens a bunch of others for some reason. fn close_excess_fds() { let dir = read_dir("/proc/self/fd").unwrap(); - for entry in dir { - let entry = entry.unwrap(); - let fd: RawFd = entry.file_name().to_str().unwrap().parse().unwrap(); + let fds: Vec = dir + .map(|entry| { + let entry = entry.unwrap(); + entry.file_name().to_str().unwrap().parse().unwrap() + }) + .collect(); + for fd in fds { if fd > 2 { - close(fd).unwrap(); + // Ignore errors, as the file may already be closed. + let _ = close(fd); } } }