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:
@@ -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
|
||||
}
|
||||
|
||||
54
tests/test_validators.sh
Normal file
54
tests/test_validators.sh
Normal file
@@ -0,0 +1,54 @@
|
||||
#!/usr/bin/bash4
|
||||
|
||||
source $(dirname ${BASH_SOURCE[0]})/../cmdarg.sh
|
||||
|
||||
function shunittest_validator_for_hash
|
||||
{
|
||||
function my_hash_validator
|
||||
{
|
||||
value=${1:-$OPTARG}
|
||||
echo "my_hash_validator $value" >&2
|
||||
[[ "$value" == "value" ]]
|
||||
}
|
||||
|
||||
declare -A something
|
||||
|
||||
cmdarg_purge
|
||||
cmdarg 'x:{}' 'something' 'something' '' my_hash_validator || return 1
|
||||
set -x
|
||||
cmdarg_parse --something key=notavalue && return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
function shunittest_validator_for_array
|
||||
{
|
||||
function my_array_validator
|
||||
{
|
||||
value=${1:-$OPTARG}
|
||||
echo "my_array_validator $value" >&2
|
||||
[[ "$value" == "value" ]]
|
||||
}
|
||||
|
||||
declare -a something
|
||||
|
||||
cmdarg_purge
|
||||
cmdarg 'x:[]' 'something' 'something' '' my_array_validator || return 1
|
||||
cmdarg_parse --something notavalue && return 1
|
||||
return 0
|
||||
}
|
||||
|
||||
function shunittest_validator_failure_recognized
|
||||
{
|
||||
|
||||
function my_validator
|
||||
{
|
||||
value=${1:-$OPTARG}
|
||||
echo "my_validator $value" >&2
|
||||
[[ "$value" == "value" ]]
|
||||
}
|
||||
|
||||
cmdarg_purge
|
||||
cmdarg 'x:' 'something' 'something' '' my_validator
|
||||
cmdarg_parse --something notavalue || return 0
|
||||
return 1
|
||||
}
|
||||
Reference in New Issue
Block a user