runa/crates/runa-cli/tests/arguments.rs

74 lines
2.3 KiB
Rust

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