mirror of
https://github.com/nushell/nushell.git
synced 2025-08-15 15:33:21 +02:00
Merge branch 'avoid-double-match' of github.com:ysthakur/nushell into avoid-double-match
This commit is contained in:
@ -61,6 +61,32 @@ fn extern_completer() -> NuCompleter {
|
||||
NuCompleter::new(Arc::new(engine), Arc::new(stack))
|
||||
}
|
||||
|
||||
#[fixture]
|
||||
fn completer_strings_with_options() -> NuCompleter {
|
||||
// Create a new engine
|
||||
let (dir, _, mut engine, mut stack) = new_engine();
|
||||
// Add record value as example
|
||||
let record = r#"
|
||||
# To test that the config setting has no effect on the custom completions
|
||||
$env.config.completions.algorithm = "fuzzy"
|
||||
def animals [] {
|
||||
{
|
||||
# Very rare and totally real animals
|
||||
completions: ["Abcdef", "Foo Abcdef", "Acd Bar" ],
|
||||
options: {
|
||||
completion_algorithm: "prefix",
|
||||
positional: false,
|
||||
case_sensitive: false,
|
||||
}
|
||||
}
|
||||
}
|
||||
def my-command [animal: string@animals] { print $animal }"#;
|
||||
assert!(support::merge_input(record.as_bytes(), &mut engine, &mut stack, dir).is_ok());
|
||||
|
||||
// Instantiate a new completer
|
||||
NuCompleter::new(Arc::new(engine), Arc::new(stack))
|
||||
}
|
||||
|
||||
#[fixture]
|
||||
fn custom_completer() -> NuCompleter {
|
||||
// Create a new engine
|
||||
@ -169,6 +195,20 @@ fn variables_customcompletion_subcommands_with_customcompletion_2(
|
||||
match_suggestions(&expected, &suggestions);
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
fn customcompletions_substring_matching(mut completer_strings_with_options: NuCompleter) {
|
||||
let suggestions = completer_strings_with_options.complete("my-command Abcd", 15);
|
||||
let expected: Vec<String> = vec!["Abcdef".into(), "Foo Abcdef".into()];
|
||||
match_suggestions(&expected, &suggestions);
|
||||
}
|
||||
|
||||
#[rstest]
|
||||
fn customcompletions_case_insensitive(mut completer_strings_with_options: NuCompleter) {
|
||||
let suggestions = completer_strings_with_options.complete("my-command foo", 14);
|
||||
let expected: Vec<String> = vec!["Foo Abcdef".into()];
|
||||
match_suggestions(&expected, &suggestions);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn dotnu_completions() {
|
||||
// Create a new engine
|
||||
|
@ -860,10 +860,8 @@ fn search_pattern(data: impl Iterator<Item = String>, pat: &str, rev: bool) -> V
|
||||
}
|
||||
}
|
||||
|
||||
if !rev {
|
||||
matches.sort();
|
||||
} else {
|
||||
matches.sort_by(|a, b| b.cmp(a));
|
||||
if rev {
|
||||
matches.reverse();
|
||||
}
|
||||
|
||||
matches
|
||||
|
Reference in New Issue
Block a user