Close #17 and Close #16

Introduces CMDARG_ERROR_BEHAVIOR. Adds some more tests. Introduces new
behavior for hash validators (see README). Fixes a few odds and ends.
This commit is contained in:
2014-05-26 11:45:17 -07:00
parent 5c926c54e2
commit d3721faf10
4 changed files with 176 additions and 39 deletions

View File

@@ -1,5 +1,26 @@
source $(dirname ${BASH_SOURCE})/../cmdarg.sh
function shunittest_flags_required
{
# Tests that flags (:?) are required for array or hash arguments
cmdarg_purge
declare -a something
declare -A something_else
cmdarg 'x[]' 'something' 'something' && return 1
cmdarg 'y{}' 'something_else' 'something else' && return 1
cmdarg_purge
cmdarg 'x:[]' 'something' 'something' || return 1
cmdarg 'y:{}' 'something_else' 'something' || return 1
cmdarg_purge
cmdarg 'x?[]' 'something' 'something' || return 1
cmdarg 'y?{}' 'something_else' 'something' || return 1
return 0
}
function shunittest_array_undefined()
{
# Tests that cmdarg and cmdarg_parse return an error when an array
@@ -82,3 +103,20 @@ function shunittest_boolean_no_optarg
[[ "${cmdarg_cfg['boolean']}" == "true" ]] || return 1
[[ "${cmdarg_argv[0]}" == "something" ]] || return 1
}
function shunittest_hash_malformed
{
# Checks for malformed hash arguments that pass parsing
declare -A myhash
function parse
{
cmdarg_purge
cmdarg 'x:{}' 'myhash' 'myhash'
cmdarg_parse "$@"
}
parse --myhash iamjustavalue && return 1
return 0
}