1 use test_programs::p3::wasi::cli::{ 2 environment, stderr, stdin, stdout, terminal_stderr, terminal_stdin, terminal_stdout, 3 }; 4 use test_programs::p3::wit_stream; 5 use wit_bindgen::StreamResult; 6 7 struct Component; 8 9 test_programs::p3::export!(Component); 10 11 impl test_programs::p3::exports::wasi::cli::run::Guest for Component { 12 async fn run() -> Result<(), ()> { 13 assert_eq!(environment::get_arguments(), ["p3_cli.component", "."]); 14 assert_ne!(environment::get_environment(), []); 15 assert_eq!(environment::get_initial_cwd(), None); 16 17 assert!(terminal_stdin::get_terminal_stdin().is_none()); 18 assert!(terminal_stdout::get_terminal_stdout().is_none()); 19 assert!(terminal_stderr::get_terminal_stderr().is_none()); 20 21 let mut stdin = stdin::get_stdin(); 22 assert!(stdin.next().await.is_none()); 23 24 let (mut stdout_tx, stdout_rx) = wit_stream::new(); 25 stdout::set_stdout(stdout_rx); 26 let (res, buf) = stdout_tx.write(b"hello stdout\n".into()).await; 27 assert_eq!(res, StreamResult::Complete(13)); 28 assert_eq!(buf.into_vec(), []); 29 30 let (mut stderr_tx, stderr_rx) = wit_stream::new(); 31 stderr::set_stderr(stderr_rx); 32 let (res, buf) = stderr_tx.write(b"hello stderr\n".into()).await; 33 assert_eq!(res, StreamResult::Complete(13)); 34 assert_eq!(buf.into_vec(), []); 35 36 Ok(()) 37 } 38 } 39 40 fn main() {} 41