47 lines
1.5 KiB
Rust
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());
|
|
}
|
|
}
|