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

View File

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