#![cfg(unix)] use std::{fs, path::Path}; use roguewave::LocalCommand; #[tokio::test(flavor = "multi_thread")] async fn test_local_command() -> anyhow::Result<()> { if Path::new("/tmp/21").exists() { println!("OK1"); fs::remove_file("/tmp/21")?; } println!("OK2"); LocalCommand::new(["bash", "-c", "echo OK > /tmp/21"]) .run() .await?; println!("OK3"); assert!(Path::new("/tmp/21").exists()); LocalCommand::new(["rm", "/tmp/21"]).run().await?; println!("OK4"); assert!(!Path::new("/tmp/21").exists()); let output = LocalCommand::new(["echo"]) .arg("arg1") .args(["arg2", "arg3"]) .run() .await?; println!("OK5"); assert_eq!(output.exit_code, 0); assert_eq!(output.stdout, "arg1 arg2 arg3\n"); assert_eq!(output.stderr, ""); LocalCommand::new(["cat", "/tmp/21"]) .run() .await .unwrap_err(); println!("OK6"); let failed_output = LocalCommand::new(["cat", "/tmp/21"]) .allow_failure() .run() .await?; println!("OK7"); assert_eq!(failed_output.exit_code, 1); assert_eq!(failed_output.stdout, ""); assert_eq!( failed_output.stderr, "cat: /tmp/21: No such file or directory\n" ); Ok(()) }