I've seen strange readline editing behavior when the editing doesn't start at the first column: I can actually backspace into the prepended message (with Del, Ctrl-W or Ctrl-U), and then the whole edit becomes messed up. read can output a prompt on its own (hopefully in all versions of Bash that we aim to support - the tests will tell), and that doesn't have this problem, and it's also a bit cleaner and shorter. The prompt is only displayed if input is coming from a terminal. For the tests (currently only deletion and move confirmations are covered), this means that the prompt itself cannot be covered, and an empty line instead has to be expected. (On the positive side, this removes the ugly trick with $SPACE.)
101 lines
2.6 KiB
Bash
Executable File
101 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
test_description='basic move functionality
|
|
'
|
|
. ./test-lib.sh
|
|
|
|
cat > todo.txt <<EOF
|
|
(B) smell the uppercase Roses +flowers @outside
|
|
(A) notice the sunflowers
|
|
EOF
|
|
cat > done.txt <<EOF
|
|
x 2009-02-13 make the coffee +wakeup
|
|
x 2009-02-13 smell the coffee +wakeup
|
|
EOF
|
|
test_todo_session 'basic move with implicit source' <<EOF
|
|
>>> todo.sh -f move 1 done.txt | sed "s#'[^']\{1,\}/\([^/']\{1,\}\)'#'\1'#g"
|
|
1 (B) smell the uppercase Roses +flowers @outside
|
|
TODO: 1 moved from 'todo.txt' to 'done.txt'.
|
|
|
|
>>> todo.sh -p ls
|
|
2 (A) notice the sunflowers
|
|
--
|
|
TODO: 1 of 1 tasks shown
|
|
|
|
>>> todo.sh -p listfile done.txt
|
|
3 (B) smell the uppercase Roses +flowers @outside
|
|
1 x 2009-02-13 make the coffee +wakeup
|
|
2 x 2009-02-13 smell the coffee +wakeup
|
|
--
|
|
DONE: 3 of 3 tasks shown
|
|
EOF
|
|
|
|
cat > todo.txt <<EOF
|
|
(B) smell the uppercase Roses +flowers @outside
|
|
(A) notice the sunflowers
|
|
EOF
|
|
cat > done.txt <<EOF
|
|
x 2009-02-13 make the coffee +wakeup
|
|
x 2009-02-13 smell the coffee +wakeup
|
|
EOF
|
|
test_todo_session 'basic move with confirmation' <<EOF
|
|
>>> 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'
|
|
\\
|
|
1 (B) smell the uppercase Roses +flowers @outside
|
|
TODO: 1 moved from 'todo.txt' to 'done.txt'.
|
|
|
|
>>> todo.sh -p ls
|
|
2 (A) notice the sunflowers
|
|
--
|
|
TODO: 1 of 1 tasks shown
|
|
|
|
>>> todo.sh -p listfile done.txt
|
|
3 (B) smell the uppercase Roses +flowers @outside
|
|
1 x 2009-02-13 make the coffee +wakeup
|
|
2 x 2009-02-13 smell the coffee +wakeup
|
|
--
|
|
DONE: 3 of 3 tasks shown
|
|
EOF
|
|
|
|
test_todo_session 'basic move with passed source' <<EOF
|
|
>>> todo.sh -f move 2 todo.txt done.txt | sed "s#'[^']\{1,\}/\([^/']\{1,\}\)'#'\1'#g"
|
|
2 x 2009-02-13 smell the coffee +wakeup
|
|
TODO: 2 moved from 'done.txt' to 'todo.txt'.
|
|
|
|
>>> todo.sh -p ls
|
|
2 (A) notice the sunflowers
|
|
3 x 2009-02-13 smell the coffee +wakeup
|
|
--
|
|
TODO: 2 of 2 tasks shown
|
|
|
|
>>> todo.sh -p listfile done.txt
|
|
3 (B) smell the uppercase Roses +flowers @outside
|
|
1 x 2009-02-13 make the coffee +wakeup
|
|
--
|
|
DONE: 2 of 2 tasks shown
|
|
EOF
|
|
|
|
echo -n 'this is a first task without newline' > todo.txt
|
|
cat > done.txt <<EOF
|
|
x 2009-02-13 make the coffee +wakeup
|
|
x 2009-02-13 smell the coffee +wakeup
|
|
EOF
|
|
test_todo_session 'move to destination without EOL' <<EOF
|
|
>>> todo.sh -f move 2 todo.txt done.txt | sed "s#'[^']\{1,\}/\([^/']\{1,\}\)'#'\1'#g"
|
|
2 x 2009-02-13 smell the coffee +wakeup
|
|
TODO: 2 moved from 'done.txt' to 'todo.txt'.
|
|
|
|
>>> todo.sh -p ls
|
|
1 this is a first task without newline
|
|
2 x 2009-02-13 smell the coffee +wakeup
|
|
--
|
|
TODO: 2 of 2 tasks shown
|
|
|
|
>>> todo.sh -p listfile done.txt
|
|
1 x 2009-02-13 make the coffee +wakeup
|
|
--
|
|
DONE: 1 of 1 tasks shown
|
|
EOF
|
|
|
|
test_done
|