Commit 8e4364f5e1 removed the deletion of the "|" character from cleaninput. That was okay for the cleaninput() use in _addto(), but not in those cases that used $input for replacement via sed.
Added corresponding tests for replace, append and prepend actions similar to what was added for the add action in the above commit.
To really fix the problem (and not just remove all "|" characters from the text), a separator character must be found that is not part of $input, and this must be used in the sed expression. As cleaninput() already modifies the global $input variable, another $inputSep global variable is used to pass back this information.
In addition, backslashes must be escaped in $input, or replacements like \1 wreak havoc.
117 lines
2.4 KiB
Bash
Executable File
117 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
||
|
||
test_description='basic prepend functionality
|
||
'
|
||
. ./test-lib.sh
|
||
|
||
test_todo_session 'prepend usage' <<EOF
|
||
>>> todo.sh prepend B B
|
||
usage: todo.sh prepend ITEM# "TEXT TO PREPEND"
|
||
=== 1
|
||
EOF
|
||
|
||
cat > todo.txt <<EOF
|
||
(B) smell the uppercase Roses +flowers @outside
|
||
notice the sunflowers
|
||
stop
|
||
EOF
|
||
test_todo_session 'basic prepend' <<EOF
|
||
>>> todo.sh list
|
||
[0;32m1 (B) smell the uppercase Roses +flowers @outside[0m
|
||
2 notice the sunflowers
|
||
3 stop
|
||
--
|
||
TODO: 3 of 3 tasks shown
|
||
|
||
>>> todo.sh -p list
|
||
1 (B) smell the uppercase Roses +flowers @outside
|
||
2 notice the sunflowers
|
||
3 stop
|
||
--
|
||
TODO: 3 of 3 tasks shown
|
||
|
||
>>> todo.sh prepend 2 test
|
||
2 test notice the sunflowers
|
||
|
||
>>> todo.sh -p list
|
||
1 (B) smell the uppercase Roses +flowers @outside
|
||
3 stop
|
||
2 test notice the sunflowers
|
||
--
|
||
TODO: 3 of 3 tasks shown
|
||
|
||
>>> todo.sh prepend 1 test
|
||
1 (B) test smell the uppercase Roses +flowers @outside
|
||
|
||
>>> todo.sh -p list
|
||
1 (B) test smell the uppercase Roses +flowers @outside
|
||
3 stop
|
||
2 test notice the sunflowers
|
||
--
|
||
TODO: 3 of 3 tasks shown
|
||
|
||
EOF
|
||
|
||
test_todo_session 'prepend with &' <<EOF
|
||
>>> todo.sh prepend 3 "no running & jumping now"
|
||
3 no running & jumping now stop
|
||
EOF
|
||
|
||
cat > todo.txt <<EOF
|
||
smell the cows
|
||
grow some corn
|
||
thrash some hay
|
||
chase the chickens
|
||
EOF
|
||
test_todo_session 'prepend with symbols' <<EOF
|
||
>>> todo.sh prepend 1 "~@#$%^&*()-_=+[{]}|;:',<.>/?"
|
||
1 ~@#$%^&*()-_=+[{]}|;:',<.>/? smell the cows
|
||
|
||
>>> todo.sh prepend 2 '\`!\\"'
|
||
2 \`!\\" grow some corn
|
||
|
||
>>> todo.sh list
|
||
4 chase the chickens
|
||
3 thrash some hay
|
||
2 \`!\\" grow some corn
|
||
1 ~@#$%^&*()-_=+[{]}|;:',<.>/? smell the cows
|
||
--
|
||
TODO: 4 of 4 tasks shown
|
||
EOF
|
||
|
||
cat /dev/null > todo.txt
|
||
test_todo_session 'prepend handling prepended date on add' <<EOF
|
||
>>> todo.sh -t add "new task"
|
||
1 2009-02-13 new task
|
||
TODO: 1 added.
|
||
|
||
>>> todo.sh prepend 1 "this is just a"
|
||
1 2009-02-13 this is just a new task
|
||
EOF
|
||
|
||
cat /dev/null > todo.txt
|
||
test_todo_session 'prepend handling priority and prepended date on add' <<EOF
|
||
>>> todo.sh -t add "new task"
|
||
1 2009-02-13 new task
|
||
TODO: 1 added.
|
||
|
||
>>> todo.sh pri 1 A
|
||
1 (A) 2009-02-13 new task
|
||
TODO: 1 prioritized (A).
|
||
|
||
>>> todo.sh prepend 1 "this is just a"
|
||
1 (A) 2009-02-13 this is just a new task
|
||
EOF
|
||
|
||
cat /dev/null > todo.txt
|
||
test_todo_session 'prepend with prepended date keeps both' <<EOF
|
||
>>> todo.sh -t add "new task"
|
||
1 2009-02-13 new task
|
||
TODO: 1 added.
|
||
|
||
>>> todo.sh prepend 1 "2010-07-04 this is just a"
|
||
1 2009-02-13 2010-07-04 this is just a new task
|
||
EOF
|
||
|
||
test_done
|