summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/sys/socket/addr.rs3
-rw-r--r--src/sys/socket/mod.rs8
-rw-r--r--test/sys/test_socket.rs3
-rw-r--r--test/test_mq.rs10
-rw-r--r--test/test_poll.rs5
-rw-r--r--test/test_stat.rs21
-rw-r--r--test/test_unistd.rs7
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 c776cf5b..1659bd1e 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 5730fb86..1ed6c1f6 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.
}
}