summaryrefslogtreecommitdiff
path: root/tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs')
-rw-r--r--tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs25
1 files changed, 22 insertions, 3 deletions
diff --git a/tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs b/tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs
index 192f82731..acc034830 100644
--- a/tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs
+++ b/tests/specs/node/child_process_extra_pipes/test-pipe/src/main.rs
@@ -1,12 +1,31 @@
+use std::fs::File;
use std::io::prelude::*;
use std::os::fd::FromRawFd;
-use std::os::unix::net::UnixStream;
fn main() {
#[cfg(unix)]
{
- let mut stream = unsafe { UnixStream::from_raw_fd(4) };
+ let mut pipe = unsafe { File::from_raw_fd(4) };
- stream.write_all(b"hello world\n").unwrap();
+ let mut read = 0;
+ let mut buf = [0u8; 1024];
+ loop {
+ if read > 4 {
+ assert_eq!(&buf[..5], b"start");
+ break;
+ }
+ match pipe.read(&mut buf) {
+ Ok(n) => {
+ read += n;
+ }
+ Ok(0) => {
+ return;
+ }
+ Err(e) => {
+ eprintln!("GOT ERROR: {e:?}");
+ }
+ }
+ }
+ pipe.write_all(b"hello world").unwrap();
}
}