Compare commits

..

2 Commits

Author SHA1 Message Date
Ingo Karkat
72fe73f3d8 nobacktick test: Use literal backtick
* Fix sed error on Mac OS, also ignore entire commented lines.
* With proper quoting, the non-POSIX \d96 escape isn't necessary, and the check should work also on Mac OS.
2011-08-04 10:15:54 -07:00
Ingo Karkat
8f6070e702 Re-applying the listpri stuff still missing from the pull requests. 2011-07-10 22:04:51 +02:00
4 changed files with 56 additions and 37 deletions

View File

@@ -10,8 +10,7 @@ On failure, it will print each offending line number and line.
. ./test-lib.sh . ./test-lib.sh
test_todo_session 'no old-style backtick command substitution' <<EOF test_todo_session 'no old-style backtick command substitution' <<EOF
>>> sed -n -e 's/\(^\|[ \t]\)#.*//' -e '/\d96/{=;p}' "$(which todo.sh)" >>> sed -n -e 's/\(^\|[ \t]\)#.*//' -e '/\`/{' -e '=;p' -e '}' "$(which todo.sh)"
EOF EOF
# Note: Must encode backtick as \d96 to avoid error in the test framework.
test_done test_done

View File

@@ -53,6 +53,25 @@ TODO: 2 prioritized (C).
-- --
TODO: 3 of 3 tasks shown TODO: 3 of 3 tasks shown
>>> todo.sh add "smell the coffee +wakeup"
4 smell the coffee +wakeup
TODO: 4 added.
>>> todo.sh -p list
1 (B) smell the uppercase Roses +flowers @outside
2 (C) notice the sunflowers
4 smell the coffee +wakeup
3 stop
--
TODO: 4 of 4 tasks shown
EOF
cat > todo.txt <<EOF
(B) smell the uppercase Roses +flowers @outside
(C) notice the sunflowers
stop
EOF
test_todo_session 'reprioritize' <<EOF
>>> todo.sh pri 2 A >>> todo.sh pri 2 A
2 (A) notice the sunflowers 2 (A) notice the sunflowers
TODO: 2 re-prioritized from (C) to (A). TODO: 2 re-prioritized from (C) to (A).
@@ -68,23 +87,11 @@ TODO: 3 of 3 tasks shown
2 (A) notice the sunflowers 2 (A) notice the sunflowers
TODO: 2 already prioritized (A). TODO: 2 already prioritized (A).
>>> todo.sh -p listpri
2 (A) notice the sunflowers
1 (B) smell the uppercase Roses +flowers @outside
--
TODO: 2 of 3 tasks shown
>>> todo.sh add "smell the coffee +wakeup"
4 smell the coffee +wakeup
TODO: 4 added.
>>> todo.sh -p list >>> todo.sh -p list
2 (A) notice the sunflowers 2 (A) notice the sunflowers
1 (B) smell the uppercase Roses +flowers @outside 1 (B) smell the uppercase Roses +flowers @outside
4 smell the coffee +wakeup
3 stop 3 stop
-- --
TODO: 4 of 4 tasks shown TODO: 3 of 3 tasks shown
EOF EOF
test_done test_done

View File

@@ -4,13 +4,6 @@ test_description='list priority functionality
' '
. ./test-lib.sh . ./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 cat > todo.txt <<EOF
(B) smell the uppercase Roses +flowers @outside (B) smell the uppercase Roses +flowers @outside
(C) notice the sunflowers (C) notice the sunflowers
@@ -42,7 +35,7 @@ cat > todo.txt <<EOF
(n) not a prioritized task (n) not a prioritized task
notice the (C)opyright notice the (C)opyright
EOF EOF
test_todo_session 'listpri filtering' <<EOF test_todo_session 'listpri filtering priorities' <<EOF
>>> todo.sh -p listpri >>> todo.sh -p listpri
1 (B) smell the uppercase Roses +flowers @outside 1 (B) smell the uppercase Roses +flowers @outside
2 (C) notice the sunflowers 2 (C) notice the sunflowers
@@ -68,4 +61,35 @@ TODO: 0 of 5 tasks shown
TODO: 0 of 5 tasks shown TODO: 0 of 5 tasks shown
EOF EOF
cat > todo.txt <<EOF
(B) ccc xxx this line should be third.
ccc xxx this line should be third.
(A) aaa zzz this line should be first.
aaa zzz this line should be first.
(B) bbb yyy this line should be second.
bbb yyy this line should be second.
EOF
test_todo_session 'listpri filtering of TERM' <<EOF
>>> todo.sh -p listpri "should be"
3 (A) aaa zzz this line should be first.
5 (B) bbb yyy this line should be second.
1 (B) ccc xxx this line should be third.
--
TODO: 3 of 6 tasks shown
>>> todo.sh -p listpri a "should be"
3 (A) aaa zzz this line should be first.
--
TODO: 1 of 6 tasks shown
>>> todo.sh -p listpri b second
5 (B) bbb yyy this line should be second.
--
TODO: 1 of 6 tasks shown
>>> todo.sh -p listpri x "should be"
--
TODO: 0 of 6 tasks shown
EOF
test_done test_done

15
todo.sh
View File

@@ -923,7 +923,7 @@ case $action in
todo=$(sed "$item!d" "$TODO_FILE") todo=$(sed "$item!d" "$TODO_FILE")
[ -z "$todo" ] && die "TODO: No task $item." [ -z "$todo" ] && die "TODO: No task $item."
if sed "$item!d" "$TODO_FILE" | grep "^(.) " > /dev/null; then if [[ "$todo" = \(?\)\ * ]]; then
sed -i.bak -e $item"s/^(.) //" "$TODO_FILE" sed -i.bak -e $item"s/^(.) //" "$TODO_FILE"
if [ $TODOTXT_VERBOSE -gt 0 ]; then if [ $TODOTXT_VERBOSE -gt 0 ]; then
NEWTODO=$(sed "$item!d" "$TODO_FILE") NEWTODO=$(sed "$item!d" "$TODO_FILE")
@@ -1013,18 +1013,7 @@ 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
if [ "${1:-}" ] pri=$(printf "%s\n" "$1" | tr 'a-z' 'A-Z' | grep '^[A-Z]$') && shift || pri="[A-Z]"
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" "$@"
;; ;;