Add cli tests for skysh (#290)

next
Sanjay Sharma 2 years ago committed by GitHub
parent 927836e170
commit a2f3ff1b48
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -8,7 +8,7 @@ const HELP_TEMPLATE: &'static str = r#"
{all-args}{after-help}
"#;
#[derive(Parser)]
#[derive(Parser, Debug)]
#[command(author, version, about, long_about=None, disable_help_flag=true, help_template=HELP_TEMPLATE)]
pub struct Cli {
#[arg(
@ -43,3 +43,66 @@ pub struct Cli {
#[arg(long, help="Print help information", action=ArgAction::Help)]
pub help: Option<bool>,
}
#[cfg(test)]
mod tests {
use crate::cli::Cli;
use clap::error::ErrorKind;
use clap::Parser;
#[test]
fn test_no_user_args_picks_default_values() {
let args = vec!["skysh"];
let cli: Cli = Cli::parse_from(args.into_iter());
assert_eq!(cli.host, "127.0.0.1");
assert_eq!(cli.port, 2003);
assert_eq!(cli.expressions, None);
assert_eq!(cli.ssl_cert, None);
}
#[test]
fn test_invalid_arg_fails_validation() {
let args = vec!["skysh", "-p", "asd"];
let cli_result: Result<Cli, clap::Error> = Cli::try_parse_from(args.into_iter());
assert!(cli_result.is_err());
assert_eq!(cli_result.unwrap_err().kind(), ErrorKind::ValueValidation);
let args = vec!["skysh", "-h", "-1"];
let cli_result: Result<Cli, clap::Error> = Cli::try_parse_from(args.into_iter());
assert!(cli_result.is_err());
assert_eq!(cli_result.unwrap_err().kind(), ErrorKind::UnknownArgument);
}
#[test]
fn test_arg_override_works_as_expected() {
let args = vec![
"skysh",
"-p",
"666",
"-h",
"devil",
"--sslcert",
"/tmp/mycert.pem",
"-e",
"SET X 100",
"GET X",
"UPDATE X 42",
];
let cli: Cli = Cli::parse_from(args.into_iter());
assert_eq!(cli.host, "devil");
assert_eq!(cli.port, 666);
assert_eq!(cli.ssl_cert, Some("/tmp/mycert.pem".into()));
assert_eq!(
cli.expressions,
Some(vec![
"SET X 100".into(),
"GET X".into(),
"UPDATE X 42".into()
])
)
}
}

Loading…
Cancel
Save