use super::*;
#[test]
fn cli_command_tree_is_clap_valid() {
use clap::CommandFactory;
Cli::command().debug_assert();
}
#[test]
fn max_lane_streams_is_bounded_to_1_through_64() {
let parse = |n: &str| {
Cli::try_parse_from([
"decdn",
"get",
"decdn:af1349b9f5f9a1a6a0404dea36dcc9499bcb25c9adc112b7cc9a93cae41f3262/",
"-o",
"out",
"--max-lane-streams",
n,
])
};
let lanes = |cli: Cli| match cli.command {
Command::Get(args) => args.max_lane_streams,
_ => None,
};
assert_eq!(parse("64").ok().and_then(lanes), Some(64));
assert_eq!(parse("1").ok().and_then(lanes), Some(1));
assert!(parse("65").is_err(), "65 is above the bound");
assert!(parse("0").is_err(), "0 is below the bound");
}
#[test]
fn json_requested_sees_the_flag_at_every_depth() {
use clap::CommandFactory;
for argv in [
&["decdn", "probe", "--json", "--node-id", "x", "--hash", "h"][..],
&["decdn", "node", "status", "--json"][..],
&["decdn", "pool", "list", "--json"][..],
&["decdn", "get", "decdn:abc", "--json"][..],
] {
let matches = Cli::command().get_matches_from(argv);
assert!(json_requested(&matches), "{argv:?} asked for JSON");
}
for argv in [
&["decdn", "probe", "--node-id", "x", "--hash", "h"][..],
&["decdn", "whoami"][..],
&["decdn", "node", "status"][..],
] {
let matches = Cli::command().get_matches_from(argv);
assert!(!json_requested(&matches), "{argv:?} did not ask for JSON");
}
}
#[test]
fn self_update_parses_check() {
#[derive(clap::Parser)]
struct Wrapper {
#[command(flatten)]
args: SelfUpdateArgs,
}
let bare = Wrapper::parse_from(["x"]);
assert!(!bare.args.check);
let check = Wrapper::parse_from(["x", "--check"]);
assert!(check.args.check);
}