The todo_completion had the problem that it didn't consider the todo.cfg itself for the location of TODO_ACTIONS_DIR, it just tried the default location or a globally exported config value. With the injection of custom configuration now in place, we can actually delegate the listing to todo.sh itself. The added built-in "listaddons" command is used for that; it may also be helpful for troubleshooting or to find out about available add-ons. (But the help / shorthelp commands offer more information.) Additionally, completion is now more precise; only executable actions and no subdirs are listed now; this is also covered by the enhanced test. The last bonus: The custom add-on actions are now only determined when there's actually completion of commands.
23 lines
1.1 KiB
Bash
Executable File
23 lines
1.1 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
|
|
test_description='Bash completion functionality
|
|
|
|
This test checks basic todo_completion of actions and options
|
|
'
|
|
. ./test-lib.sh
|
|
|
|
readonly ACTIONS='add a addto addm append app archive command del rm depri dp do help list ls listaddons listall lsa listcon lsc listfile lf listpri lsp listproj lsprj move mv prepend prep pri p replace report shorthelp'
|
|
readonly OPTIONS='-@ -@@ -+ -++ -d -f -h -p -P -PP -a -n -t -v -vv -V -x'
|
|
|
|
test_todo_completion 'all arguments' 'todo.sh ' "$ACTIONS $OPTIONS"
|
|
test_todo_completion 'arguments beginning with a' 'todo.sh a' 'add a addto addm append app archive'
|
|
test_todo_completion 'all options' 'todo.sh -' "$OPTIONS"
|
|
test_todo_completion 'all actions after command action' 'todo.sh command ' "$ACTIONS"
|
|
test_todo_completion 'all arguments after option' 'todo.sh -a ' "$ACTIONS $OPTIONS"
|
|
test_todo_completion 'all arguments after options' 'todo.sh -a -p ' "$ACTIONS $OPTIONS"
|
|
test_todo_completion 'all options after options' 'todo.sh -a -p -' "$OPTIONS"
|
|
test_todo_completion 'nothing after action' 'todo.sh archive ' ''
|
|
|
|
test_done
|