Files
core/test/rust/cli/args.rs
T
2026-11-03 03:32:07 +00:00

47 lines
1.5 KiB
Rust

//! 已收集参数直接交给解析器,保持子命令、校验与透传行为。
use super::parse;
#[test]
fn supplied_arguments_preserve_owned_command_and_forwarded_values() {
let arguments = ["run", "project", "--", "--tenant", "7", "demo.value", "{}"].map(String::from);
let command = arguments[0].as_ptr();
let parsed = parse(arguments.into_iter()).unwrap().unwrap();
assert_eq!(parsed.command.as_ptr(), command);
assert_eq!(parsed.source, std::path::Path::new("project"));
assert_eq!(parsed.arguments, ["--tenant", "7", "demo.value", "{}"]);
}
#[test]
fn supplied_arguments_keep_help_tenant_and_build_validation() {
for arguments in [vec![], vec!["--help"], vec!["--version"]] {
assert!(
parse(arguments.into_iter().map(String::from))
.unwrap()
.is_none()
);
}
let tenant = parse(
["tenant", "migrate", "project", "7"]
.map(String::from)
.into_iter(),
)
.unwrap()
.unwrap();
assert_eq!(tenant.command, "run");
assert_eq!(
tenant.arguments,
["--tenant", "7", "dever.tenant.migrate", "null"]
);
for arguments in [
vec!["build", "source"],
vec!["build", "source", "--output", "a", "--output", "b"],
vec!["check", "source", "--output", "a"],
vec!["run", "source", "--target", "linux-x86_64"],
vec!["run", "source", "--entry"],
vec!["unknown"],
] {
assert!(parse(arguments.into_iter().map(String::from)).is_err());
}
}