Added test to cover the case when cmdarg_purge erases or otherwise makes the cmdarg_cfg internals unusable, also changed the purge method to something much simpler
This commit is contained in:
@@ -324,12 +324,7 @@ function cmdarg_purge
|
|||||||
arrays="$arrays CMDARG_FLAGS CMDARG_TYPES"
|
arrays="$arrays CMDARG_FLAGS CMDARG_TYPES"
|
||||||
for arr in $arrays
|
for arr in $arrays
|
||||||
do
|
do
|
||||||
str='${!'"$arr"'[@]}'
|
eval "$arr=()"
|
||||||
for key in $(eval "echo $str")
|
|
||||||
do
|
|
||||||
str="$arr[$key]"
|
|
||||||
eval "unset $str"
|
|
||||||
done
|
|
||||||
done
|
done
|
||||||
CMDARG_GETOPTLIST="h"
|
CMDARG_GETOPTLIST="h"
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,5 +1,30 @@
|
|||||||
source $(dirname ${BASH_SOURCE})/../cmdarg.sh
|
source $(dirname ${BASH_SOURCE})/../cmdarg.sh
|
||||||
|
|
||||||
|
function shunittest_clean_state_usable()
|
||||||
|
{
|
||||||
|
function parse1()
|
||||||
|
{
|
||||||
|
cmdarg 'a:' 'a' 'some arg'
|
||||||
|
cmdarg 'b' 'b' 'some arg'
|
||||||
|
cmdarg_parse "$@"
|
||||||
|
}
|
||||||
|
|
||||||
|
function parse2()
|
||||||
|
{
|
||||||
|
cmdarg_purge
|
||||||
|
cmdarg 'c:' 'c' 'some arg'
|
||||||
|
cmdarg 'd' 'd' 'some arg'
|
||||||
|
cmdarg_parse "$@"
|
||||||
|
}
|
||||||
|
parse1 -a 3 -b
|
||||||
|
parse2 -c 5 -d
|
||||||
|
[[ "${cmdarg_cfg['c']}" == "5" ]] || return 1
|
||||||
|
[[ "${cmdarg_cfg['d']}" == "true" ]] || return 1
|
||||||
|
[[ "${cmdarg_cfg['a']}" == "" ]] || return 1
|
||||||
|
[[ "${cmdarg_cfg['b']}" == "" ]] || return 1
|
||||||
|
return 0
|
||||||
|
}
|
||||||
|
|
||||||
function shunittest_clean_state()
|
function shunittest_clean_state()
|
||||||
{
|
{
|
||||||
# Tests that cmdarg_purge ensures an empty config state
|
# Tests that cmdarg_purge ensures an empty config state
|
||||||
|
|||||||
Reference in New Issue
Block a user