From: Ian Jackson Date: Mon, 31 May 2021 12:47:49 +0000 (+0100) Subject: childio: test cases X-Git-Tag: otter-0.7.0~204 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=commitdiff_plain;h=db2810c784befda35e0e234d58c03c23d9042605;p=otter.git childio: test cases Signed-off-by: Ian Jackson --- diff --git a/src/childio.rs b/src/childio.rs index 35446b24..8f4bd213 100644 --- a/src/childio.rs +++ b/src/childio.rs @@ -109,3 +109,33 @@ impl Write for ChildIo where W: Write { self.rw_result(r.map(|()|0)).map(|_|()) } } + +#[cfg(test)] +#[cfg(not(miri))] +mod test { +use crate::prelude::*; +use super::*; + +#[test] +fn t_cat() { + let c = Command::new("cat"); + let (mut w, mut r) = run_pair(c, "cat".into()).unwrap(); + assert_eq!( write!(w, "hi").unwrap(), () ); + assert_eq!( w.flush() .unwrap(), () ); + let mut buf = [0;10]; + assert_eq!( r.read(&mut buf).unwrap(), 2 ); + assert_eq!(&buf[0..2], b"hi"); +} + +#[test] +fn t_false() { + let c = Command::new("false"); + let (_w, mut r) = run_pair(c, "cat".into()).unwrap(); + let mut buf = [0;10]; + let e = r.read(&mut buf).unwrap_err(); + assert_eq!( e.kind(), ErrorKind::Other ); + let es = e.to_string(); + assert!( es.ends_with("exit status: 1"), "actually {:?}", es ); +} + +}