net: implement `UnixSocket`
Introduces a new type, `UnixSocket`, that allows the users to configure it before converting it to `UnixListener`, `UnixStream`, or `UnixDatagram`. Currently it only exposes `bind` as a configuration option.

Resolves #6288.
**Is your feature request related to a problem? Please describe.**

Although very unconventional, it may be useful to bind a unix socket to a specific path. In my case, the listener calls `UnixStream::peer_addr()` upon accepting an incoming connection, and the path contains information necessary to process the connection.

**Describe the solution you'd like**

Allow users to create a `UnixStream` bound to a specific path. `socket2` exposes a [`bind`](https://docs.rs/socket2/latest/socket2/struct.Socket.html#method.bind) for this. I'm not sure how to make this fully backward compatible in tokio case though, since `UnixStream::connect` is currently the only way to create a socket.

**Describe alternatives you've considered**

- creating a socket2 socket, using `AsyncFd` for the connection, then convert the socket into a tokio socket
- creating a socket2 socket, make a blocking `connect` call, then convert the socket into a tokio socket
Expose a `bind` method on `UnixStream`
diff --git a/tokio/src/net/mod.rs b/tokio/src/net/mod.rs
index 2d317a8a219..abc270bd0d8 100644
--- a/tokio/src/net/mod.rs
+++ b/tokio/src/net/mod.rs
@@ -49,6 +49,7 @@ cfg_net_unix! {
     pub use unix::datagram::socket::UnixDatagram;
     pub use unix::listener::UnixListener;
     pub use unix::stream::UnixStream;
+    pub use unix::socket::UnixSocket;
 }
 
 cfg_net_windows! {
diff --git a/tokio/src/net/unix/datagram/socket.rs b/tokio/src/net/unix/datagram/socket.rs
index d92ad5940e0..bec4bf983d5 100644
--- a/tokio/src/net/unix/datagram/socket.rs
+++ b/tokio/src/net/unix/datagram/socket.rs
@@ -96,6 +96,16 @@ cfg_net_unix! {
 }
 
 impl UnixDatagram {
+    pub(crate) fn from_mio(sys: mio::net::UnixDatagram) -> io::Result<UnixDatagram> {
+        let datagram = UnixDatagram::new(sys)?;
+
+        if let Some(e) = datagram.io.take_error()? {
+            return Err(e);
+        }
+
+        Ok(datagram)
+    }
+
     /// Waits for any of the requested ready states.
     ///
     /// This function is usually paired with `try_recv()` or `try_send()`. It
diff --git a/tokio/src/net/unix/listener.rs b/tokio/src/net/unix/listener.rs
index a7e9115eadd..bc7b53b3b53 100644
--- a/tokio/src/net/unix/listener.rs
+++ b/tokio/src/net/unix/listener.rs
@@ -50,6 +50,11 @@ cfg_net_unix! {
 }
 
 impl UnixListener {
+    pub(crate) fn new(listener: mio::net::UnixListener) -> io::Result<UnixListener> {
+        let io = PollEvented::new(listener)?;
+        Ok(UnixListener { io })
+    }
+
     /// Creates a new `UnixListener` bound to the specified path.
     ///
     /// # Panics
diff --git a/tokio/src/net/unix/mod.rs b/tokio/src/net/unix/mod.rs
index a49b70af34a..a94fc7b2711 100644
--- a/tokio/src/net/unix/mod.rs
+++ b/tokio/src/net/unix/mod.rs
@@ -7,6 +7,8 @@ pub mod datagram;
 
 pub(crate) mod listener;
 
+pub(crate) mod socket;
+
 mod split;
 pub use split::{ReadHalf, WriteHalf};
 
diff --git a/tokio/src/net/unix/socket.rs b/tokio/src/net/unix/socket.rs
new file mode 100644
index 00000000000..cb383b09a59
--- /dev/null
+++ b/tokio/src/net/unix/socket.rs
@@ -0,0 +1,271 @@
+use std::io;
+use std::path::Path;
+
+use std::os::unix::io::{AsFd, AsRawFd, BorrowedFd, FromRawFd, IntoRawFd, RawFd};
+
+use crate::net::{UnixDatagram, UnixListener, UnixStream};
+
+cfg_net_unix! {
+    /// A Unix socket that has not yet been converted to a [`UnixStream`], [`UnixDatagram`], or
+    /// [`UnixListener`].
+    ///
+    /// `UnixSocket` wraps an operating system socket and enables the caller to
+    /// configure the socket before establishing a connection or accepting
+    /// inbound connections. The caller is able to set socket option and explicitly
+    /// bind the socket with a socket address.
+    ///
+    /// The underlying socket is closed when the `UnixSocket` value is dropped.
+    ///
+    /// `UnixSocket` should only be used directly if the default configuration used
+    /// by [`UnixStream::connect`], [`UnixDatagram::bind`], and [`UnixListener::bind`]
+    /// does not meet the required use case.
+    ///
+    /// Calling `UnixStream::connect(path)` effectively performs the same function as:
+    ///
+    /// ```no_run
+    /// use tokio::net::UnixSocket;
+    /// use std::error::Error;
+    ///
+    /// #[tokio::main]
+    /// async fn main() -> Result<(), Box<dyn Error>> {
+    ///     let dir = tempfile::tempdir().unwrap();
+    ///     let path = dir.path().join("bind_path");
+    ///     let socket = UnixSocket::new_stream()?;
+    ///
+    ///     let stream = socket.connect(path).await?;
+    ///
+    ///     Ok(())
+    /// }
+    /// ```
+    ///
+    /// Calling `UnixDatagram::bind(path)` effectively performs the same function as:
+    ///
+    /// ```no_run
+    /// use tokio::net::UnixSocket;
+    /// use std::error::Error;
+    ///
+    /// #[tokio::main]
+    /// async fn main() -> Result<(), Box<dyn Error>> {
+    ///     let dir = tempfile::tempdir().unwrap();
+    ///     let path = dir.path().join("bind_path");
+    ///     let socket = UnixSocket::new_datagram()?;
+    ///     socket.bind(path)?;
+    ///
+    ///     let datagram = socket.datagram()?;
+    ///
+    ///     Ok(())
+    /// }
+    /// ```
+    ///
+    /// Calling `UnixListener::bind(path)` effectively performs the same function as:
+    ///
+    /// ```no_run
+    /// use tokio::net::UnixSocket;
+    /// use std::error::Error;
+    ///
+    /// #[tokio::main]
+    /// async fn main() -> Result<(), Box<dyn Error>> {
+    ///     let dir = tempfile::tempdir().unwrap();
+    ///     let path = dir.path().join("bind_path");
+    ///     let socket = UnixSocket::new_stream()?;
+    ///     socket.bind(path)?;
+    ///
+    ///     let listener = socket.listen(1024)?;
+    ///
+    ///     Ok(())
+    /// }
+    /// ```
+    ///
+    /// Setting socket options not explicitly provided by `UnixSocket` may be done by
+    /// accessing the [`RawFd`]/[`RawSocket`] using [`AsRawFd`]/[`AsRawSocket`] and
+    /// setting the option with a crate like [`socket2`].
+    ///
+    /// [`RawFd`]: std::os::fd::RawFd
+    /// [`RawSocket`]: https://doc.rust-lang.org/std/os/windows/io/type.RawSocket.html
+    /// [`AsRawFd`]: std::os::fd::AsRawFd
+    /// [`AsRawSocket`]: https://doc.rust-lang.org/std/os/windows/io/trait.AsRawSocket.html
+    /// [`socket2`]: https://docs.rs/socket2/
+    #[derive(Debug)]
+    pub struct UnixSocket {
+        inner: socket2::Socket,
+    }
+}
+
+impl UnixSocket {
+    fn ty(&self) -> socket2::Type {
+        self.inner.r#type().unwrap()
+    }
+
+    /// Creates a new Unix datagram socket.
+    ///
+    /// Calls `socket(2)` with `AF_UNIX` and `SOCK_DGRAM`.
+    ///
+    /// # Returns
+    ///
+    /// On success, the newly created [`UnixSocket`] is returned. If an error is
+    /// encountered, it is returned instead.
+    pub fn new_datagram() -> io::Result<UnixSocket> {
+        UnixSocket::new(socket2::Type::DGRAM)
+    }
+
+    /// Creates a new Unix stream socket.
+    ///
+    /// Calls `socket(2)` with `AF_UNIX` and `SOCK_STREAM`.
+    ///
+    /// # Returns
+    ///
+    /// On success, the newly created [`UnixSocket`] is returned. If an error is
+    /// encountered, it is returned instead.
+    pub fn new_stream() -> io::Result<UnixSocket> {
+        UnixSocket::new(socket2::Type::STREAM)
+    }
+
+    fn new(ty: socket2::Type) -> io::Result<UnixSocket> {
+        #[cfg(any(
+            target_os = "android",
+            target_os = "dragonfly",
+            target_os = "freebsd",
+            target_os = "fuchsia",
+            target_os = "illumos",
+            target_os = "linux",
+            target_os = "netbsd",
+            target_os = "openbsd"
+        ))]
+        let ty = ty.nonblocking();
+        let inner = socket2::Socket::new(socket2::Domain::UNIX, ty, None)?;
+        #[cfg(not(any(
+            target_os = "android",
+            target_os = "dragonfly",
+            target_os = "freebsd",
+            target_os = "fuchsia",
+            target_os = "illumos",
+            target_os = "linux",
+            target_os = "netbsd",
+            target_os = "openbsd"
+        )))]
+        inner.set_nonblocking(true)?;
+        Ok(UnixSocket { inner })
+    }
+
+    /// Binds the socket to the given address.
+    ///
+    /// This calls the `bind(2)` operating-system function.
+    pub fn bind(&self, path: impl AsRef<Path>) -> io::Result<()> {
+        let addr = socket2::SockAddr::unix(path)?;
+        self.inner.bind(&addr)
+    }
+
+    /// Converts the socket into a `UnixListener`.
+    ///
+    /// `backlog` defines the maximum number of pending connections are queued
+    /// by the operating system at any given time. Connection are removed from
+    /// the queue with [`UnixListener::accept`]. When the queue is full, the
+    /// operating-system will start rejecting connections.
+    ///
+    /// Calling this function on a socket created by [`new_datagram`] will return an error.
+    ///
+    /// This calls the `listen(2)` operating-system function, marking the socket
+    /// as a passive socket.
+    ///
+    /// [`new_datagram`]: `UnixSocket::new_datagram`
+    pub fn listen(self, backlog: u32) -> io::Result<UnixListener> {
+        if self.ty() == socket2::Type::DGRAM {
+            return Err(io::Error::new(
+                io::ErrorKind::Other,
+                "listen cannot be called on a datagram socket",
+            ));
+        }
+
+        self.inner.listen(backlog as i32)?;
+        let mio = {
+            use std::os::unix::io::{FromRawFd, IntoRawFd};
+
+            let raw_fd = self.inner.into_raw_fd();
+            unsafe { mio::net::UnixListener::from_raw_fd(raw_fd) }
+        };
+
+        UnixListener::new(mio)
+    }
+
+    /// Establishes a Unix connection with a peer at the specified socket address.
+    ///
+    /// The `UnixSocket` is consumed. Once the connection is established, a
+    /// connected [`UnixStream`] is returned. If the connection fails, the
+    /// encountered error is returned.
+    ///
+    /// Calling this function on a socket created by [`new_datagram`] will return an error.
+    ///
+    /// This calls the `connect(2)` operating-system function.
+    ///
+    /// [`new_datagram`]: `UnixSocket::new_datagram`
+    pub async fn connect(self, path: impl AsRef<Path>) -> io::Result<UnixStream> {
+        if self.ty() == socket2::Type::DGRAM {
+            return Err(io::Error::new(
+                io::ErrorKind::Other,
+                "connect cannot be called on a datagram socket",
+            ));
+        }
+
+        let addr = socket2::SockAddr::unix(path)?;
+        if let Err(err) = self.inner.connect(&addr) {
+            if err.raw_os_error() != Some(libc::EINPROGRESS) {
+                return Err(err);
+            }
+        }
+        let mio = {
+            use std::os::unix::io::{FromRawFd, IntoRawFd};
+
+            let raw_fd = self.inner.into_raw_fd();
+            unsafe { mio::net::UnixStream::from_raw_fd(raw_fd) }
+        };
+
+        UnixStream::connect_mio(mio).await
+    }
+
+    /// Converts the socket into a [`UnixDatagram`].
+    ///
+    /// Calling this function on a socket created by [`new_stream`] will return an error.
+    ///
+    /// [`new_stream`]: `UnixSocket::new_stream`
+    pub fn datagram(self) -> io::Result<UnixDatagram> {
+        if self.ty() == socket2::Type::STREAM {
+            return Err(io::Error::new(
+                io::ErrorKind::Other,
+                "datagram cannot be called on a stream socket",
+            ));
+        }
+        let mio = {
+            use std::os::unix::io::{FromRawFd, IntoRawFd};
+
+            let raw_fd = self.inner.into_raw_fd();
+            unsafe { mio::net::UnixDatagram::from_raw_fd(raw_fd) }
+        };
+
+        UnixDatagram::from_mio(mio)
+    }
+}
+
+impl AsRawFd for UnixSocket {
+    fn as_raw_fd(&self) -> RawFd {
+        self.inner.as_raw_fd()
+    }
+}
+
+impl AsFd for UnixSocket {
+    fn as_fd(&self) -> BorrowedFd<'_> {
+        unsafe { BorrowedFd::borrow_raw(self.as_raw_fd()) }
+    }
+}
+
+impl FromRawFd for UnixSocket {
+    unsafe fn from_raw_fd(fd: RawFd) -> UnixSocket {
+        let inner = socket2::Socket::from_raw_fd(fd);
+        UnixSocket { inner }
+    }
+}
+
+impl IntoRawFd for UnixSocket {
+    fn into_raw_fd(self) -> RawFd {
+        self.inner.into_raw_fd()
+    }
+}
diff --git a/tokio/src/net/unix/stream.rs b/tokio/src/net/unix/stream.rs
index 4821260ff6a..e1a4ff437f7 100644
--- a/tokio/src/net/unix/stream.rs
+++ b/tokio/src/net/unix/stream.rs
@@ -39,6 +39,24 @@ cfg_net_unix! {
 }
 
 impl UnixStream {
+    pub(crate) async fn connect_mio(sys: mio::net::UnixStream) -> io::Result<UnixStream> {
+        let stream = UnixStream::new(sys)?;
+
+        // Once we've connected, wait for the stream to be writable as
+        // that's when the actual connection has been initiated. Once we're
+        // writable we check for `take_socket_error` to see if the connect
+        // actually hit an error or not.
+        //
+        // If all that succeeded then we ship everything on up.
+        poll_fn(|cx| stream.io.registration().poll_write_ready(cx)).await?;
+
+        if let Some(e) = stream.io.take_error()? {
+            return Err(e);
+        }
+
+        Ok(stream)
+    }
+
     /// Connects to the socket named by `path`.
     ///
     /// This function will create a new Unix socket and connect to the path

diff --git a/tokio/tests/uds_socket.rs b/tokio/tests/uds_socket.rs
new file mode 100644
index 00000000000..5261ffe5da3
--- /dev/null
+++ b/tokio/tests/uds_socket.rs
@@ -0,0 +1,118 @@
+#![warn(rust_2018_idioms)]
+#![cfg(feature = "full")]
+#![cfg(unix)]
+
+use futures::future::try_join;
+use std::io;
+use tokio::{
+    io::{AsyncReadExt, AsyncWriteExt},
+    net::UnixSocket,
+};
+
+#[tokio::test]
+async fn datagram_echo_server() -> io::Result<()> {
+    let dir = tempfile::tempdir().unwrap();
+    let server_path = dir.path().join("server.sock");
+    let client_path = dir.path().join("client.sock");
+
+    let server_socket = {
+        let socket = UnixSocket::new_datagram()?;
+        socket.bind(&server_path)?;
+        socket.datagram()?
+    };
+
+    tokio::spawn(async move {
+        let mut recv_buf = vec![0u8; 1024];
+        loop {
+            let (len, peer_addr) = server_socket.recv_from(&mut recv_buf[..]).await?;
+            if let Some(path) = peer_addr.as_pathname() {
+                server_socket.send_to(&recv_buf[..len], path).await?;
+            }
+        }
+
+        #[allow(unreachable_code)]
+        Ok::<(), io::Error>(())
+    });
+
+    {
+        let socket = UnixSocket::new_datagram()?;
+        socket.bind(&client_path).unwrap();
+        let socket = socket.datagram()?;
+
+        socket.connect(server_path)?;
+        socket.send(b"ECHO").await?;
+
+        let mut recv_buf = [0u8; 16];
+        let len = socket.recv(&mut recv_buf[..]).await?;
+        assert_eq!(&recv_buf[..len], b"ECHO");
+    }
+
+    Ok(())
+}
+
+#[tokio::test]
+async fn listen_and_stream() -> std::io::Result<()> {
+    let dir = tempfile::Builder::new().tempdir().unwrap();
+    let sock_path = dir.path().join("connect.sock");
+    let peer_path = dir.path().join("peer.sock");
+
+    let listener = {
+        let sock = UnixSocket::new_stream()?;
+        sock.bind(&sock_path)?;
+        sock.listen(1024)?
+    };
+
+    let accept = listener.accept();
+    let connect = {
+        let sock = UnixSocket::new_stream()?;
+        sock.bind(&peer_path)?;
+        sock.connect(&sock_path)
+    };
+
+    let ((mut server, _), mut client) = try_join(accept, connect).await?;
+
+    assert_eq!(
+        server.peer_addr().unwrap().as_pathname().unwrap(),
+        &peer_path
+    );
+
+    // Write to the client.
+    client.write_all(b"hello").await?;
+    drop(client);
+
+    // Read from the server.
+    let mut buf = vec![];
+    server.read_to_end(&mut buf).await?;
+    assert_eq!(&buf, b"hello");
+    let len = server.read(&mut buf).await?;
+    assert_eq!(len, 0);
+    Ok(())
+}
+
+#[tokio::test]
+async fn assert_usage() -> std::io::Result<()> {
+    let datagram_socket = UnixSocket::new_datagram()?;
+    let result = datagram_socket
+        .connect(std::path::PathBuf::new().join("invalid.sock"))
+        .await;
+    assert_eq!(
+        result.unwrap_err().to_string(),
+        "connect cannot be called on a datagram socket"
+    );
+
+    let datagram_socket = UnixSocket::new_datagram()?;
+    let result = datagram_socket.listen(1024);
+    assert_eq!(
+        result.unwrap_err().to_string(),
+        "listen cannot be called on a datagram socket"
+    );
+
+    let stream_socket = UnixSocket::new_stream()?;
+    let result = stream_socket.datagram();
+    assert_eq!(
+        result.unwrap_err().to_string(),
+        "datagram cannot be called on a stream socket"
+    );
+
+    Ok(())
+}

{"signal::unix::tests::into_c_int": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::rwlock::bounds": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::pidfd_reaper::test::test_pidfd_reaper_drop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::inject::push_and_pop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::memchr::tests::memchr_all": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::reusable_box::test::test_different_futures": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "path_read_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::lines::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::cancel_acquire_releases_permits": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_custom_flags_linux": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "basic_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_one_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::registry::tests::broadcast_returns_if_at_least_one_event_fired": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "pin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_many_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::broadcast::tests::receiver_count_on_channel_constructor": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::release_permits_at_drop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "basic_read": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::wheel::level::test::test_slot_for": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_err_then_read_success": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "file_debug_fmt": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_read_followed_by_flush": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "task::local::tests::local_current_thread_scheduler": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::no_kill_if_already_killed": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "remove": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::mpsc::block::assert_no_stack_overflow": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_file_from_unix_fd": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::no_reap_if_no_signal_received": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_set_len_ok": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::close_semaphore_notifies_permit2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::memchr::tests::memchr_test": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_partial_read_followed_by_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_set_len_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_with_smaller_buf": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_all_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::buf_reader::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::poll_process_levels_targeted": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_read_followed_by_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_create": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "unix_fd_is_valid": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_data_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::push_pop_push_pop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::single_timer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::does_nothing_if_signal_could_not_be_registered": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::max_permits_doesnt_panic": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::unix::tests::signal_enable_error_on_forbidden_input": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::stdio_common::tests::test_pseudo_text": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "coop_budget_udp_send_recv": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::scheduler::multi_thread::queue::test_local_queue_capacity": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::notify_clones_waker_before_lock": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::sink::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::inject::push_batch_and_pop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_seek_flush_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_many_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_create_new": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_with_bigger_buf": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_truncate": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::broadcast::tests::receiver_count_on_sender_constructor": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::reusable_box::test::test_different_sizes": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::const_new": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_one_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_many_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::scheduler::multi_thread::idle::test_state": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::flush_while_idle": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::steal_batch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::drop_reaps_if_possible": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "canonicalize_root_dir_unix": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_into_std_immediate": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::buf_stream::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::kills_on_drop_if_specified": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "build_dir_mode_read_only": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_one_zero_permits": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::fits_256_one_at_a_time": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::split::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::unix::tests::from_c_int": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::task::core::header_lte_cache_line": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_twice_before_dispatch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::coop::test::budgeting": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "basic_write_and_shutdown": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "copy": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "create_dir": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::repeat::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_seek_write_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_read": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::pidfd_reaper::test::test_pidfd_reaper_kill": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::take::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::remove_by_address": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "coop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::drop_enqueues_orphan_if_wait_fails": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::stress1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_one_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::atomic_waker::basic_usage": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test_symlink": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::buf_writer::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_append": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::no_kill_if_reaped": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::stdio_common::tests::test_splitter": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_read_flush_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::task::list::tests::test_id_not_broken": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::push_and_drain": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::notify_waiters_handles_panicking_waker": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::wheel::test::test_level_for": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_write_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::registry::tests::record_invalid_event_does_nothing": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::reset_future": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "echo_server": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::close_semaphore_prevents_acquire": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_dir_entry_info": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "create_all": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::chain::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::kill": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::atomic_waker::wake_without_register": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test_hard_link": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::mutex::bounds": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_read_write_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_flush_followed_by_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_into_std": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::change_waker": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::reaper": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::idle_notified_set::tests::join_set_test": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::stress2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::registry::tests::smoke": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::empty::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::poll_process_levels": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::notify_simple": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_data_err_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::atomic_waker::atomic_waker_panic_safe": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::watch_test": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::reusable_box::test::test_zero_sized": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_to_clone": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::semaphore::bounds": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "compile_fail_full": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::busy_file_seek_error": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_one_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::no_kill_on_drop_by_default": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::unix::tests::signal_enable_error_on_invalid_input": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::copy_buf::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "copy_permissions": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::does_not_register_signal_if_queue_empty": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::no_reap_if_signal_lock_held": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_twice_before_dispatch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::partial_read_set_len_ok": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_inherent": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "build_dir": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_file_from_std": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::fits_256_all_at_once": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_with_buffer_larger_than_max": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::drop_timer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::pidfd_reaper::test::test_pidfd_reaper_poll": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_many_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_all_err_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_with_buffer_larger_than_max": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::memchr::tests::memchr_empty": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::task_combinations::test_combinations": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_vectored": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::drain_attempts_a_single_reap_of_all_queued_orphans": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_vectored_and_shutdown": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::fits_256_all_in_chunks": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::inject::pop_n_drains_on_drop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "task::local::tests::wakes_to_local_queue": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::close_semaphore_notifies_permit1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "rewind_seek_position": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::overflow": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_with_open_options_and_read": {"run": "PASS", "test": "NONE", "fix": "PASS"}}
{"signal::unix::tests::into_c_int": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::rwlock::bounds": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::pidfd_reaper::test::test_pidfd_reaper_drop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::inject::push_and_pop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::memchr::tests::memchr_all": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::reusable_box::test::test_different_futures": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "path_read_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::lines::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::cancel_acquire_releases_permits": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_custom_flags_linux": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "basic_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_one_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::registry::tests::broadcast_returns_if_at_least_one_event_fired": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "pin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_many_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::broadcast::tests::receiver_count_on_channel_constructor": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::release_permits_at_drop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "basic_read": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::wheel::level::test::test_slot_for": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_err_then_read_success": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "file_debug_fmt": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_read_followed_by_flush": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "task::local::tests::local_current_thread_scheduler": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::no_kill_if_already_killed": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "remove": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::mpsc::block::assert_no_stack_overflow": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_file_from_unix_fd": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::no_reap_if_no_signal_received": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_set_len_ok": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::close_semaphore_notifies_permit2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::memchr::tests::memchr_test": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_partial_read_followed_by_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_set_len_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_with_smaller_buf": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_all_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::buf_reader::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::poll_process_levels_targeted": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_read_followed_by_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_create": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "unix_fd_is_valid": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_data_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::push_pop_push_pop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::single_timer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::does_nothing_if_signal_could_not_be_registered": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::max_permits_doesnt_panic": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::unix::tests::signal_enable_error_on_forbidden_input": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::stdio_common::tests::test_pseudo_text": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "coop_budget_udp_send_recv": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::scheduler::multi_thread::queue::test_local_queue_capacity": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::notify_clones_waker_before_lock": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::sink::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::inject::push_batch_and_pop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_seek_flush_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_many_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_create_new": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_with_bigger_buf": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_truncate": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::broadcast::tests::receiver_count_on_sender_constructor": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::reusable_box::test::test_different_sizes": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::const_new": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_one_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_many_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::scheduler::multi_thread::idle::test_state": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::flush_while_idle": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::steal_batch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::drop_reaps_if_possible": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "canonicalize_root_dir_unix": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_into_std_immediate": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::buf_stream::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::kills_on_drop_if_specified": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "build_dir_mode_read_only": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_one_zero_permits": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::fits_256_one_at_a_time": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::split::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::unix::tests::from_c_int": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::task::core::header_lte_cache_line": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_twice_before_dispatch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::coop::test::budgeting": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "basic_write_and_shutdown": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "copy": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "create_dir": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::repeat::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_seek_write_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::open_read": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::pidfd_reaper::test::test_pidfd_reaper_kill": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::take::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::remove_by_address": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "coop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::drop_enqueues_orphan_if_wait_fails": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::stress1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_one_available": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::atomic_waker::basic_usage": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test_symlink": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::buf_writer::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_options_append": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::no_kill_if_reaped": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::stdio_common::tests::test_splitter": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_read_flush_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::task::list::tests::test_id_not_broken": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::linked_list::tests::push_and_drain": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::notify_waiters_handles_panicking_waker": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::wheel::test::test_level_for": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_write_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::registry::tests::record_invalid_event_does_nothing": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::reset_future": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "echo_server": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::close_semaphore_prevents_acquire": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_dir_entry_info": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "create_all": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::chain::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::kill": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::atomic_waker::wake_without_register": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "test_hard_link": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::mutex::bounds": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_read_write_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::incomplete_flush_followed_by_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_into_std": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::change_waker": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::reap::test::reaper": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::idle_notified_set::tests::join_set_test": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::stress2": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::registry::tests::smoke": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::empty::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::poll_process_levels": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::notify_simple": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_data_err_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::atomic_waker::atomic_waker_panic_safe": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::notify::watch_test": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::reusable_box::test::test_zero_sized": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_to_clone": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::semaphore::bounds": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "compile_fail_full": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::busy_file_seek_error": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::poll_acquire_one_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::test::no_kill_on_drop_by_default": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "signal::unix::tests::signal_enable_error_on_invalid_input": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "io::util::copy_buf::tests::assert_unpin": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "copy_permissions": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::does_not_register_signal_if_queue_empty": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::no_reap_if_signal_lock_held": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_twice_before_dispatch": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_err": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::partial_read_set_len_ok": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_inherent": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "build_dir": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "read_file_from_std": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::fits_256_all_at_once": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::write_with_buffer_larger_than_max": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::time::tests::drop_timer": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::pidfd_reaper::test::test_pidfd_reaper_poll": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::try_acquire_many_unavailable": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::sync_all_err_ordered_after_write": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "fs::file::tests::read_with_buffer_larger_than_max": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "util::memchr::tests::memchr_empty": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::task_combinations::test_combinations": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_vectored": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "process::imp::orphan::test::drain_attempts_a_single_reap_of_all_queued_orphans": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "write_vectored_and_shutdown": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::fits_256_all_in_chunks": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::inject::pop_n_drains_on_drop": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "task::local::tests::wakes_to_local_queue": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "sync::tests::semaphore_batch::close_semaphore_notifies_permit1": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "rewind_seek_position": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "runtime::tests::queue::overflow": {"run": "PASS", "test": "NONE", "fix": "PASS"}, "open_with_open_options_and_read": {"run": "PASS", "test": "NONE", "fix": "PASS"}}
{"passed_count": 167, "failed_count": 1, "skipped_count": 0, "passed_tests": ["signal::unix::tests::into_c_int", "sync::rwlock::bounds", "process::imp::pidfd_reaper::test::test_pidfd_reaper_drop", "runtime::tests::inject::push_and_pop", "util::memchr::tests::memchr_all", "open_options_write", "signal::reusable_box::test::test_different_futures", "path_read_write", "io::util::lines::tests::assert_unpin", "sync::tests::semaphore_batch::cancel_acquire_releases_permits", "open_options_custom_flags_linux", "basic_write", "sync::tests::semaphore_batch::try_acquire_one_available", "signal::registry::tests::broadcast_returns_if_at_least_one_event_fired", "pin", "sync::tests::semaphore_batch::poll_acquire_many_unavailable", "sync::broadcast::tests::receiver_count_on_channel_constructor", "sync::tests::semaphore_batch::release_permits_at_drop", "basic_read", "runtime::time::wheel::level::test::test_slot_for", "fs::file::tests::read_err_then_read_success", "file_debug_fmt", "fs::file::tests::incomplete_read_followed_by_flush", "task::local::tests::local_current_thread_scheduler", "process::test::no_kill_if_already_killed", "remove", "sync::mpsc::block::assert_no_stack_overflow", "read_file_from_unix_fd", "process::imp::orphan::test::no_reap_if_no_signal_received", "fs::file::tests::open_set_len_ok", "sync::tests::semaphore_batch::close_semaphore_notifies_permit2", "util::memchr::tests::memchr_test", "fs::file::tests::incomplete_partial_read_followed_by_write", "fs::file::tests::open_set_len_err", "fs::file::tests::read_with_smaller_buf", "fs::file::tests::sync_all_ordered_after_write", "io::util::buf_reader::tests::assert_unpin", "runtime::time::tests::poll_process_levels_targeted", "fs::file::tests::incomplete_read_followed_by_write", "open_options_create", "unix_fd_is_valid", "fs::file::tests::sync_data_ordered_after_write", "util::linked_list::tests::push_pop_push_pop", "runtime::time::tests::single_timer", "process::imp::orphan::test::does_nothing_if_signal_could_not_be_registered", "sync::tests::semaphore_batch::max_permits_doesnt_panic", "signal::unix::tests::signal_enable_error_on_forbidden_input", "io::stdio_common::tests::test_pseudo_text", "coop_budget_udp_send_recv", "runtime::scheduler::multi_thread::queue::test_local_queue_capacity", "sync::tests::notify::notify_clones_waker_before_lock", "io::util::sink::tests::assert_unpin", "runtime::tests::inject::push_batch_and_pop", "fs::file::tests::write_seek_flush_err", "sync::tests::semaphore_batch::poll_acquire_many_available", "open_options_create_new", "fs::file::tests::read_with_bigger_buf", "open_options_truncate", "sync::broadcast::tests::receiver_count_on_sender_constructor", "signal::reusable_box::test::test_different_sizes", "util::linked_list::tests::const_new", "sync::tests::semaphore_batch::try_acquire_one_unavailable", "sync::tests::semaphore_batch::try_acquire_many_available", "runtime::scheduler::multi_thread::idle::test_state", "fs::file::tests::flush_while_idle", "runtime::tests::queue::steal_batch", "process::imp::reap::test::drop_reaps_if_possible", "canonicalize_root_dir_unix", "write_into_std_immediate", "open_with_open_options_and_read", "io::util::buf_stream::tests::assert_unpin", "process::test::kills_on_drop_if_specified", "build_dir_mode_read_only", "fs::file::tests::open_write", "sync::tests::semaphore_batch::poll_acquire_one_zero_permits", "runtime::tests::queue::fits_256_one_at_a_time", "io::util::split::tests::assert_unpin", "signal::unix::tests::from_c_int", "runtime::task::core::header_lte_cache_line", "fs::file::tests::read_twice_before_dispatch", "runtime::coop::test::budgeting", "basic_write_and_shutdown", "copy", "create_dir", "io::util::repeat::tests::assert_unpin", "fs::file::tests::write_seek_write_err", "fs::file::tests::open_read", "process::imp::pidfd_reaper::test::test_pidfd_reaper_kill", "io::util::take::tests::assert_unpin", "util::linked_list::tests::remove_by_address", "coop", "process::imp::reap::test::drop_enqueues_orphan_if_wait_fails", "runtime::tests::queue::stress1", "sync::tests::semaphore_batch::poll_acquire_one_available", "sync::tests::atomic_waker::basic_usage", "test_symlink", "io::util::buf_writer::tests::assert_unpin", "open_options_append", "process::test::no_kill_if_reaped", "io::stdio_common::tests::test_splitter", "fs::file::tests::write_read_flush_err", "runtime::task::list::tests::test_id_not_broken", "util::linked_list::tests::push_and_drain", "sync::tests::notify::notify_waiters_handles_panicking_waker", "runtime::time::wheel::test::test_level_for", "fs::file::tests::write_write_err", "signal::registry::tests::record_invalid_event_does_nothing", "runtime::time::tests::reset_future", "echo_server", "sync::tests::semaphore_batch::close_semaphore_prevents_acquire", "read_dir_entry_info", "io::util::chain::tests::assert_unpin", "process::imp::reap::test::kill", "sync::tests::atomic_waker::wake_without_register", "test_hard_link", "sync::mutex::bounds", "fs::file::tests::write_read_write_err", "fs::file::tests::incomplete_flush_followed_by_write", "write_into_std", "runtime::time::tests::change_waker", "process::imp::reap::test::reaper", "util::idle_notified_set::tests::join_set_test", "runtime::tests::queue::stress2", "signal::registry::tests::smoke", "io::util::empty::tests::assert_unpin", "runtime::time::tests::poll_process_levels", "sync::tests::notify::notify_simple", "fs::file::tests::sync_data_err_ordered_after_write", "sync::tests::atomic_waker::atomic_waker_panic_safe", "sync::tests::notify::watch_test", "signal::reusable_box::test::test_zero_sized", "write_to_clone", "sync::semaphore::bounds", "compile_fail_full", "fs::file::tests::busy_file_seek_error", "sync::tests::semaphore_batch::poll_acquire_one_unavailable", "process::test::no_kill_on_drop_by_default", "signal::unix::tests::signal_enable_error_on_invalid_input", "io::util::copy_buf::tests::assert_unpin", "copy_permissions", "process::imp::orphan::test::does_not_register_signal_if_queue_empty", "process::imp::orphan::test::no_reap_if_signal_lock_held", "fs::file::tests::write_twice_before_dispatch", "fs::file::tests::read_err", "fs::file::tests::partial_read_set_len_ok", "read_inherent", "build_dir", "read_file_from_std", "runtime::tests::queue::fits_256_all_at_once", "fs::file::tests::write_with_buffer_larger_than_max", "runtime::time::tests::drop_timer", "process::imp::pidfd_reaper::test::test_pidfd_reaper_poll", "sync::tests::semaphore_batch::try_acquire_many_unavailable", "fs::file::tests::sync_all_err_ordered_after_write", "fs::file::tests::read_with_buffer_larger_than_max", "util::memchr::tests::memchr_empty", "runtime::tests::task_combinations::test_combinations", "write_vectored", "process::imp::orphan::test::drain_attempts_a_single_reap_of_all_queued_orphans", "write_vectored_and_shutdown", "runtime::tests::queue::fits_256_all_in_chunks", "runtime::tests::inject::pop_n_drains_on_drop", "task::local::tests::wakes_to_local_queue", "sync::tests::semaphore_batch::close_semaphore_notifies_permit1", "rewind_seek_position", "runtime::tests::queue::overflow", "create_all"], "failed_tests": ["open_options_mode"], "skipped_tests": []}
{"passed_count": 0, "failed_count": 0, "skipped_count": 0, "passed_tests": [], "failed_tests": [], "skipped_tests": []}
{"passed_count": 167, "failed_count": 1, "skipped_count": 0, "passed_tests": ["signal::unix::tests::into_c_int", "sync::rwlock::bounds", "process::imp::pidfd_reaper::test::test_pidfd_reaper_drop", "runtime::tests::inject::push_and_pop", "util::memchr::tests::memchr_all", "open_options_write", "signal::reusable_box::test::test_different_futures", "path_read_write", "io::util::lines::tests::assert_unpin", "sync::tests::semaphore_batch::cancel_acquire_releases_permits", "open_options_custom_flags_linux", "basic_write", "sync::tests::semaphore_batch::try_acquire_one_available", "signal::registry::tests::broadcast_returns_if_at_least_one_event_fired", "pin", "sync::tests::semaphore_batch::poll_acquire_many_unavailable", "sync::broadcast::tests::receiver_count_on_channel_constructor", "sync::tests::semaphore_batch::release_permits_at_drop", "basic_read", "runtime::time::wheel::level::test::test_slot_for", "fs::file::tests::read_err_then_read_success", "file_debug_fmt", "fs::file::tests::incomplete_read_followed_by_flush", "task::local::tests::local_current_thread_scheduler", "process::test::no_kill_if_already_killed", "remove", "sync::mpsc::block::assert_no_stack_overflow", "read_file_from_unix_fd", "process::imp::orphan::test::no_reap_if_no_signal_received", "fs::file::tests::open_set_len_ok", "sync::tests::semaphore_batch::close_semaphore_notifies_permit2", "fs::file::tests::incomplete_partial_read_followed_by_write", "util::memchr::tests::memchr_test", "fs::file::tests::open_set_len_err", "fs::file::tests::read_with_smaller_buf", "fs::file::tests::sync_all_ordered_after_write", "fs::file::tests::incomplete_read_followed_by_write", "io::util::buf_reader::tests::assert_unpin", "runtime::time::tests::poll_process_levels_targeted", "open_options_create", "unix_fd_is_valid", "fs::file::tests::sync_data_ordered_after_write", "runtime::time::tests::single_timer", "util::linked_list::tests::push_pop_push_pop", "process::imp::orphan::test::does_nothing_if_signal_could_not_be_registered", "sync::tests::semaphore_batch::max_permits_doesnt_panic", "signal::unix::tests::signal_enable_error_on_forbidden_input", "io::stdio_common::tests::test_pseudo_text", "coop_budget_udp_send_recv", "runtime::scheduler::multi_thread::queue::test_local_queue_capacity", "fs::file::tests::write_seek_flush_err", "runtime::tests::inject::push_batch_and_pop", "io::util::sink::tests::assert_unpin", "sync::tests::notify::notify_clones_waker_before_lock", "sync::tests::semaphore_batch::poll_acquire_many_available", "open_options_create_new", "fs::file::tests::read_with_bigger_buf", "open_options_truncate", "sync::broadcast::tests::receiver_count_on_sender_constructor", "signal::reusable_box::test::test_different_sizes", "util::linked_list::tests::const_new", "sync::tests::semaphore_batch::try_acquire_one_unavailable", "fs::file::tests::flush_while_idle", "runtime::scheduler::multi_thread::idle::test_state", "sync::tests::semaphore_batch::try_acquire_many_available", "runtime::tests::queue::steal_batch", "process::imp::reap::test::drop_reaps_if_possible", "canonicalize_root_dir_unix", "write_into_std_immediate", "open_with_open_options_and_read", "io::util::buf_stream::tests::assert_unpin", "process::test::kills_on_drop_if_specified", "build_dir_mode_read_only", "fs::file::tests::open_write", "sync::tests::semaphore_batch::poll_acquire_one_zero_permits", "runtime::tests::queue::fits_256_one_at_a_time", "io::util::split::tests::assert_unpin", "signal::unix::tests::from_c_int", "fs::file::tests::read_twice_before_dispatch", "runtime::task::core::header_lte_cache_line", "runtime::coop::test::budgeting", "basic_write_and_shutdown", "copy", "create_dir", "io::util::repeat::tests::assert_unpin", "fs::file::tests::write_seek_write_err", "fs::file::tests::open_read", "process::imp::pidfd_reaper::test::test_pidfd_reaper_kill", "io::util::take::tests::assert_unpin", "util::linked_list::tests::remove_by_address", "coop", "process::imp::reap::test::drop_enqueues_orphan_if_wait_fails", "runtime::tests::queue::stress1", "sync::tests::semaphore_batch::poll_acquire_one_available", "sync::tests::atomic_waker::basic_usage", "test_symlink", "io::util::buf_writer::tests::assert_unpin", "open_options_append", "process::test::no_kill_if_reaped", "io::stdio_common::tests::test_splitter", "fs::file::tests::write_read_flush_err", "runtime::task::list::tests::test_id_not_broken", "util::linked_list::tests::push_and_drain", "sync::tests::notify::notify_waiters_handles_panicking_waker", "runtime::time::wheel::test::test_level_for", "fs::file::tests::write_write_err", "signal::registry::tests::record_invalid_event_does_nothing", "runtime::time::tests::reset_future", "echo_server", "sync::tests::semaphore_batch::close_semaphore_prevents_acquire", "read_dir_entry_info", "io::util::chain::tests::assert_unpin", "process::imp::reap::test::kill", "sync::tests::atomic_waker::wake_without_register", "test_hard_link", "fs::file::tests::write_read_write_err", "sync::mutex::bounds", "fs::file::tests::incomplete_flush_followed_by_write", "write_into_std", "runtime::time::tests::change_waker", "process::imp::reap::test::reaper", "util::idle_notified_set::tests::join_set_test", "runtime::tests::queue::stress2", "signal::registry::tests::smoke", "io::util::empty::tests::assert_unpin", "runtime::time::tests::poll_process_levels", "sync::tests::notify::notify_simple", "fs::file::tests::sync_data_err_ordered_after_write", "sync::tests::atomic_waker::atomic_waker_panic_safe", "sync::tests::notify::watch_test", "signal::reusable_box::test::test_zero_sized", "write_to_clone", "sync::semaphore::bounds", "compile_fail_full", "fs::file::tests::busy_file_seek_error", "sync::tests::semaphore_batch::poll_acquire_one_unavailable", "process::test::no_kill_on_drop_by_default", "signal::unix::tests::signal_enable_error_on_invalid_input", "io::util::copy_buf::tests::assert_unpin", "copy_permissions", "process::imp::orphan::test::does_not_register_signal_if_queue_empty", "process::imp::orphan::test::no_reap_if_signal_lock_held", "fs::file::tests::write_twice_before_dispatch", "fs::file::tests::read_err", "fs::file::tests::partial_read_set_len_ok", "build_dir", "read_inherent", "read_file_from_std", "runtime::tests::queue::fits_256_all_at_once", "fs::file::tests::write_with_buffer_larger_than_max", "runtime::time::tests::drop_timer", "fs::file::tests::sync_all_err_ordered_after_write", "process::imp::pidfd_reaper::test::test_pidfd_reaper_poll", "sync::tests::semaphore_batch::try_acquire_many_unavailable", "fs::file::tests::read_with_buffer_larger_than_max", "util::memchr::tests::memchr_empty", "runtime::tests::task_combinations::test_combinations", "write_vectored", "process::imp::orphan::test::drain_attempts_a_single_reap_of_all_queued_orphans", "write_vectored_and_shutdown", "runtime::tests::queue::fits_256_all_in_chunks", "runtime::tests::inject::pop_n_drains_on_drop", "sync::tests::semaphore_batch::close_semaphore_notifies_permit1", "task::local::tests::wakes_to_local_queue", "rewind_seek_position", "runtime::tests::queue::overflow", "create_all"], "failed_tests": ["open_options_mode"], "skipped_tests": []}