chiark / gitweb /
childio: test cases
authorIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 31 May 2021 12:47:49 +0000 (13:47 +0100)
committerIan Jackson <ijackson@chiark.greenend.org.uk>
Mon, 31 May 2021 13:46:04 +0000 (14:46 +0100)
Signed-off-by: Ian Jackson <ijackson@chiark.greenend.org.uk>
src/childio.rs

index 35446b24732d2937e969c53a2ab99b4e7b112744..8f4bd213afaf1105b235c1ee9552c8e64941889f 100644 (file)
@@ -109,3 +109,33 @@ impl<W> Write for ChildIo<W> 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 );
+}
+
+}