diff --git a/crates/socket-patch-core/src/patch/copy_tree.rs b/crates/socket-patch-core/src/patch/copy_tree.rs index f49c1df16..1ff6224cc 100644 --- a/crates/socket-patch-core/src/patch/copy_tree.rs +++ b/crates/socket-patch-core/src/patch/copy_tree.rs @@ -655,6 +655,9 @@ mod tests { #[cfg(unix)] #[tokio::test] async fn relax_loop_must_not_traverse_symlinked_root() { + if unsafe { libc::geteuid() } == 0 { + return; // root bypasses permission bits; nothing to test + } let base = tempfile::tempdir().unwrap(); // External target tree with restrictive perms. let target = base.path().join("target"); diff --git a/crates/socket-patch-core/src/patch/redirect/vlt_heal.rs b/crates/socket-patch-core/src/patch/redirect/vlt_heal.rs index 67f5ee023..eddc3c260 100644 --- a/crates/socket-patch-core/src/patch/redirect/vlt_heal.rs +++ b/crates/socket-patch-core/src/patch/redirect/vlt_heal.rs @@ -527,6 +527,9 @@ mod tests { #[tokio::test] async fn an_unremovable_hidden_lock_keeps_every_store_entry() { use std::os::unix::fs::PermissionsExt as _; + if unsafe { libc::geteuid() } == 0 { + return; // root bypasses permission bits; nothing to test + } let tmp = tempfile::tempdir().unwrap(); store(tmp.path(), ID, PRISTINE); hidden(tmp.path(), Some("sha512-UPSTREAM")); diff --git a/crates/socket-patch-core/src/vendor/pypi_poetry.rs b/crates/socket-patch-core/src/vendor/pypi_poetry.rs index 3ac21c6a6..3becf9bdb 100644 --- a/crates/socket-patch-core/src/vendor/pypi_poetry.rs +++ b/crates/socket-patch-core/src/vendor/pypi_poetry.rs @@ -1503,6 +1503,9 @@ content-hash = "4b42a89b7ff7b26511b06acdc458dbd85312e5083db8f212b017482bc68cdd01 #[tokio::test] async fn wire_write_failure_maps_error_and_leaves_lock_untouched() { use std::os::unix::fs::PermissionsExt; + if unsafe { libc::geteuid() } == 0 { + return; // root bypasses permission bits; nothing to test + } let tmp = write_project(LOCK21_DIRECT_REGISTRY, PYPROJECT_DIRECT).await; let p = load_poetry_project(tmp.path()).await.unwrap(); diff --git a/crates/socket-patch-core/src/vendor/pypi_requirements.rs b/crates/socket-patch-core/src/vendor/pypi_requirements.rs index 02db10802..8a071598c 100644 --- a/crates/socket-patch-core/src/vendor/pypi_requirements.rs +++ b/crates/socket-patch-core/src/vendor/pypi_requirements.rs @@ -3153,6 +3153,9 @@ mod tests { #[tokio::test] async fn wire_failure_rolls_back_already_written_files() { use std::os::unix::fs::PermissionsExt as _; + if unsafe { libc::geteuid() } == 0 { + return; // root bypasses permission bits; nothing to test + } let original_root = "six==1.16.0\n-r deps/pinned.txt\n"; let tmp = write_root(original_root).await; tokio::fs::create_dir_all(tmp.path().join("deps"))