use crate::common; use snapbox::assert_data_eq; #[test] fn basic() { let name = "my-app"; let cmd = common::basic_command(name); common::assert_matches( snapbox::file!["../snapshots/basic.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn feature_sample() { let name = "my-app"; let cmd = common::feature_sample_command(name); common::assert_matches( snapbox::file!["../snapshots/feature_sample.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn special_commands() { let name = "my-app"; let cmd = common::special_commands_command(name); common::assert_matches( snapbox::file!["../snapshots/special_commands.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn quoting() { let name = "my-app"; let cmd = common::quoting_command(name); common::assert_matches( snapbox::file!["../snapshots/quoting.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn aliases() { let name = "my-app"; let cmd = common::aliases_command(name); common::assert_matches( snapbox::file!["../snapshots/aliases.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn sub_subcommands() { let name = "my-app"; let cmd = common::sub_subcommands_command(name); common::assert_matches( snapbox::file!["../snapshots/sub_subcommands.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn custom_bin_name() { let name = "my-app"; let bin_name = "bin-name"; let cmd = common::basic_command(name); common::assert_matches( snapbox::file!["../snapshots/custom_bin_name.elvish"], clap_complete::shells::Elvish, cmd, bin_name, ); } #[test] fn value_hint() { let name = "my-app"; let cmd = common::value_hint_command(name); common::assert_matches( snapbox::file!["../snapshots/value_hint.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn value_terminator() { let name = "my-app"; let cmd = common::value_terminator_command(name); common::assert_matches( snapbox::file!["../snapshots/value_terminator.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn two_multi_valued_arguments() { let name = "my-app"; let cmd = common::two_multi_valued_arguments_command(name); common::assert_matches( snapbox::file!["../snapshots/two_multi_valued_arguments.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] fn subcommand_last() { let name = "my-app"; let cmd = common::subcommand_last(name); common::assert_matches( snapbox::file!["../snapshots/subcommand_last.elvish"], clap_complete::shells::Elvish, cmd, name, ); } #[test] #[cfg(unix)] fn register_completion() { common::register_example::("static", "exhaustive"); } #[test] #[cfg(unix)] fn complete() { if !common::has_command("elvish") { return; } let term = completest::Term::new(); let mut runtime = common::load_runtime::("static", "exhaustive"); let input = "exhaustive \t"; let expected = snapbox::str![[r#" % exhaustive --generate COMPLETING argument --generate generate --global everywhere --help Print help --version Print version -V Print version -h Print help action action alias alias complete Register shell completions for this program help Print this message or the help of the given subcommand(s) hint hint last last pacman pacman quote quote value value "#]]; let actual = runtime.complete(input, &term).unwrap(); assert_data_eq!(actual, expected); } #[test] #[cfg(all(unix, feature = "unstable-dynamic"))] fn register_dynamic_env() { common::register_example::("dynamic-env", "exhaustive"); } #[test] #[cfg(all(unix, feature = "unstable-dynamic"))] fn complete_dynamic_env() { if !common::has_command("elvish") { return; } let term = completest::Term::new(); let mut runtime = common::load_runtime::("dynamic-env", "exhaustive"); let input = "exhaustive \t"; let expected = snapbox::str![[r#" % exhaustive --generate COMPLETING argument --generate --help -V action help last quote --global --version -h alias hint pacman value "#]]; let actual = runtime.complete(input, &term).unwrap(); assert_data_eq!(actual, expected); let input = "exhaustive quote \t"; let expected = snapbox::str![[r#" % exhaustive quote --backslash COMPLETING argument --backslash --double-quotes --single-quotes cmd-backslash cmd-expansions --backticks --expansions --version cmd-backticks cmd-single-quotes --brackets --global -V cmd-brackets escape-help --choice --help -h cmd-double-quotes help "#]]; let actual = runtime.complete(input, &term).unwrap(); assert_data_eq!(actual, expected); } #[test] #[cfg(all(unix, feature = "unstable-command"))] fn register_dynamic_command() { common::register_example::( "dynamic-command", "exhaustive", ); } #[test] #[cfg(all(unix, feature = "unstable-command"))] fn complete_dynamic_command() { if !common::has_command("elvish") { return; } let term = completest::Term::new(); let mut runtime = common::load_runtime::( "dynamic-command", "exhaustive", ); let input = "exhaustive \t"; let expected = snapbox::str![[r#" % exhaustive --generate COMPLETING argument --generate --help -V action help last quote --global --version -h alias hint pacman value "#]]; let actual = runtime.complete(input, &term).unwrap(); assert_data_eq!(actual, expected); let input = "exhaustive quote \t"; let expected = snapbox::str![[r#" % exhaustive quote --backslash COMPLETING argument --backslash --double-quotes --single-quotes cmd-backslash cmd-expansions --backticks --expansions --version cmd-backticks cmd-single-quotes --brackets --global -V cmd-brackets escape-help --choice --help -h cmd-double-quotes help "#]]; let actual = runtime.complete(input, &term).unwrap(); assert_data_eq!(actual, expected); }