diff options
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/net/udp.rs | 9 | ||||
| -rw-r--r-- | src/libstd/process.rs | 13 | ||||
| -rw-r--r-- | src/libstd/sys/unix/process.rs | 33 |
3 files changed, 34 insertions, 21 deletions
diff --git a/src/libstd/net/udp.rs b/src/libstd/net/udp.rs index 9e4d38e4615..0d3d15401fd 100644 --- a/src/libstd/net/udp.rs +++ b/src/libstd/net/udp.rs @@ -185,14 +185,13 @@ mod tests { } } - // FIXME #11530 this fails on android because tests are run as root - #[cfg_attr(any(windows, target_os = "android"), ignore)] #[test] fn bind_error() { - let addr = SocketAddrV4::new(Ipv4Addr::new(0, 0, 0, 0), 1); - match UdpSocket::bind(&addr) { + match UdpSocket::bind("1.1.1.1:9999") { Ok(..) => panic!(), - Err(e) => assert_eq!(e.kind(), ErrorKind::PermissionDenied), + Err(e) => { + assert_eq!(e.kind(), ErrorKind::AddrNotAvailable) + } } } diff --git a/src/libstd/process.rs b/src/libstd/process.rs index 5f5d5a69003..0be751be950 100644 --- a/src/libstd/process.rs +++ b/src/libstd/process.rs @@ -625,17 +625,20 @@ mod tests { drop(p.wait()); } + #[cfg(unix)] #[cfg(all(unix, not(target_os="android")))] - #[test] fn signal_reported_right() { use os::unix::process::ExitStatusExt; - let p = Command::new("/bin/sh").arg("-c").arg("kill -9 $$").spawn(); - assert!(p.is_ok()); - let mut p = p.unwrap(); + let mut p = Command::new("/bin/sh") + .arg("-c").arg("read a") + .stdin(Stdio::piped()) + .spawn().unwrap(); + p.kill().unwrap(); match p.wait().unwrap().signal() { Some(9) => {}, - result => panic!("not terminated by signal 9 (instead, {:?})", result), + result => panic!("not terminated by signal 9 (instead, {:?})", + result), } } diff --git a/src/libstd/sys/unix/process.rs b/src/libstd/sys/unix/process.rs index ce6e5609ce7..7f50e75f6fc 100644 --- a/src/libstd/sys/unix/process.rs +++ b/src/libstd/sys/unix/process.rs @@ -450,6 +450,15 @@ mod tests { use slice; use sys::{self, c, cvt, pipe}; + macro_rules! t { + ($e:expr) => { + match $e { + Ok(t) => t, + Err(e) => panic!("received error for `{}`: {}", stringify!($e), e), + } + } + } + #[cfg(not(target_os = "android"))] extern { #[cfg_attr(target_os = "netbsd", link_name = "__sigaddset14")] @@ -473,24 +482,26 @@ mod tests { unsafe { // Test to make sure that a signal mask does not get inherited. let cmd = Command::new(OsStr::new("cat")); - let (stdin_read, stdin_write) = sys::pipe::anon_pipe().unwrap(); - let (stdout_read, stdout_write) = sys::pipe::anon_pipe().unwrap(); + let (stdin_read, stdin_write) = t!(sys::pipe::anon_pipe()); + let (stdout_read, stdout_write) = t!(sys::pipe::anon_pipe()); let mut set: c::sigset_t = mem::uninitialized(); let mut old_set: c::sigset_t = mem::uninitialized(); - cvt(c::sigemptyset(&mut set)).unwrap(); - cvt(sigaddset(&mut set, libc::SIGINT)).unwrap(); - cvt(c::pthread_sigmask(c::SIG_SETMASK, &set, &mut old_set)).unwrap(); + t!(cvt(c::sigemptyset(&mut set))); + t!(cvt(sigaddset(&mut set, libc::SIGINT))); + t!(cvt(c::pthread_sigmask(c::SIG_SETMASK, &set, &mut old_set))); - let cat = Process::spawn(&cmd, Stdio::Raw(stdin_read.raw()), - Stdio::Raw(stdout_write.raw()), - Stdio::None).unwrap(); + let cat = t!(Process::spawn(&cmd, Stdio::Raw(stdin_read.raw()), + Stdio::Raw(stdout_write.raw()), + Stdio::None)); drop(stdin_read); drop(stdout_write); - cvt(c::pthread_sigmask(c::SIG_SETMASK, &old_set, ptr::null_mut())).unwrap(); + t!(cvt(c::pthread_sigmask(c::SIG_SETMASK, &old_set, + ptr::null_mut()))); - cvt(libc::funcs::posix88::signal::kill(cat.id() as libc::pid_t, libc::SIGINT)).unwrap(); + t!(cvt(libc::funcs::posix88::signal::kill(cat.id() as libc::pid_t, + libc::SIGINT))); // We need to wait until SIGINT is definitely delivered. The // easiest way is to write something to cat, and try to read it // back: if SIGINT is unmasked, it'll get delivered when cat is @@ -504,7 +515,7 @@ mod tests { assert!(ret == 0); } - cat.wait().unwrap(); + t!(cat.wait()); } } } |
