//! 已收集参数直接交给解析器,保持子命令、校验与透传行为。 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()); } }