use std::process::Command; #[test] fn cli_help_and_version_are_available_without_connecting() { let output = Command::new(env!("CARGO_BIN_EXE_runa-cli")) .arg("--help") .env_remove("RUNA_CONNECT") .output() .unwrap(); assert!(output.status.success()); let help = String::from_utf8(output.stdout).unwrap(); assert!(help.contains("runa-cli")); assert!(help.contains("--connect")); assert!(help.contains("RUNA_CONNECT")); assert!(help.contains("127.0.0.1:3737")); for subcommand in [ "repl", "ps", "sources", "spawn", "send", "tick", "inspect", "events", "write", "commit", "history", "rollback", "stop", "kill", "restart", "pause", "resume", "reload", "become", "quit", ] { let output = Command::new(env!("CARGO_BIN_EXE_runa-cli")) .args([subcommand, "--help"]) .env_remove("RUNA_CONNECT") .output() .unwrap(); assert!(output.status.success(), "{subcommand}"); assert!(String::from_utf8(output.stdout).unwrap().contains("Usage:")); } let output = Command::new(env!("CARGO_BIN_EXE_runa-cli")) .arg("--version") .output() .unwrap(); assert!(output.status.success()); assert_eq!( String::from_utf8(output.stdout).unwrap().trim(), "runa-cli 0.0.0" ); } #[test] fn clap_rejects_bad_flags_addresses_and_environment_values() { for args in [ vec!["--connect"], vec!["--connect", "invalid"], vec!["--listen", "127.0.0.1:3737"], vec!["extra"], vec!["actors"], vec!["cancel", "actor"], vec!["spawn", "actors/counter"], vec!["tick", "1", "0"], vec![], ] { let output = Command::new(env!("CARGO_BIN_EXE_runa-cli")) .args(args) .env_remove("RUNA_CONNECT") .output() .unwrap(); assert_eq!(output.status.code(), Some(2)); assert!(!output.stderr.is_empty()); } let output = Command::new(env!("CARGO_BIN_EXE_runa-cli")) .env("RUNA_CONNECT", "invalid") .output() .unwrap(); assert_eq!(output.status.code(), Some(2)); assert!( String::from_utf8(output.stderr) .unwrap() .contains("--connect") ); }