MCPcopy Create free account
hub / github.com/bytecodealliance/wasmtime / parent_process

Function parent_process

crates/wasi/tests/process_stdin.rs:93–162  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

91}
92
93fn parent_process() {
94 let me = std::env::current_exe().unwrap();
95 let mut cmd = Command::new(me);
96 cmd.env(VAR_NAME, "1");
97 cmd.stdin(std::process::Stdio::piped());
98
99 if std::env::args().any(|arg| arg == "--nocapture") {
100 cmd.stdout(std::process::Stdio::inherit());
101 } else {
102 cmd.stdout(std::process::Stdio::null());
103 }
104
105 cmd.stderr(std::process::Stdio::piped());
106 let mut child = cmd.spawn().unwrap();
107
108 let mut stdin_write = child.stdin.take().unwrap();
109 let mut result_read = std::io::BufReader::new(child.stderr.take().unwrap());
110
111 let mut line = String::new();
112 result_read.read_line(&mut line).unwrap();
113 assert_eq!(line, "start\n");
114
115 for i in 0..5 {
116 let message = format!("some bytes {i}\n");
117 stdin_write.write_all(message.as_bytes()).unwrap();
118 line.clear();
119 result_read.read_line(&mut line).unwrap();
120 assert_eq!(line, message);
121 }
122
123 writeln!(&mut stdin_write, "restart_task").unwrap();
124 line.clear();
125 result_read.read_line(&mut line).unwrap();
126 assert_eq!(line, "restarting\n");
127 line.clear();
128
129 result_read.read_line(&mut line).unwrap();
130 assert_eq!(line, "start\n");
131
132 for i in 0..10 {
133 let message = format!("more bytes {i}\n");
134 stdin_write.write_all(message.as_bytes()).unwrap();
135 line.clear();
136 result_read.read_line(&mut line).unwrap();
137 assert_eq!(line, message);
138 }
139
140 writeln!(&mut stdin_write, "restart_runtime").unwrap();
141 line.clear();
142 result_read.read_line(&mut line).unwrap();
143 assert_eq!(line, "restarting\n");
144 line.clear();
145
146 result_read.read_line(&mut line).unwrap();
147 assert_eq!(line, "start\n");
148
149 for i in 0..17 {
150 let message = format!("even more bytes {i}\n");

Callers 1

mainFunction · 0.85

Calls 12

anyMethod · 0.80
write_allMethod · 0.80
as_bytesMethod · 0.80
newFunction · 0.50
unwrapMethod · 0.45
envMethod · 0.45
stdinMethod · 0.45
stdoutMethod · 0.45
stderrMethod · 0.45
spawnMethod · 0.45
takeMethod · 0.45
clearMethod · 0.45

Tested by

no test coverage detected