1// Test dropping an AioCb that hasn't yet finished.
2// This must happen in its own process, because on OSX this test seems to hose
3// the AIO subsystem and causes subsequent tests to fail
4#[test]
5#[should_panic(expected = "Dropped an in-progress AioCb")]
6#[cfg(all(
7    not(target_env = "musl"),
8    not(target_env = "uclibc"),
9    any(
10        target_os = "linux",
11        target_os = "ios",
12        target_os = "macos",
13        target_os = "freebsd",
14        target_os = "netbsd"
15    )
16))]
17fn test_drop() {
18    use nix::sys::aio::*;
19    use nix::sys::signal::*;
20    use std::os::unix::io::AsRawFd;
21    use tempfile::tempfile;
22
23    const WBUF: &[u8] = b"CDEF";
24
25    let f = tempfile().unwrap();
26    f.set_len(6).unwrap();
27    let mut aiocb = Box::pin(AioWrite::new(
28        f.as_raw_fd(),
29        2, //offset
30        WBUF,
31        0, //priority
32        SigevNotify::SigevNone,
33    ));
34    aiocb.as_mut().submit().unwrap();
35}
36