Missing quoting inside cleaninput() condensed multiple subsequent spaces into a single space, even when the user took pains to preserve whitespace by properly quoting the task in the shell. The 'tr' command completely removed CR and LF characters instead of replacing them with a single space. Add test cases for the whitespace handling to the add, append, prepend and replace actions.
104 lines
2.4 KiB
Bash
Executable File
104 lines
2.4 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
test_description='basic append functionality
|
|
|
|
Ensure we can append items successfully.
|
|
'
|
|
. ./test-lib.sh
|
|
|
|
#
|
|
# Set up the basic todo.txt
|
|
#
|
|
todo.sh add notice the daisies > /dev/null
|
|
|
|
test_todo_session 'append usage' <<EOF
|
|
>>> todo.sh append adf asdfa
|
|
=== 1
|
|
usage: todo.sh append ITEM# "TEXT TO APPEND"
|
|
EOF
|
|
|
|
test_todo_session 'append error' << EOF
|
|
>>> todo.sh append 10 "hej!"
|
|
=== 1
|
|
TODO: No task 10.
|
|
EOF
|
|
|
|
test_todo_session 'basic append' <<EOF
|
|
>>> todo.sh append 1 "smell the roses"
|
|
1 notice the daisies smell the roses
|
|
|
|
>>> todo.sh list
|
|
1 notice the daisies smell the roses
|
|
--
|
|
TODO: 1 of 1 tasks shown
|
|
EOF
|
|
|
|
test_todo_session 'basic append with &' <<EOF
|
|
>>> todo.sh append 1 "see the wasps & bees"
|
|
1 notice the daisies smell the roses see the wasps & bees
|
|
|
|
>>> todo.sh list
|
|
1 notice the daisies smell the roses see the wasps & bees
|
|
--
|
|
TODO: 1 of 1 tasks shown
|
|
EOF
|
|
|
|
echo 'jump on hay' > todo.txt
|
|
test_todo_session 'append with spaces' <<EOF
|
|
>>> todo.sh append 1 "and notice the three spaces"
|
|
1 jump on hay and notice the three spaces
|
|
EOF
|
|
|
|
cat > todo.txt <<EOF
|
|
smell the cows
|
|
grow some corn
|
|
thrash some hay
|
|
chase the chickens
|
|
EOF
|
|
test_todo_session 'append with symbols' <<EOF
|
|
>>> todo.sh append 1 "~@#$%^&*()-_=+[{]}|;:',<.>/?"
|
|
1 smell the cows ~@#$%^&*()-_=+[{]}|;:',<.>/?
|
|
|
|
>>> todo.sh append 2 '\`!\\"'
|
|
2 grow some corn \`!\\"
|
|
|
|
>>> todo.sh list
|
|
4 chase the chickens
|
|
2 grow some corn \`!\\"
|
|
1 smell the cows ~@#$%^&*()-_=+[{]}|;:',<.>/?
|
|
3 thrash some hay
|
|
--
|
|
TODO: 4 of 4 tasks shown
|
|
EOF
|
|
|
|
cat > todo.txt <<EOF
|
|
notice the daisies
|
|
EOF
|
|
test_todo_session 'append of current sentence' <<EOF
|
|
>>> todo.sh append 1 ", lilies and roses"
|
|
1 notice the daisies, lilies and roses
|
|
|
|
>>> todo.sh append 1 "; see the wasps"
|
|
1 notice the daisies, lilies and roses; see the wasps
|
|
|
|
>>> todo.sh append 1 "& bees"
|
|
1 notice the daisies, lilies and roses; see the wasps & bees
|
|
EOF
|
|
|
|
cp todo.cfg special-delimiters.cfg
|
|
cat >> special-delimiters.cfg <<EOF
|
|
export SENTENCE_DELIMITERS='*,.:;&'
|
|
EOF
|
|
test_todo_session 'append of current sentence SENTENCE_DELIMITERS' <<EOF
|
|
>>> todo.sh -d special-delimiters.cfg append 1 "&beans"
|
|
1 notice the daisies, lilies and roses; see the wasps & bees&beans
|
|
|
|
>>> todo.sh -d special-delimiters.cfg append 1 "%foo"
|
|
1 notice the daisies, lilies and roses; see the wasps & bees&beans %foo
|
|
|
|
>>> todo.sh -d special-delimiters.cfg append 1 "*2"
|
|
1 notice the daisies, lilies and roses; see the wasps & bees&beans %foo*2
|
|
EOF
|
|
|
|
test_done
|