Compare commits

..

1 Commits

Author SHA1 Message Date
mcguiremkm
d2c44e9ffe FIX: todo_completion problem with Bash 3.1
Regexp matching changed from 3.1 to 3.2. Make it work for Bash 3.1 by using an intermediate variable, as in 394c4c748a.
Cp. http://tech.groups.yahoo.com/group/todotxt/message/4211
2012-04-25 09:33:54 +02:00
2 changed files with 27 additions and 17 deletions

View File

@@ -264,7 +264,25 @@ test_expect_success () {
test_expect_output () {
test "$#" = 2 ||
error "bug in the test script: not 2 parameters to test-expect-output"
test_expect_code_and_output 0 "$@"
if ! test_skip "$@"
then
say >&3 "expecting success and output: $2"
test_run_ "$2"
if [ "$?" = 0 -a "$eval_ret" = 0 ]
then
cmp_output=$(test_cmp expect output)
if [ "$?" = 0 ]
then
test_ok_ "$1"
else
test_failure_ "$@" "
$cmp_output"
fi
else
test_failure_ "$@"
fi
fi
echo >&3 ""
}
test_expect_code_and_output () {
@@ -272,11 +290,7 @@ test_expect_code_and_output () {
error "bug in the test script: not 3 parameters to test-expect-code-and-output"
if ! test_skip "$@"
then
if [ "$1" = 0 ]; then
say >&3 "expecting success and output: $3"
else
say >&3 "expecting exit code $1 and output: $3"
fi
say >&3 "expecting exit code $1 and output: $3"
test_run_ "$3"
if [ "$?" = 0 -a "$eval_ret" = "$1" ]
then
@@ -552,16 +566,14 @@ test_tick () {
}
# Generate and run a series of tests based on a transcript.
# Usage: test_todo_session "description" <<'EOF'
# Usage: test_todo_session "description" <<EOF
# >>> command
# output1
# output2
#
# >>> command
# === exit status
# output3 with empty line (must be escaped here)
# \
# output5
# output3
# output4
# EOF
test_todo_session () {
test "$#" = 1 ||
@@ -570,7 +582,7 @@ test_todo_session () {
cmd=""
status=0
> expect
while IFS= read -r line
while read -r line
do
case $line in
">>> "*)
@@ -594,9 +606,6 @@ test_todo_session () {
> expect
fi
;;
\\)
echo "" >> expect
;;
*)
echo "$line" >> expect
;;

View File

@@ -14,14 +14,15 @@ _todo()
rm depri dp do help list ls listaddons listall lsa listcon \
lsc listfile lf listpri lsp listproj lsprj move \
mv prepend prep pri p replace report shorthelp"
local -r MOVE_COMMAND_PATTERN='^(move|mv)$'
local _todo_sh=${_todo_sh:-todo.sh}
local completions
if [ $COMP_CWORD -eq 1 ]; then
completions="$COMMANDS $(eval TODOTXT_VERBOSE=0 $_todo_sh command listaddons) $OPTS"
elif [[ $COMP_CWORD -gt 2 && ( \
"${COMP_WORDS[COMP_CWORD-2]}" =~ ^(move|mv)$ || \
"${COMP_WORDS[COMP_CWORD-3]}" =~ ^(move|mv)$ ) ]]; then
"${COMP_WORDS[COMP_CWORD-2]}" =~ $MOVE_COMMAND_PATTERN || \
"${COMP_WORDS[COMP_CWORD-3]}" =~ $MOVE_COMMAND_PATTERN ) ]]; then
# "move ITEM# DEST [SRC]" has file arguments on positions 2 and 3.
completions=$(eval TODOTXT_VERBOSE=0 $_todo_sh command listfile)
else