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

index 3aed0919b4cc0525574d68899d747e0c2f5d62fc..35b43bb42f1a5f6acbbcf7e60bc9a4ad2f783bdb 100644 (file)
@@ -129,7 +129,7 @@ fn t_cat() {
 
 #[test]
 fn t_false() {
-  let one = | f: &dyn Fn(&mut dyn Write, &mut dyn Read) -> io::Result<()> |{
+  let one = | f: &dyn Fn(&mut ChildIo<_>, &mut dyn Read) -> io::Result<()> |{
     let c = Command::new("false");
     let (mut w, mut r) = run_pair(c, "cat".into()).unwrap();
 
@@ -144,6 +144,12 @@ fn t_false() {
     let mut buf = [0;10];
     r.read(&mut buf).map(|_|())
   });
+
+  one(&|w, _r|{
+    // make sure we lose the race and get EPIPE
+    w.child.lock().child.wait().unwrap();
+    write!(w, "hi")
+  });
 }
 
 }