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")); 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"], ] { 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") ); }