aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorOgulcan Celik <ogulcancelik@gmail.com>2026-04-21 19:11:22 +0300
committerOgulcan Celik <ogulcancelik@gmail.com>2026-04-21 19:11:22 +0300
commit34138bbc3843afb8a89321db0acae797e352b04e (patch)
tree48b1bff66b11d86ad02eb018187b329db1180d46 /tests
parentd45dd05f75efcfd6f0cacfe21de033602ce1b6f4 (diff)
fix: restore headless test reliability on macos
Diffstat (limited to 'tests')
-rw-r--r--tests/multi_client.rs8
-rw-r--r--tests/support/mod.rs8
2 files changed, 14 insertions, 2 deletions
diff --git a/tests/multi_client.rs b/tests/multi_client.rs
index dee24f08..46eca891 100644
--- a/tests/multi_client.rs
+++ b/tests/multi_client.rs
@@ -63,7 +63,13 @@ fn cleanup_spawned_herdr(spawned: SpawnedHerdr, base: PathBuf) {
fn wait_for_child_exit(child: &mut Box<dyn Child + Send + Sync>) {
let _ = child.kill();
- let _ = child.wait();
+ let deadline = Instant::now() + Duration::from_secs(5);
+ while Instant::now() < deadline {
+ if child.try_wait().ok().flatten().is_some() {
+ return;
+ }
+ thread::sleep(Duration::from_millis(25));
+ }
}
fn test_lock() -> MutexGuard<'static, ()> {
diff --git a/tests/support/mod.rs b/tests/support/mod.rs
index 567db154..7342fde3 100644
--- a/tests/support/mod.rs
+++ b/tests/support/mod.rs
@@ -206,7 +206,13 @@ fn iter_worktree_server_pids() -> std::io::Result<Vec<u32>> {
let own_pid = std::process::id();
let mut pids = Vec::new();
- for entry in fs::read_dir("/proc")? {
+ let proc_entries = match fs::read_dir("/proc") {
+ Ok(entries) => entries,
+ Err(err) if err.kind() == std::io::ErrorKind::NotFound => return Ok(Vec::new()),
+ Err(err) => return Err(err),
+ };
+
+ for entry in proc_entries {
let entry = entry?;
let file_name = entry.file_name();
let Some(pid) = file_name.to_str().and_then(|name| name.parse::<u32>().ok()) else {