diff --git a/tests/actions-test-lib.sh b/tests/actions-test-lib.sh index 71cd4fd..42185f2 100644 --- a/tests/actions-test-lib.sh +++ b/tests/actions-test-lib.sh @@ -30,3 +30,19 @@ make_action_in_folder() mkdir ".todo.actions.d/$1" [ -z "$1" ] || make_dummy_action ".todo.actions.d/$1/$1" "in folder $1" } + +invalidate_action() +{ + local customActionFilespec="${1:?}"; shift + local testName="${1:?}"; shift + + chmod -x "$customActionFilespec" + # On Cygwin, clearing the executable flag may have no effect, as the Windows + # ACL may still grant execution rights. In this case, we skip the test, and + # remove the (still valid) custom action so that it doesn't break following + # tests. + if [ -x "$customActionFilespec" ]; then + SKIP_TESTS="${SKIP_TESTS}${SKIP_TESTS+ }${testName}" + rm -- "$customActionFilespec" + fi +} diff --git a/tests/t1800-del.sh b/tests/t1800-del.sh index 6d96e89..2529a93 100755 --- a/tests/t1800-del.sh +++ b/tests/t1800-del.sh @@ -4,8 +4,6 @@ test_description='basic del functionality ' . ./test-lib.sh -SPACE=' ' - test_todo_session 'del usage' <>> todo.sh del B usage: todo.sh del ITEM# [TERM] @@ -60,7 +58,7 @@ test_todo_session 'del with confirmation' <>> printf n | todo.sh del 1 -Delete '(B) smell the uppercase Roses +flowers @outside'? (y/n)$SPACE +\\ TODO: No tasks were deleted. >>> todo.sh -p list @@ -71,15 +69,15 @@ TODO: No tasks were deleted. TODO: 3 of 3 tasks shown >>> printf x | todo.sh del 1 -Delete '(B) smell the uppercase Roses +flowers @outside'? (y/n)$SPACE +\\ TODO: No tasks were deleted. >>> echo | todo.sh del 1 -Delete '(B) smell the uppercase Roses +flowers @outside'? (y/n)$SPACE +\\ TODO: No tasks were deleted. >>> printf y | todo.sh del 1 -Delete '(B) smell the uppercase Roses +flowers @outside'? (y/n)$SPACE +\\ 1 (B) smell the uppercase Roses +flowers @outside TODO: 1 deleted. diff --git a/tests/t1850-move.sh b/tests/t1850-move.sh index 9fbdc0b..2a9e6ea 100755 --- a/tests/t1850-move.sh +++ b/tests/t1850-move.sh @@ -4,8 +4,6 @@ test_description='basic move functionality ' . ./test-lib.sh -SPACE=' ' - cat > todo.txt <>> printf y | todo.sh move 1 done.txt 2>&1 | sed -e "s#'[^']\{1,\}/\([^/']\{1,\}\)'#'\1'#g" -e 's#from .\{1,\}/\([^/]\{1,\}\) to .\{1,\}/\([^/]\{1,\}\)?#from \1 to \2?#g' -Move '(B) smell the uppercase Roses +flowers @outside' from todo.txt to done.txt? (y/n)$SPACE +\\ 1 (B) smell the uppercase Roses +flowers @outside TODO: 1 moved from 'todo.txt' to 'done.txt'. diff --git a/tests/t8010-listaddons.sh b/tests/t8010-listaddons.sh index b4e89aa..ee0495a 100755 --- a/tests/t8010-listaddons.sh +++ b/tests/t8010-listaddons.sh @@ -28,12 +28,7 @@ ls quux EOF -chmod -x .todo.actions.d/foo -# On Cygwin, clearing the executable flag may have no effect, as the Windows ACL -# may still grant execution rights. In this case, we skip the test. -if [ -x .todo.actions.d/foo ]; then - SKIP_TESTS="${SKIP_TESTS}${SKIP_TESTS+ }t8010.4" -fi +invalidate_action .todo.actions.d/foo t8010.4 test_todo_session 'nonexecutable action' <>> todo.sh listaddons bar @@ -66,13 +61,7 @@ norris quux EOF -# nthorne: shamelessly stolen from above.. -chmod -x .todo.actions.d/norris/norris -# On Cygwin, clearing the executable flag may have no effect, as the Windows ACL -# may still grant execution rights. In this case, we skip the test. -if [ -x .todo.actions.d/norris/norris ]; then - SKIP_TESTS="${SKIP_TESTS}${SKIP_TESTS+ }t8010.8" -fi +invalidate_action .todo.actions.d/norris/norris t8010.8 test_todo_session 'nonexecutable action in subfolder' <>> todo.sh listaddons bar diff --git a/todo.sh b/todo.sh index 26df83c..11ac385 100755 --- a/todo.sh +++ b/todo.sh @@ -364,12 +364,11 @@ confirm() { [ $TODOTXT_FORCE = 0 ] || return 0 - printf %s "${1:?}? (y/n) " local readArgs=(-e -r) [ -n "${BASH_VERSINFO:-}" ] && [ \( ${BASH_VERSINFO[0]} -eq 4 -a ${BASH_VERSINFO[1]} -ge 1 \) -o ${BASH_VERSINFO[0]} -gt 4 ] && readArgs+=(-N 1) # Bash 4.1+ supports -N nchars local answer - read "${readArgs[@]}" answer + read -p "${1:?}? (y/n) " "${readArgs[@]}" answer echo [ "$answer" = "y" ] } @@ -451,8 +450,7 @@ replaceOrPrepend() getTodo "$item" if [[ -z "$1" && $TODOTXT_FORCE = 0 ]]; then - echo -n "$querytext" - read -r -i "$todo" -e input + read -p "$querytext" -r -i "$todo" -e input else input=$* fi @@ -1082,8 +1080,7 @@ fi case $action in "add" | "a") if [[ -z "$2" && $TODOTXT_FORCE = 0 ]]; then - echo -n "Add: " - read -e -r input + read -p "Add: " -e -r input else [ -z "$2" ] && die "usage: $TODO_SH add \"TODO ITEM\"" shift @@ -1094,8 +1091,7 @@ case $action in "addm") if [[ -z "$2" && $TODOTXT_FORCE = 0 ]]; then - echo -n "Add: " - read -e -r input + read -p "Add: " -e -r input else [ -z "$2" ] && die "usage: $TODO_SH addm \"TODO ITEM\"" shift @@ -1135,8 +1131,7 @@ case $action in getTodo "$item" if [[ -z "$1" && $TODOTXT_FORCE = 0 ]]; then - echo -n "Append: " - read -e -r input + read -p "Append: " -e -r input else input=$* fi