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

95 lines
2.5 KiB
Rust
Raw Normal View History

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",
"set-state",
"set-messages",
"log-level",
"logs",
] {
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")
);
}