From bbcb2713c3a58e34f33a5aa35d608807a0afd7e0 Mon Sep 17 00:00:00 2001 From: starr-openai Date: Tue, 19 May 2026 11:49:43 -0700 Subject: [PATCH] Avoid home-only tempdir tests --- codex-rs/core-skills/src/loader_tests.rs | 26 ++++++++++++++++++++---- codex-rs/secrets/src/lib.rs | 24 +++++++++++++++++----- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/codex-rs/core-skills/src/loader_tests.rs b/codex-rs/core-skills/src/loader_tests.rs index 5ddebaaf0b..fb26db46c6 100644 --- a/codex-rs/core-skills/src/loader_tests.rs +++ b/codex-rs/core-skills/src/loader_tests.rs @@ -139,10 +139,28 @@ fn mark_as_git_repo(dir: &Path) { } fn tempdir_outside_ambient_repo() -> TempDir { - let home = home_dir().expect("home directory should be available"); - tempfile::Builder::new() - .prefix("core-skills-tests-") - .tempdir_in(home) + let mut candidates = Vec::new(); + if let Some(home) = home_dir() { + candidates.push(home); + } + if let Ok(cwd) = std::env::current_dir() { + candidates.extend(cwd.ancestors().map(Path::to_path_buf)); + } + candidates.push(std::env::temp_dir()); + + candidates + .into_iter() + .filter(|candidate| { + !candidate + .ancestors() + .any(|ancestor| ancestor.join(".git").exists()) + }) + .find_map(|candidate| { + tempfile::Builder::new() + .prefix("core-skills-tests-") + .tempdir_in(candidate) + .ok() + }) .expect("tempdir outside ambient repo") } diff --git a/codex-rs/secrets/src/lib.rs b/codex-rs/secrets/src/lib.rs index 2aa90bc059..1ca086b6b1 100644 --- a/codex-rs/secrets/src/lib.rs +++ b/codex-rs/secrets/src/lib.rs @@ -187,13 +187,27 @@ mod tests { use pretty_assertions::assert_eq; fn tempdir_outside_ambient_repo() -> tempfile::TempDir { - let home = std::env::var_os("HOME") + let mut candidates = Vec::new(); + if let Some(home) = std::env::var_os("HOME") .or_else(|| std::env::var_os("USERPROFILE")) .map(PathBuf::from) - .expect("home directory should be available"); - tempfile::Builder::new() - .prefix("secrets-tests-") - .tempdir_in(home) + { + candidates.push(home); + } + if let Ok(cwd) = std::env::current_dir() { + candidates.extend(cwd.ancestors().map(Path::to_path_buf)); + } + candidates.push(std::env::temp_dir()); + + candidates + .into_iter() + .filter(|candidate| get_git_repo_root(candidate).is_none()) + .find_map(|candidate| { + tempfile::Builder::new() + .prefix("secrets-tests-") + .tempdir_in(candidate) + .ok() + }) .expect("tempdir outside ambient repo") }