From 001be622133f8f4925d65a925837afbb6176488a Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 16:25:49 -0700 Subject: [PATCH 1/7] Run `cargo fmt`. --- cap-fs-ext/src/dir_entry_ext.rs | 2 +- cap-primitives/src/fs/mod.rs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cap-fs-ext/src/dir_entry_ext.rs b/cap-fs-ext/src/dir_entry_ext.rs index 59abf6fb..a78272e7 100644 --- a/cap-fs-ext/src/dir_entry_ext.rs +++ b/cap-fs-ext/src/dir_entry_ext.rs @@ -1,6 +1,6 @@ -use cap_primitives::fs::Metadata; #[cfg(windows)] use cap_primitives::fs::_WindowsDirEntryExt; +use cap_primitives::fs::Metadata; use std::io; /// Extension trait for `DirEntry`. diff --git a/cap-primitives/src/fs/mod.rs b/cap-primitives/src/fs/mod.rs index 62ef8c9c..2b77fab7 100644 --- a/cap-primitives/src/fs/mod.rs +++ b/cap-primitives/src/fs/mod.rs @@ -64,16 +64,16 @@ pub use canonicalize::canonicalize; pub use copy::copy; pub use create_dir::create_dir; pub use dir_builder::*; -pub use dir_entry::DirEntry; #[cfg(windows)] pub use dir_entry::_WindowsDirEntryExt; +pub use dir_entry::DirEntry; pub use dir_options::DirOptions; pub use file::FileExt; +#[cfg(windows)] +pub use file_type::_WindowsFileTypeExt; pub use file_type::FileType; #[cfg(any(unix, target_os = "vxworks", all(windows, windows_file_type_ext)))] pub use file_type::FileTypeExt; -#[cfg(windows)] -pub use file_type::_WindowsFileTypeExt; pub use follow_symlinks::FollowSymlinks; pub use hard_link::hard_link; pub use is_file_read_write::is_file_read_write; From eff1c35845dd3704720082d0e54e4c8667cf1ee7 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 16:30:04 -0700 Subject: [PATCH 2/7] Modify the `connect_error` test to accept `NetworkUnreachable` errors. These errors were observed under FreeBSD in CI. --- tests/cap-net-ext-tcp.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tests/cap-net-ext-tcp.rs b/tests/cap-net-ext-tcp.rs index 4839c168..01baddff 100644 --- a/tests/cap-net-ext-tcp.rs +++ b/tests/cap-net-ext-tcp.rs @@ -52,7 +52,8 @@ fn connect_error() { || e.kind() == ErrorKind::InvalidInput || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable - || e.kind() == ErrorKind::TimedOut, + || e.kind() == ErrorKind::TimedOut + || e.kind() == ErrorKind::NetworkUnreachable, "bad error: {} {:?}", e, e.kind() From ba1aeb3434eedcda81275c3ecfbcfbfbe533d620 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 16:34:53 -0700 Subject: [PATCH 3/7] Fix the other `connect_error` tests too. --- tests/cap-net-ext-tcp-split.rs | 3 ++- tests/net-tcp.rs | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/tests/cap-net-ext-tcp-split.rs b/tests/cap-net-ext-tcp-split.rs index db279ded..efd890b0 100644 --- a/tests/cap-net-ext-tcp-split.rs +++ b/tests/cap-net-ext-tcp-split.rs @@ -62,7 +62,8 @@ fn connect_error() { || e.kind() == ErrorKind::InvalidInput || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable - || e.kind() == ErrorKind::TimedOut, + || e.kind() == ErrorKind::TimedOut + || e.kind() == ErrorKind::NetowkrUnreachable, "bad error: {} {:?}", e, e.kind() diff --git a/tests/net-tcp.rs b/tests/net-tcp.rs index 699050dd..11bc4c2f 100644 --- a/tests/net-tcp.rs +++ b/tests/net-tcp.rs @@ -49,7 +49,8 @@ fn connect_error() { || e.kind() == ErrorKind::InvalidInput || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable - || e.kind() == ErrorKind::TimedOut, + || e.kind() == ErrorKind::TimedOut + || e.kind() == ErrorKind::NetowkrUnreachable, "bad error: {} {:?}", e, e.kind() From 8703ec2a832ac98e85c97ecb8ea6d81024dbd9e7 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 16:52:15 -0700 Subject: [PATCH 4/7] typos --- tests/cap-net-ext-tcp-split.rs | 2 +- tests/net-tcp.rs | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/cap-net-ext-tcp-split.rs b/tests/cap-net-ext-tcp-split.rs index efd890b0..b7932507 100644 --- a/tests/cap-net-ext-tcp-split.rs +++ b/tests/cap-net-ext-tcp-split.rs @@ -63,7 +63,7 @@ fn connect_error() { || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut - || e.kind() == ErrorKind::NetowkrUnreachable, + || e.kind() == ErrorKind::NetworkUnreachable, "bad error: {} {:?}", e, e.kind() diff --git a/tests/net-tcp.rs b/tests/net-tcp.rs index 11bc4c2f..bfa17b34 100644 --- a/tests/net-tcp.rs +++ b/tests/net-tcp.rs @@ -50,7 +50,7 @@ fn connect_error() { || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut - || e.kind() == ErrorKind::NetowkrUnreachable, + || e.kind() == ErrorKind::NetworkUnreachable, "bad error: {} {:?}", e, e.kind() From fcc1b7b55da974254fdc6cd2b9ac99721c4b25a7 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 18:06:46 -0700 Subject: [PATCH 5/7] Fix a test error message expectations on FreeBSD. --- tests/fs_additional.rs | 38 +++++++++++++++++++++++++------------- 1 file changed, 25 insertions(+), 13 deletions(-) diff --git a/tests/fs_additional.rs b/tests/fs_additional.rs index 64716819..bc220df0 100644 --- a/tests/fs_additional.rs +++ b/tests/fs_additional.rs @@ -1386,17 +1386,29 @@ fn dotdot_slashdot_at_end_of_symlink_all_inside_dir() { fn statat_slash() { let tmpdir = tmpdir(); - error_contains!(tmpdir.metadata("/"), "a path led outside of the filesystem"); - error_contains!( - tmpdir.metadata("/foo"), - "a path led outside of the filesystem" - ); - error_contains!( - tmpdir.symlink_metadata("/"), - "a path led outside of the filesyste" - ); - error_contains!( - tmpdir.symlink_metadata("/foo"), - "a path led outside of the filesyste" - ); + // FreeBSD 14+ uses `O_RESOLVE_BENEATH` which issues different errors. + #[cfg(target_os = "freebsd")] + { + error_contains!(tmpdir.metadata("/"), "Capabilities insufficient"); + error_contains!(tmpdir.metadata("/foo"), "Capabilities insufficient"); + error_contains!(tmpdir.symlink_metadata("/"), "Capabilities insufficient"); + error_contains!(tmpdir.symlink_metadata("/foo"), "Capabilities insufficient"); + } + + #[cfg(not(target_os = "freebsd"))] + { + error_contains!(tmpdir.metadata("/"), "a path led outside of the filesystem"); + error_contains!( + tmpdir.metadata("/foo"), + "a path led outside of the filesystem" + ); + error_contains!( + tmpdir.symlink_metadata("/"), + "a path led outside of the filesyste" + ); + error_contains!( + tmpdir.symlink_metadata("/foo"), + "a path led outside of the filesyste" + ); + } } From 6c23e67ccfe513ca73aaa83f3a503033f73218c0 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 18:24:18 -0700 Subject: [PATCH 6/7] Fix MSRV compilation. --- tests/cap-net-ext-tcp-split.rs | 3 ++- tests/cap-net-ext-tcp.rs | 3 ++- tests/net-tcp.rs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/cap-net-ext-tcp-split.rs b/tests/cap-net-ext-tcp-split.rs index b7932507..6e8f5962 100644 --- a/tests/cap-net-ext-tcp-split.rs +++ b/tests/cap-net-ext-tcp-split.rs @@ -63,7 +63,8 @@ fn connect_error() { || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut - || e.kind() == ErrorKind::NetworkUnreachable, + // Rust >=1.83 adds `ErrorKind::NetworkUnreachable`. + || e.to_string().contains("network unreachable"), "bad error: {} {:?}", e, e.kind() diff --git a/tests/cap-net-ext-tcp.rs b/tests/cap-net-ext-tcp.rs index 01baddff..39ba5be6 100644 --- a/tests/cap-net-ext-tcp.rs +++ b/tests/cap-net-ext-tcp.rs @@ -53,7 +53,8 @@ fn connect_error() { || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut - || e.kind() == ErrorKind::NetworkUnreachable, + // Rust >=1.83 adds `ErrorKind::NetworkUnreachable`. + || e.to_string().contains("network unreachable"), "bad error: {} {:?}", e, e.kind() diff --git a/tests/net-tcp.rs b/tests/net-tcp.rs index bfa17b34..d654474b 100644 --- a/tests/net-tcp.rs +++ b/tests/net-tcp.rs @@ -50,7 +50,8 @@ fn connect_error() { || e.kind() == ErrorKind::AddrInUse || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut - || e.kind() == ErrorKind::NetworkUnreachable, + // Rust >=1.83 adds `ErrorKind::NetworkUnreachable`. + || e.to_string().contains("network unreachable"), "bad error: {} {:?}", e, e.kind() From ed1ee72230b01d2967b06bd8c4e4db22a27de682 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Mon, 17 Aug 2026 18:30:10 -0700 Subject: [PATCH 7/7] Fix FreeBSD 15 error message. --- tests/cap-net-ext-tcp-split.rs | 3 ++- tests/cap-net-ext-tcp.rs | 3 ++- tests/net-tcp.rs | 3 ++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/tests/cap-net-ext-tcp-split.rs b/tests/cap-net-ext-tcp-split.rs index 6e8f5962..17fdae36 100644 --- a/tests/cap-net-ext-tcp-split.rs +++ b/tests/cap-net-ext-tcp-split.rs @@ -64,7 +64,8 @@ fn connect_error() { || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut // Rust >=1.83 adds `ErrorKind::NetworkUnreachable`. - || e.to_string().contains("network unreachable"), + || e.to_string().contains("network unreachable") + || e.to_string().contains("Network is unreachable"), "bad error: {} {:?}", e, e.kind() diff --git a/tests/cap-net-ext-tcp.rs b/tests/cap-net-ext-tcp.rs index 39ba5be6..b7ddd5a7 100644 --- a/tests/cap-net-ext-tcp.rs +++ b/tests/cap-net-ext-tcp.rs @@ -54,7 +54,8 @@ fn connect_error() { || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut // Rust >=1.83 adds `ErrorKind::NetworkUnreachable`. - || e.to_string().contains("network unreachable"), + || e.to_string().contains("network unreachable") + || e.to_string().contains("Network is unreachable"), "bad error: {} {:?}", e, e.kind() diff --git a/tests/net-tcp.rs b/tests/net-tcp.rs index d654474b..108e558e 100644 --- a/tests/net-tcp.rs +++ b/tests/net-tcp.rs @@ -51,7 +51,8 @@ fn connect_error() { || e.kind() == ErrorKind::AddrNotAvailable || e.kind() == ErrorKind::TimedOut // Rust >=1.83 adds `ErrorKind::NetworkUnreachable`. - || e.to_string().contains("network unreachable"), + || e.to_string().contains("network unreachable") + || e.to_string().contains("Network is unreachable"), "bad error: {} {:?}", e, e.kind()