Bugfix: _list() cannot handle filter TERM starting with space.

Added proper quoting at check for search term starting with a dash.
Added tests for ls use with TERM, both with literal text and regexps. Seems that use case was missing from the tests so far.
Extra: Removed unnecessary "$@" argument to for() loop.
This commit is contained in:
Ingo Karkat
2010-06-04 22:22:15 +08:00
committed by Gina Trapani
parent c52d9c33af
commit 821b9d2795
2 changed files with 43 additions and 2 deletions

View File

@@ -53,6 +53,47 @@ test_todo_session 'checking TODOTXT_FINAL_FILTER' <<EOF
TODO: 3 of 3 tasks shown TODO: 3 of 3 tasks shown
EOF EOF
#
# check the filtering of TERM
#
test_todo_session 'checking filtering of TERM' <<EOF
>>> todo.sh ls second
3 bbb yyy this line should be second.
--
TODO: 1 of 3 tasks shown
>>> todo.sh ls "should be f"
2 aaa zzz this line should be first.
--
TODO: 1 of 3 tasks shown
>>> todo.sh ls " zzz"
2 aaa zzz this line should be first.
--
TODO: 1 of 3 tasks shown
EOF
#
# check the filtering of TERM with regexp
#
test_todo_session 'checking filtering of TERM with regexp' <<EOF
>>> todo.sh ls "ir[ds]"
2 aaa zzz this line should be first.
1 ccc xxx this line should be third.
--
TODO: 2 of 3 tasks shown
>>> todo.sh ls "f.*t"
2 aaa zzz this line should be first.
--
TODO: 1 of 3 tasks shown
>>> todo.sh ls "ir[ds]" xxx
1 ccc xxx this line should be third.
--
TODO: 1 of 3 tasks shown
EOF
# #
# check the x command line option # check the x command line option
# #

View File

@@ -515,10 +515,10 @@ _list() {
## Prefix the filter_command with the pre_filter_command ## Prefix the filter_command with the pre_filter_command
filter_command="${pre_filter_command:-}" filter_command="${pre_filter_command:-}"
for search_term in "$@" for search_term
do do
## See if the first character of $search_term is a dash ## See if the first character of $search_term is a dash
if [ ${search_term:0:1} != '-' ] if [ "${search_term:0:1}" != '-' ]
then then
## First character isn't a dash: hide lines that don't match ## First character isn't a dash: hide lines that don't match
## this $search_term ## this $search_term