clap/clap_complete/tests/testsuite/zsh.rs

163 lines
3.8 KiB
Rust
Raw Normal View History

use crate::common;
#[test]
fn basic() {
let name = "my-app";
let cmd = common::basic_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/basic.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn feature_sample() {
let name = "my-app";
let cmd = common::feature_sample_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/feature_sample.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn special_commands() {
let name = "my-app";
let cmd = common::special_commands_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/special_commands.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn quoting() {
let name = "my-app";
let cmd = common::quoting_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/quoting.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn aliases() {
let name = "my-app";
let cmd = common::aliases_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/aliases.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn sub_subcommands() {
let name = "my-app";
let cmd = common::sub_subcommands_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/sub_subcommands.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn custom_bin_name() {
let name = "my-app";
let bin_name = "bin-name";
let cmd = common::basic_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/custom_bin_name.zsh"],
clap_complete::shells::Zsh,
cmd,
bin_name,
);
}
#[test]
fn value_hint() {
let name = "my-app";
let cmd = common::value_hint_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/value_hint.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn value_terminator() {
let name = "my-app";
let cmd = common::value_terminator_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/value_terminator.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn two_multi_valued_arguments() {
let name = "my-app";
let cmd = common::two_multi_valued_arguments_command(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/two_multi_valued_arguments.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
fn subcommand_last() {
let name = "my-app";
let cmd = common::subcommand_last(name);
2024-02-14 22:44:57 +00:00
common::assert_matches(
snapbox::file!["../snapshots/subcommand_last.zsh"],
clap_complete::shells::Zsh,
cmd,
name,
);
}
#[test]
#[cfg(unix)]
fn register_completion() {
2024-01-15 18:20:57 +00:00
common::register_example::<completest_pty::ZshRuntimeBuilder>("static", "exhaustive");
}
#[test]
#[cfg(unix)]
fn complete() {
if !common::has_command("zsh") {
return;
}
let term = completest::Term::new();
2024-01-15 18:20:57 +00:00
let mut runtime =
common::load_runtime::<completest_pty::ZshRuntimeBuilder>("static", "exhaustive");
let input = "exhaustive \t";
2024-02-14 22:44:57 +00:00
let expected = snapbox::str![
r#"% exhaustive
2024-01-15 20:42:42 +00:00
complete -- Register shell completions for this program
help -- Print this message or the help of the given subcommand(s)
2024-02-14 22:44:57 +00:00
pacman action alias value quote hint last -- "#
];
let actual = runtime.complete(input, &term).unwrap();
snapbox::assert_eq(expected, actual);
}