Compare commits
3 Commits
list
...
archive/fi
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8ff79102a5 | ||
|
|
8d8ef812a2 | ||
|
|
50aea1e4f0 |
79
tests/t2120-shorthelp.sh
Executable file
79
tests/t2120-shorthelp.sh
Executable file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
#
|
||||||
|
|
||||||
|
test_description='shorthelp functionality
|
||||||
|
|
||||||
|
This test covers the output of the -h option and the shorthelp action.
|
||||||
|
'
|
||||||
|
. ./actions-test-lib.sh
|
||||||
|
. ./test-lib.sh
|
||||||
|
|
||||||
|
# Note: To avoid having to adapt the test whenever the actions change, only
|
||||||
|
# check for the section headers.
|
||||||
|
test_todo_session '-h output' <<EOF
|
||||||
|
>>> todo.sh -h | sed '/^ [A-Z]/!d'
|
||||||
|
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]
|
||||||
|
Actions:
|
||||||
|
Actions can be added and overridden using scripts in the actions
|
||||||
|
See "help" for more details.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_todo_session 'shorthelp output' <<EOF
|
||||||
|
>>> todo.sh shorthelp | sed '/^ [A-Z]/!d'
|
||||||
|
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]
|
||||||
|
Actions:
|
||||||
|
Actions can be added and overridden using scripts in the actions
|
||||||
|
See "help" for more details.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
make_action "foo"
|
||||||
|
test_todo_session 'shorthelp output with custom action' <<EOF
|
||||||
|
>>> todo.sh -v shorthelp | sed '/^ [A-Z]/!d'
|
||||||
|
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]
|
||||||
|
Actions:
|
||||||
|
Actions can be added and overridden using scripts in the actions
|
||||||
|
Add-on Actions:
|
||||||
|
See "help" for more details.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
|
||||||
|
# Verify that custom configuration is actually processed (when the -d option
|
||||||
|
# precedes the -h option) by specifying a different actions directory and moving
|
||||||
|
# our custom action there. The help output should mention the "Add-On Actions".
|
||||||
|
set -o pipefail # So that the sed filter doesn't swallow todo.sh's exit code.
|
||||||
|
mv todo.cfg custom.cfg
|
||||||
|
mv .todo.actions.d custom.actions
|
||||||
|
echo 'export TODO_ACTIONS_DIR=$HOME/custom.actions' >> custom.cfg
|
||||||
|
|
||||||
|
test_todo_session '-h and fatal error without config' <<EOF
|
||||||
|
>>> todo.sh -h | sed '/^ \\{0,2\\}[A-Z]/!d'
|
||||||
|
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]
|
||||||
|
Actions:
|
||||||
|
Actions can be added and overridden using scripts in the actions
|
||||||
|
See "help" for more details.
|
||||||
|
Fatal Error: Cannot read configuration file $HOME/.todo/config
|
||||||
|
=== 1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Config option comes too late; "Add-on Actions" is *not* mentioned here.
|
||||||
|
test_todo_session '-h and fatal error with trailing custom config' <<EOF
|
||||||
|
>>> todo.sh -h -d custom.cfg | sed '/^ \\{0,2\\}[A-Z]/!d'
|
||||||
|
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]
|
||||||
|
Actions:
|
||||||
|
Actions can be added and overridden using scripts in the actions
|
||||||
|
See "help" for more details.
|
||||||
|
Fatal Error: Cannot read configuration file $HOME/.todo/config
|
||||||
|
=== 1
|
||||||
|
EOF
|
||||||
|
|
||||||
|
# Config option processed; "Add-on Actions" is mentioned here.
|
||||||
|
test_todo_session '-h output with preceding custom config' <<EOF
|
||||||
|
>>> todo.sh -d custom.cfg -h | sed '/^ \\{0,2\\}[A-Z]/!d'
|
||||||
|
Usage: todo.sh [-fhpantvV] [-d todo_config] action [task_number] [task_description]
|
||||||
|
Actions:
|
||||||
|
Actions can be added and overridden using scripts in the actions
|
||||||
|
Add-on Actions:
|
||||||
|
See "help" for more details.
|
||||||
|
EOF
|
||||||
|
|
||||||
|
test_done
|
||||||
18
todo.sh
18
todo.sh
@@ -81,7 +81,6 @@ shorthelp()
|
|||||||
|
|
||||||
See "help" for more details.
|
See "help" for more details.
|
||||||
EndHelpFooter
|
EndHelpFooter
|
||||||
exit 0
|
|
||||||
}
|
}
|
||||||
|
|
||||||
help()
|
help()
|
||||||
@@ -327,6 +326,16 @@ actionUsage()
|
|||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
|
dieWithHelp()
|
||||||
|
{
|
||||||
|
case "$1" in
|
||||||
|
help) help;;
|
||||||
|
shorthelp) shorthelp;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
|
||||||
|
die "$@"
|
||||||
|
}
|
||||||
die()
|
die()
|
||||||
{
|
{
|
||||||
echo "$*"
|
echo "$*"
|
||||||
@@ -514,6 +523,7 @@ do
|
|||||||
# Cannot just invoke shorthelp() because we need the configuration
|
# Cannot just invoke shorthelp() because we need the configuration
|
||||||
# processed to locate the add-on actions directory.
|
# processed to locate the add-on actions directory.
|
||||||
set -- '-h' 'shorthelp'
|
set -- '-h' 'shorthelp'
|
||||||
|
OPTIND=2
|
||||||
;;
|
;;
|
||||||
n )
|
n )
|
||||||
OVR_TODOTXT_PRESERVE_LINE_NUMBERS=0
|
OVR_TODOTXT_PRESERVE_LINE_NUMBERS=0
|
||||||
@@ -654,7 +664,7 @@ fi
|
|||||||
}
|
}
|
||||||
|
|
||||||
# === SANITY CHECKS (thanks Karl!) ===
|
# === SANITY CHECKS (thanks Karl!) ===
|
||||||
[ -r "$TODOTXT_CFG_FILE" ] || die "Fatal Error: Cannot read configuration file $TODOTXT_CFG_FILE"
|
[ -r "$TODOTXT_CFG_FILE" ] || dieWithHelp "$1" "Fatal Error: Cannot read configuration file $TODOTXT_CFG_FILE"
|
||||||
|
|
||||||
. "$TODOTXT_CFG_FILE"
|
. "$TODOTXT_CFG_FILE"
|
||||||
|
|
||||||
@@ -693,8 +703,8 @@ fi
|
|||||||
ACTION=${1:-$TODOTXT_DEFAULT_ACTION}
|
ACTION=${1:-$TODOTXT_DEFAULT_ACTION}
|
||||||
|
|
||||||
[ -z "$ACTION" ] && usage
|
[ -z "$ACTION" ] && usage
|
||||||
[ -d "$TODO_DIR" ] || die "Fatal Error: $TODO_DIR is not a directory"
|
[ -d "$TODO_DIR" ] || dieWithHelp "$1" "Fatal Error: $TODO_DIR is not a directory"
|
||||||
( cd "$TODO_DIR" ) || die "Fatal Error: Unable to cd to $TODO_DIR"
|
( cd "$TODO_DIR" ) || dieWithHelp "$1" "Fatal Error: Unable to cd to $TODO_DIR"
|
||||||
|
|
||||||
[ -f "$TODO_FILE" ] || cp /dev/null "$TODO_FILE"
|
[ -f "$TODO_FILE" ] || cp /dev/null "$TODO_FILE"
|
||||||
[ -f "$DONE_FILE" ] || cp /dev/null "$DONE_FILE"
|
[ -f "$DONE_FILE" ] || cp /dev/null "$DONE_FILE"
|
||||||
|
|||||||
Reference in New Issue
Block a user