summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/test.rs12
-rw-r--r--test/test_pty.rs24
-rw-r--r--test/test_unistd.rs26
3 files changed, 33 insertions, 29 deletions
diff --git a/test/test.rs b/test/test.rs
index e2f5a024..2cf30360 100644
--- a/test/test.rs
+++ b/test/test.rs
@@ -24,6 +24,18 @@ mod test_stat;
mod test_unistd;
use nixtest::assert_size_of;
+use std::os::unix::io::RawFd;
+use nix::unistd::read;
+
+/// Helper function analogous to std::io::Read::read_exact, but for `RawFD`s
+fn read_exact(f: RawFd, buf: &mut [u8]) {
+ let mut len = 0;
+ while len < buf.len() {
+ // get_mut would be better than split_at_mut, but it requires nightly
+ let (_, remaining) = buf.split_at_mut(len);
+ len += read(f, remaining).unwrap();
+ }
+}
#[test]
pub fn test_size_of_long() {
diff --git a/test/test_pty.rs b/test/test_pty.rs
index b1c2d630..8528caf7 100644
--- a/test/test_pty.rs
+++ b/test/test_pty.rs
@@ -5,17 +5,7 @@ use nix::fcntl::{O_RDWR, open};
use nix::pty::*;
use nix::sys::stat;
use nix::sys::termios::*;
-use nix::unistd::{read, write, close};
-
-/// Helper function analogous to std::io::Read::read_exact, but for `RawFD`s
-fn read_exact(f: RawFd, buf: &mut [u8]) {
- let mut len = 0;
- while len < buf.len() {
- // get_mut would be better than split_at_mut, but it requires nightly
- let (_, remaining) = buf.split_at_mut(len);
- len += read(f, remaining).unwrap();
- }
-}
+use nix::unistd::{write, close};
/// Test equivalence of `ptsname` and `ptsname_r`
#[test]
@@ -115,21 +105,21 @@ fn test_openpty() {
let string = "foofoofoo\n";
let mut buf = [0u8; 10];
write(pty.master, string.as_bytes()).unwrap();
- read_exact(pty.slave, &mut buf);
+ ::read_exact(pty.slave, &mut buf);
assert_eq!(&buf, string.as_bytes());
// Read the echo as well
let echoed_string = "foofoofoo\r\n";
let mut buf = [0u8; 11];
- read_exact(pty.master, &mut buf);
+ ::read_exact(pty.master, &mut buf);
assert_eq!(&buf, echoed_string.as_bytes());
let string2 = "barbarbarbar\n";
let echoed_string2 = "barbarbarbar\r\n";
let mut buf = [0u8; 14];
write(pty.slave, string2.as_bytes()).unwrap();
- read_exact(pty.master, &mut buf);
+ ::read_exact(pty.master, &mut buf);
assert_eq!(&buf, echoed_string2.as_bytes());
@@ -160,20 +150,20 @@ fn test_openpty_with_termios() {
let string = "foofoofoo\n";
let mut buf = [0u8; 10];
write(pty.master, string.as_bytes()).unwrap();
- read_exact(pty.slave, &mut buf);
+ ::read_exact(pty.slave, &mut buf);
assert_eq!(&buf, string.as_bytes());
// read the echo as well
let echoed_string = "foofoofoo\n";
- read_exact(pty.master, &mut buf);
+ ::read_exact(pty.master, &mut buf);
assert_eq!(&buf, echoed_string.as_bytes());
let string2 = "barbarbarbar\n";
let echoed_string2 = "barbarbarbar\n";
let mut buf = [0u8; 13];
write(pty.slave, string2.as_bytes()).unwrap();
- read_exact(pty.master, &mut buf);
+ ::read_exact(pty.master, &mut buf);
assert_eq!(&buf, echoed_string2.as_bytes());
diff --git a/test/test_unistd.rs b/test/test_unistd.rs
index 6012de97..22aa5da8 100644
--- a/test/test_unistd.rs
+++ b/test/test_unistd.rs
@@ -7,7 +7,7 @@ use nix::sys::stat;
use std::iter;
use std::ffi::CString;
use std::fs::File;
-use std::io::{Write, Read};
+use std::io::Write;
use std::os::unix::prelude::*;
use std::env::current_dir;
use tempfile::tempfile;
@@ -185,16 +185,17 @@ fn test_getcwd() {
fn test_lseek() {
const CONTENTS: &'static [u8] = b"abcdef123456";
let mut tmp = tempfile().unwrap();
- tmp.write(CONTENTS).unwrap();
+ tmp.write_all(CONTENTS).unwrap();
+ let tmpfd = tmp.into_raw_fd();
let offset: off_t = 5;
- lseek(tmp.as_raw_fd(), offset, Whence::SeekSet).unwrap();
+ lseek(tmpfd, offset, Whence::SeekSet).unwrap();
- let mut buf = String::new();
- tmp.read_to_string(&mut buf).unwrap();
- assert_eq!(b"f123456", buf.as_bytes());
+ let mut buf = [0u8; 7];
+ ::read_exact(tmpfd, &mut buf);
+ assert_eq!(b"f123456", &buf);
- close(tmp.as_raw_fd()).unwrap();
+ close(tmpfd).unwrap();
}
#[cfg(any(target_os = "linux", target_os = "android"))]
@@ -203,14 +204,15 @@ fn test_lseek64() {
const CONTENTS: &'static [u8] = b"abcdef123456";
let mut tmp = tempfile().unwrap();
tmp.write(CONTENTS).unwrap();
+ let tmpfd = tmp.into_raw_fd();
- lseek64(tmp.as_raw_fd(), 5, Whence::SeekSet).unwrap();
+ lseek64(tmpfd, 5, Whence::SeekSet).unwrap();
- let mut buf = String::new();
- tmp.read_to_string(&mut buf).unwrap();
- assert_eq!(b"f123456", buf.as_bytes());
+ let mut buf = [0u8; 7];
+ ::read_exact(tmpfd, &mut buf);
+ assert_eq!(b"f123456", &buf);
- close(tmp.as_raw_fd()).unwrap();
+ close(tmpfd).unwrap();
}
execve_test_factory!(test_execve, execve, b"/bin/sh", b"/system/bin/sh");