summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorAndrei-Marius Radu <thendiscard@users.noreply.github.com>2019-01-14 22:18:06 +0200
committerAndrei-Marius Radu <thendiscard@users.noreply.github.com>2019-01-15 00:53:52 +0200
commitbdca86b8f779ca258106c44ba380c0bd508ce911 (patch)
tree48be710bf6c49f0ec81b0fea47a70ad5d3d29498 /test
parent7bcd9d2318602553c6bd917a4e552a580f9156bb (diff)
downloadnix-bdca86b8f779ca258106c44ba380c0bd508ce911.zip
Fix build and tests issues on OpenBSD 6.4+
1) lutimes doesn't exist on OpenBSD so it needs to be under conditional compilation. The only "reference" that I could find related to this is the discussion here: https://github.com/rust-lang/libc/pull/790 . 2) fexecve doesn't exist on OpenBSD so add conditional compilation for it in unistd and in related tests. The only "reference" that I could find is a mention that fexecve is not implemented on OpenBSD in the manual pages for signal(3) and sigaction(2): Official repository (search for "fexecve"): https://cvsweb.openbsd.org/src/lib/libc/sys/sigaction.2?rev=1.75&content-type=text/x-cvsweb-markup Github mirror: https://github.com/openbsd/src/blob/master/lib/libc/sys/sigaction.2#L619 3) AIO doesn't work on OpenBSD so put test_aio_drop under conditional compilation. 4) Add relevant changelog entries. P.S. On OpenBSD remains the issue of test_scm_rights which builds correctly but fails at runtime.
Diffstat (limited to 'test')
-rw-r--r--test/sys/test_aio_drop.rs17
-rw-r--r--test/test_stat.rs15
-rw-r--r--test/test_unistd.rs12
3 files changed, 33 insertions, 11 deletions
diff --git a/test/sys/test_aio_drop.rs b/test/sys/test_aio_drop.rs
index 1f4a3e79..492da401 100644
--- a/test/sys/test_aio_drop.rs
+++ b/test/sys/test_aio_drop.rs
@@ -1,18 +1,23 @@
extern crate nix;
extern crate tempfile;
-use nix::sys::aio::*;
-use nix::sys::signal::*;
-use std::os::unix::io::AsRawFd;
-use tempfile::tempfile;
-
// Test dropping an AioCb that hasn't yet finished.
// This must happen in its own process, because on OSX this test seems to hose
// the AIO subsystem and causes subsequent tests to fail
#[test]
#[should_panic(expected = "Dropped an in-progress AioCb")]
-#[cfg(not(target_env = "musl"))]
+#[cfg(all(not(target_env = "musl"),
+ any(target_os = "linux",
+ target_os = "ios",
+ target_os = "macos",
+ target_os = "freebsd",
+ target_os = "netbsd")))]
fn test_drop() {
+ use nix::sys::aio::*;
+ use nix::sys::signal::*;
+ use std::os::unix::io::AsRawFd;
+ use tempfile::tempfile;
+
const WBUF: &[u8] = b"CDEF";
let f = tempfile().unwrap();
diff --git a/test/test_stat.rs b/test/test_stat.rs
index 9d27ce79..fae8df82 100644
--- a/test/test_stat.rs
+++ b/test/test_stat.rs
@@ -7,7 +7,14 @@ use std::time::{Duration, UNIX_EPOCH};
use libc::{S_IFMT, S_IFLNK};
use nix::fcntl;
-use nix::sys::stat::{self, fchmod, fchmodat, futimens, lutimes, stat, utimes, utimensat};
+use nix::sys::stat::{self, fchmod, fchmodat, futimens, stat, utimes, utimensat};
+#[cfg(any(target_os = "linux",
+ target_os = "haiku",
+ target_os = "ios",
+ target_os = "macos",
+ target_os = "freebsd",
+ target_os = "netbsd"))]
+use nix::sys::stat::lutimes;
use nix::sys::stat::{Mode, FchmodatFlags, UtimensatFlags};
#[cfg(not(any(target_os = "netbsd")))]
@@ -196,6 +203,12 @@ fn test_utimes() {
}
#[test]
+#[cfg(any(target_os = "linux",
+ target_os = "haiku",
+ target_os = "ios",
+ target_os = "macos",
+ target_os = "freebsd",
+ target_os = "netbsd"))]
fn test_lutimes() {
let tempdir = tempfile::tempdir().unwrap();
let target = tempdir.path().join("target");
diff --git a/test/test_unistd.rs b/test/test_unistd.rs
index ead4b487..3fb50535 100644
--- a/test/test_unistd.rs
+++ b/test/test_unistd.rs
@@ -230,16 +230,20 @@ cfg_if!{
execve_test_factory!(test_execve, execve, &CString::new("/system/bin/sh").unwrap());
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 = "openbsd"))] {
+ target_os = "linux"))] {
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 = "netbsd"))] {
+ target_os = "netbsd",
+ target_os = "openbsd"))] {
execve_test_factory!(test_execve, execve, &CString::new("/bin/sh").unwrap());
- // No fexecve() on DragonFly, ios, macos, and NetBSD.
+ // No fexecve() on DragonFly, ios, macos, NetBSD, OpenBSD.
+ //
+ // Note for NetBSD and OpenBSD: although rust-lang/libc includes it
+ // (under unix/bsd/netbsdlike/) fexecve is not currently implemented on
+ // NetBSD nor on OpenBSD.
}
}