count -h should report 1

The count command should not treat any flag specially. Not even `-h` and
`--help`. It should simply return a count of the number of arguments it
received.

Fixes #4189
This commit is contained in:
Kurtis Rader 2017-07-05 17:22:48 -07:00
parent 8cc4639ea6
commit 80df9053b3
5 changed files with 31 additions and 1 deletions

View File

@ -19,6 +19,7 @@
- `help` can now open the tutorial.
- `echo -h` now correctly echoes `-h` (#4120).
- Stop converting empty elements in MANPATH to "." (#4158). The behavior being changed was introduced in fish 2.6.0.
- `count -h` and `count --help` now return one (#4189).
- Added completions for:
- `as` (#4130).
- `jest` (#4142).

View File

@ -491,7 +491,7 @@ bool builtin_exists(const wcstring &cmd) { return static_cast<bool>(builtin_look
/// Is the command a keyword or a builtin we need to special-case the handling of `-h` and `--help`.
static const wcstring_list_t help_builtins({L"for", L"while", L"function", L"if", L"end", L"switch",
L"case", L"count", L"printf"});
L"case", L"printf"});
static bool cmd_needs_help(const wchar_t *cmd) { return contains(help_builtins, cmd); }
/// Execute a builtin command

0
tests/count.err Normal file
View File

17
tests/count.in Normal file
View File

@ -0,0 +1,17 @@
# Validate the behavior of the `count` command.
echo '# no args'
count
echo '# one args'
count x
echo '# two args'
count x y
echo '# args that look like flags or are otherwise special'
count -h
count --help
count --
count -- abc
count def -- abc

12
tests/count.out Normal file
View File

@ -0,0 +1,12 @@
# no args
0
# one args
1
# two args
2
# args that look like flags or are otherwise special
1
1
1
2
3