Increase test coverage and improve completion commenting

This commit is contained in:
ridiculousfish 2016-12-09 12:14:14 -08:00
parent a8a10d634b
commit 05a640b027
3 changed files with 20 additions and 0 deletions

View file

@ -920,6 +920,8 @@ bool completer_t::complete_param(const wcstring &scmd_orig, const wcstring &spop
}
} else if (popt[0] == L'-') {
// Set to true if we found a matching old-style switch.
// Here we are testing the previous argument,
// to see how we should complete the current argument
bool old_style_match = false;
// If we are using old style long options, check for them first.
@ -943,6 +945,8 @@ bool completer_t::complete_param(const wcstring &scmd_orig, const wcstring &spop
const complete_entry_opt_t *o = &*oiter;
// Gnu-style options with _optional_ arguments must be specified as a single
// token, so that it can be differed from a regular argument.
// Here we are testing the previous argument for a GNU-style match,
// to see how we should complete the current argument
if (o->type == option_type_double_long && !(o->result_mode & NO_COMMON))
continue;
@ -960,6 +964,7 @@ bool completer_t::complete_param(const wcstring &scmd_orig, const wcstring &spop
continue;
}
// Now we try to complete an option itself
for (option_list_t::const_iterator oiter = options.begin(); oiter != options.end();
++oiter) {
const complete_entry_opt_t *o = &*oiter;

View file

@ -56,6 +56,16 @@ complete -c TestDoubleDash -l TestDoubleDashOption
complete -C'TestDoubleDash -' | sort
echo "Expect no output:" (complete -C'TestDoubleDash -- -' | sort)
# fish seems to have always handled "exclusive" options strangely
# It seems to treat them the same as "old-style" (single-dash) long options
echo "Testing exclusive options"
complete -c TestExclusive -x -s Q
complete -c TestExclusive -x -s W
complete -c TestExclusive -s A
echo "Expect -A -Q -W:" (complete -C'TestExclusive -' | sort | string join ' ')
echo "Expect -AQ -AW:" (complete -C'TestExclusive -A' | sort | string join ' ')
echo "Expect no output 1:" (complete -C'TestExclusive -Q')
echo "Expect no output 2:" (complete -C'TestExclusive -W')
# Test that directory completions work correctly
if begin; rm -rf test6.tmp.dir; and mkdir test6.tmp.dir; end

View file

@ -33,6 +33,11 @@ CCCC:
Test that -- suppresses option completions
--TestDoubleDashOption
Expect no output:
Testing exclusive options
Expect -A -Q -W: -A -Q -W
Expect -AQ -AW: -AQ -AW
Expect no output 1:
Expect no output 2:
implicit cd complete works
no implicit cd complete after 'command'
PATH does not cause incorrect implicit cd