#![allow(dead_code)]
#![allow(unused_variables)]
pub const COMPSYS_FN_NAMES: &[&str] = &[
"_all_labels",
"_alternative",
"_approximate",
"_arguments",
"_call_program",
"_canonical_paths",
"_cargo",
"_cat",
"_cd",
"_combination",
"_command_names",
"_complete",
"_completers",
"_correct",
"_cp",
"_describe",
"_description",
"_dir_list",
"_directories",
"_dispatch",
"_docker",
"_email_addresses",
"_expand",
"_files",
"_git",
"_grep",
"_history",
"_ignored",
"_kubectl",
"_ls",
"_main_complete",
"_match",
"_menu",
"_message",
"_multi_parts",
"_mv",
"_next_label",
"_normal",
"_numbers",
"_path_files",
"_pick_variant",
"_prefix",
"_requested",
"_rm",
"_sep_parts",
"_sequence",
"_tags",
"_terraform",
"_tilde_files",
"_values",
"_wanted",
"_widgets",
];
pub mod cache;
pub mod in_editor;
pub mod ported;
pub mod router;
pub mod zpwr_colors;
pub use ported::compinit::{
build_cache_from_fpath, cache_entry_count, cache_is_valid, check_dump, compdump, compinit,
compinit_lazy, get_system_fpath, load_from_cache, CompDef, CompFile, CompFileDef, CompInitOpts,
CompInitResult,
};
pub use zpwr_colors::{
load_zpwr_config, parse_zstyles_from_config, parse_zstyles_from_content, zpwr_list_colors,
HeaderColors, ParsedZstyle, ZstyleColors, DEFAULT_PREFIX_COLOR, MENU_SELECTION_COLOR,
};
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn compsys_fn_names_is_nonempty() {
assert!(
!COMPSYS_FN_NAMES.is_empty(),
"inventory must list at least one native completer"
);
assert!(
COMPSYS_FN_NAMES.len() >= 30,
"expected ≥30 entries in COMPSYS_FN_NAMES, got {}",
COMPSYS_FN_NAMES.len()
);
}
#[test]
fn compsys_fn_names_all_start_with_underscore() {
for name in COMPSYS_FN_NAMES {
assert!(
name.starts_with('_'),
"compsys function name {name:?} must start with `_`"
);
}
}
#[test]
fn compsys_fn_names_have_no_empty_entries() {
for name in COMPSYS_FN_NAMES {
assert!(!name.is_empty(), "empty entry in COMPSYS_FN_NAMES");
assert!(name.len() >= 2, "stub entry {name:?} too short");
}
}
#[test]
fn compsys_fn_names_are_unique() {
let mut seen = std::collections::HashSet::new();
for name in COMPSYS_FN_NAMES {
assert!(
seen.insert(*name),
"duplicate entry {name:?} in COMPSYS_FN_NAMES"
);
}
}
#[test]
fn compsys_fn_names_are_sorted() {
let mut sorted = COMPSYS_FN_NAMES.to_vec();
sorted.sort();
assert_eq!(
sorted,
COMPSYS_FN_NAMES.to_vec(),
"COMPSYS_FN_NAMES must be sorted"
);
}
#[test]
fn compsys_fn_names_use_only_underscore_and_alnum() {
for name in COMPSYS_FN_NAMES {
assert!(
name.chars().all(|c| c.is_ascii_alphanumeric() || c == '_'),
"bad character in compsys function name {name:?}"
);
}
}
#[test]
fn compsys_fn_names_include_core_dispatcher() {
assert!(
COMPSYS_FN_NAMES.contains(&"_main_complete"),
"_main_complete must be in COMPSYS_FN_NAMES"
);
}
#[test]
fn compsys_fn_names_include_arguments_engine() {
assert!(COMPSYS_FN_NAMES.contains(&"_arguments"));
}
#[test]
fn compsys_fn_names_include_file_path_completers() {
for fn_name in [
"_files",
"_directories",
"_path_files",
"_tilde_files",
"_canonical_paths",
] {
assert!(
COMPSYS_FN_NAMES.contains(&fn_name),
"path completer {fn_name:?} missing from inventory"
);
}
}
#[test]
fn compsys_fn_names_include_per_command_wired_in_main() {
for fn_name in ["_git", "_docker", "_cargo", "_kubectl", "_terraform"] {
assert!(
COMPSYS_FN_NAMES.contains(&fn_name),
"per-command completer {fn_name:?} missing from inventory"
);
}
}
#[test]
fn compsys_fn_names_include_baseline_unix_stubs() {
for fn_name in ["_ls", "_cd", "_cp", "_mv", "_rm", "_cat", "_grep"] {
assert!(
COMPSYS_FN_NAMES.contains(&fn_name),
"baseline stub {fn_name:?} missing from inventory"
);
}
}
#[test]
fn compsys_fn_names_include_tag_machinery() {
for fn_name in [
"_tags",
"_requested",
"_wanted",
"_all_labels",
"_next_label",
] {
assert!(
COMPSYS_FN_NAMES.contains(&fn_name),
"tag machinery {fn_name:?} missing from inventory"
);
}
}
}