BUG: listpri picked up non-priority patterns.
The regexp for the priority wasn't anchored to the beginning of the task. (As the filtering is done inside the _list pipeline, the task number has already been prepended.) Also, by passing the regexp directly to _list, a case-insensitive search was performed, so despite [A-Z], lowercase characters were picked up, too. Need to make use of post_filter_command to inject a separate, case-sensitive grep into the pipeline. Bonus: Added test for highlighting of listpri command.
This commit is contained in:
committed by
Gina Trapani
parent
f8b66f117a
commit
0fa5f6d1dd
71
tests/t1250-listpri.sh
Executable file
71
tests/t1250-listpri.sh
Executable file
@@ -0,0 +1,71 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
test_description='list priority functionality
|
||||||
|
'
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
test_todo_session 'listpri usage' <<EOF
|
||||||
|
>>> todo.sh listpri ?
|
||||||
|
usage: todo.sh listpri PRIORITY
|
||||||
|
note: PRIORITY must a single letter from A to Z.
|
||||||
|
=== 1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > todo.txt <<EOF
|
||||||
|
(B) smell the uppercase Roses +flowers @outside
|
||||||
|
(C) notice the sunflowers
|
||||||
|
stop
|
||||||
|
EOF
|
||||||
|
test_todo_session 'basic listpri' <<EOF
|
||||||
|
>>> todo.sh listpri A
|
||||||
|
--
|
||||||
|
TODO: 0 of 3 tasks shown
|
||||||
|
|
||||||
|
>>> todo.sh -p listpri c
|
||||||
|
2 (C) notice the sunflowers
|
||||||
|
--
|
||||||
|
TODO: 1 of 3 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_todo_session 'listpri highlighting' <<EOF
|
||||||
|
>>> todo.sh listpri
|
||||||
|
[0;32m1 (B) smell the uppercase Roses +flowers @outside[0m
|
||||||
|
[1;34m2 (C) notice the sunflowers[0m
|
||||||
|
--
|
||||||
|
TODO: 2 of 3 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
cat > todo.txt <<EOF
|
||||||
|
(B) smell the uppercase Roses +flowers @outside
|
||||||
|
(C) notice the sunflowers
|
||||||
|
(m)others will notice this
|
||||||
|
(n) not a prioritized task
|
||||||
|
notice the (C)opyright
|
||||||
|
EOF
|
||||||
|
test_todo_session 'listpri filtering' <<EOF
|
||||||
|
>>> todo.sh -p listpri
|
||||||
|
1 (B) smell the uppercase Roses +flowers @outside
|
||||||
|
2 (C) notice the sunflowers
|
||||||
|
--
|
||||||
|
TODO: 2 of 5 tasks shown
|
||||||
|
|
||||||
|
>>> todo.sh -p listpri b
|
||||||
|
1 (B) smell the uppercase Roses +flowers @outside
|
||||||
|
--
|
||||||
|
TODO: 1 of 5 tasks shown
|
||||||
|
|
||||||
|
>>> todo.sh -p listpri c
|
||||||
|
2 (C) notice the sunflowers
|
||||||
|
--
|
||||||
|
TODO: 1 of 5 tasks shown
|
||||||
|
|
||||||
|
>>> todo.sh -p listpri m
|
||||||
|
--
|
||||||
|
TODO: 0 of 5 tasks shown
|
||||||
|
|
||||||
|
>>> todo.sh -p listpri n
|
||||||
|
--
|
||||||
|
TODO: 0 of 5 tasks shown
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_done
|
||||||
13
todo.sh
13
todo.sh
@@ -1016,7 +1016,18 @@ case $action in
|
|||||||
"listpri" | "lsp" )
|
"listpri" | "lsp" )
|
||||||
shift ## was "listpri", new $1 is priority to list or first TERM
|
shift ## was "listpri", new $1 is priority to list or first TERM
|
||||||
|
|
||||||
pri=$(printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$') && shift || pri="[A-Z]"
|
if [ "${1:-}" ]
|
||||||
|
then
|
||||||
|
## A priority was specified
|
||||||
|
pri=$( printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$' ) || {
|
||||||
|
die "usage: $TODO_SH listpri PRIORITY
|
||||||
|
note: PRIORITY must a single letter from A to Z."
|
||||||
|
}
|
||||||
|
else
|
||||||
|
## No priority specified; show all priority tasks
|
||||||
|
pri="[A-Z]"
|
||||||
|
fi
|
||||||
|
|
||||||
post_filter_command="grep '^ *[0-9]\+ (${pri}) '"
|
post_filter_command="grep '^ *[0-9]\+ (${pri}) '"
|
||||||
_list "$TODO_FILE" "$@"
|
_list "$TODO_FILE" "$@"
|
||||||
;;
|
;;
|
||||||
|
|||||||
Reference in New Issue
Block a user