diff options
-rw-r--r-- | src/sys/socket/addr.rs | 3 | ||||
-rw-r--r-- | src/sys/socket/mod.rs | 8 | ||||
-rw-r--r-- | test/sys/test_socket.rs | 3 | ||||
-rw-r--r-- | test/test_mq.rs | 10 | ||||
-rw-r--r-- | test/test_poll.rs | 5 | ||||
-rw-r--r-- | test/test_stat.rs | 21 | ||||
-rw-r--r-- | test/test_unistd.rs | 7 |
7 files changed, 45 insertions, 12 deletions
diff --git a/src/sys/socket/addr.rs b/src/sys/socket/addr.rs index b2cafe3c..db62b001 100644 --- a/src/sys/socket/addr.rs +++ b/src/sys/socket/addr.rs @@ -497,7 +497,8 @@ impl Eq for Ipv4Addr { impl hash::Hash for Ipv4Addr { fn hash<H: hash::Hasher>(&self, s: &mut H) { - self.0.s_addr.hash(s) + let saddr = self.0.s_addr; + saddr.hash(s) } } diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index 2ac0e24a..c633512d 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -258,9 +258,13 @@ impl Eq for IpMembershipRequest {} impl fmt::Debug for IpMembershipRequest { fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result { + let mref = &self.0.imr_multiaddr; + let maddr = mref.s_addr; + let iref = &self.0.imr_interface; + let ifaddr = iref.s_addr; f.debug_struct("IpMembershipRequest") - .field("imr_multiaddr", &self.0.imr_multiaddr.s_addr) - .field("imr_interface", &self.0.imr_interface.s_addr) + .field("imr_multiaddr", &maddr) + .field("imr_interface", &ifaddr) .finish() } } diff --git a/test/sys/test_socket.rs b/test/sys/test_socket.rs index 3329417d..08ca653f 100644 --- a/test/sys/test_socket.rs +++ b/test/sys/test_socket.rs @@ -16,8 +16,9 @@ pub fn test_inetv4_addr_to_sock_addr() { InetAddr::V4(addr) => { let ip: u32 = 0x7f00_0001; let port: u16 = 3000; + let saddr = addr.sin_addr.s_addr; - assert_eq!(addr.sin_addr.s_addr, ip.to_be()); + assert_eq!(saddr, ip.to_be()); assert_eq!(addr.sin_port, port.to_be()); } _ => panic!("nope"), diff --git a/test/test_mq.rs b/test/test_mq.rs index 26fd587f..41ab358b 100644 --- a/test/test_mq.rs +++ b/test/test_mq.rs @@ -5,7 +5,7 @@ use std::str; use nix::errno::Errno::*; use nix::Error::Sys; -use nix::mqueue::{mq_open, mq_close, mq_send, mq_receive, mq_getattr, mq_setattr, mq_unlink, mq_set_nonblock, mq_remove_nonblock}; +use nix::mqueue::{mq_open, mq_close, mq_send, mq_receive}; use nix::mqueue::{MqAttr, MQ_OFlag}; use nix::sys::stat::Mode; @@ -40,7 +40,9 @@ fn test_mq_send_and_receive() { #[test] +#[cfg(not(any(target_os = "netbsd")))] fn test_mq_getattr() { + use nix::mqueue::mq_getattr; const MSG_SIZE: c_long = 32; let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0); let mq_name = &CString::new(b"/attr_test_get_attr".as_ref()).unwrap(); @@ -60,8 +62,10 @@ fn test_mq_getattr() { // FIXME: Fix failures for mips in QEMU #[test] +#[cfg(not(any(target_os = "netbsd")))] #[cfg_attr(any(target_arch = "mips", target_arch = "mips64"), ignore)] fn test_mq_setattr() { + use nix::mqueue::{mq_getattr, mq_setattr}; const MSG_SIZE: c_long = 32; let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0); let mq_name = &CString::new(b"/attr_test_get_attr".as_ref()).unwrap(); @@ -95,8 +99,10 @@ fn test_mq_setattr() { // FIXME: Fix failures for mips in QEMU #[test] +#[cfg(not(any(target_os = "netbsd")))] #[cfg_attr(any(target_arch = "mips", target_arch = "mips64"), ignore)] fn test_mq_set_nonblocking() { + use nix::mqueue::{mq_getattr, mq_set_nonblock, mq_remove_nonblock}; const MSG_SIZE: c_long = 32; let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0); let mq_name = &CString::new(b"/attr_test_get_attr".as_ref()).unwrap(); @@ -118,7 +124,9 @@ fn test_mq_set_nonblocking() { } #[test] +#[cfg(not(any(target_os = "netbsd")))] fn test_mq_unlink() { + use nix::mqueue::mq_unlink; const MSG_SIZE: c_long = 32; let initial_attr = MqAttr::new(0, 10, MSG_SIZE, 0); let mq_name_opened = &CString::new(b"/mq_unlink_test".as_ref()).unwrap(); diff --git a/test/test_poll.rs b/test/test_poll.rs index a9831ed4..23df1517 100644 --- a/test/test_poll.rs +++ b/test/test_poll.rs @@ -1,6 +1,4 @@ use nix::poll::{EventFlags, poll, PollFd}; -use nix::sys::signal::SigSet; -use nix::sys::time::{TimeSpec, TimeValLike}; use nix::unistd::{write, pipe, close}; #[test] @@ -49,6 +47,9 @@ fn test_poll_debug() { #[test] fn test_ppoll() { use nix::poll::ppoll; + use nix::sys::signal::SigSet; + use nix::sys::time::{TimeSpec, TimeValLike}; + let timeout = TimeSpec::milliseconds(1); let (r, w) = pipe().unwrap(); let mut fds = [PollFd::new(r, EventFlags::POLLIN)]; diff --git a/test/test_stat.rs b/test/test_stat.rs index bd16e635..9d27ce79 100644 --- a/test/test_stat.rs +++ b/test/test_stat.rs @@ -3,13 +3,20 @@ use std::os::unix::fs::symlink; use std::os::unix::prelude::AsRawFd; use std::time::{Duration, UNIX_EPOCH}; +#[cfg(not(any(target_os = "netbsd")))] use libc::{S_IFMT, S_IFLNK}; use nix::fcntl; -use nix::sys::stat::{self, fchmod, fchmodat, fstat, futimens, lstat, lutimes, stat, utimes, utimensat}; -use nix::sys::stat::{FileStat, Mode, FchmodatFlags, UtimensatFlags}; +use nix::sys::stat::{self, fchmod, fchmodat, futimens, lutimes, stat, utimes, utimensat}; +use nix::sys::stat::{Mode, FchmodatFlags, UtimensatFlags}; + +#[cfg(not(any(target_os = "netbsd")))] +use nix::sys::stat::FileStat; + use nix::sys::time::{TimeSpec, TimeVal, TimeValLike}; use nix::unistd::chdir; + +#[cfg(not(any(target_os = "netbsd")))] use nix::Result; use tempfile; @@ -17,12 +24,14 @@ use tempfile; // uid and gid are signed on Windows, but not on other platforms. This function // allows warning free compiles on all platforms, and can be removed when // expression-level #[allow] is available. +#[cfg(not(any(target_os = "netbsd")))] fn valid_uid_gid(stat: FileStat) -> bool { // uid could be 0 for the `root` user. This quite possible when // the tests are being run on a rooted Android device. stat.st_uid >= 0 && stat.st_gid >= 0 } +#[cfg(not(any(target_os = "netbsd")))] fn assert_stat_results(stat_result: Result<FileStat>) { let stats = stat_result.expect("stat call failed"); assert!(stats.st_dev > 0); // must be positive integer, exact number machine dependent @@ -35,6 +44,7 @@ fn assert_stat_results(stat_result: Result<FileStat>) { assert!(stats.st_blocks <= 16); // Up to 16 blocks can be allocated for a blank file } +#[cfg(not(any(target_os = "netbsd")))] fn assert_lstat_results(stat_result: Result<FileStat>) { let stats = stat_result.expect("stat call failed"); assert!(stats.st_dev > 0); // must be positive integer, exact number machine dependent @@ -57,7 +67,10 @@ fn assert_lstat_results(stat_result: Result<FileStat>) { } #[test] +#[cfg(not(any(target_os = "netbsd")))] fn test_stat_and_fstat() { + use nix::sys::stat::fstat; + let tempdir = tempfile::tempdir().unwrap(); let filename = tempdir.path().join("foo.txt"); let file = File::create(&filename).unwrap(); @@ -70,6 +83,7 @@ fn test_stat_and_fstat() { } #[test] +#[cfg(not(any(target_os = "netbsd")))] fn test_fstatat() { let tempdir = tempfile::tempdir().unwrap(); let filename = tempdir.path().join("foo.txt"); @@ -85,7 +99,10 @@ fn test_fstatat() { } #[test] +#[cfg(not(any(target_os = "netbsd")))] fn test_stat_fstat_lstat() { + use nix::sys::stat::{fstat, lstat}; + let tempdir = tempfile::tempdir().unwrap(); let filename = tempdir.path().join("bar.txt"); let linkname = tempdir.path().join("barlink"); diff --git a/test/test_unistd.rs b/test/test_unistd.rs index 8b373278..ead4b487 100644 --- a/test/test_unistd.rs +++ b/test/test_unistd.rs @@ -13,6 +13,7 @@ use tempfile::{self, tempfile}; use libc::{self, _exit, off_t}; #[test] +#[cfg(not(any(target_os = "netbsd")))] fn test_fork_and_waitpid() { let _m = ::FORK_MTX.lock().expect("Mutex got poisoned by another test"); @@ -230,15 +231,15 @@ cfg_if!{ execve_test_factory!(test_fexecve, fexecve, File::open("/system/bin/sh").unwrap().into_raw_fd()); } else if #[cfg(any(target_os = "freebsd", target_os = "linux", - target_os = "netbsd", target_os = "openbsd"))] { execve_test_factory!(test_execve, execve, &CString::new("/bin/sh").unwrap()); execve_test_factory!(test_fexecve, fexecve, File::open("/bin/sh").unwrap().into_raw_fd()); } else if #[cfg(any(target_os = "dragonfly", target_os = "ios", - target_os = "macos"))] { + target_os = "macos", + target_os = "netbsd"))] { execve_test_factory!(test_execve, execve, &CString::new("/bin/sh").unwrap()); - // No fexecve() on macos/ios and DragonFly. + // No fexecve() on DragonFly, ios, macos, and NetBSD. } } |