diff --git a/cmdarg.sh b/cmdarg.sh index a940cc0..3829912 100644 --- a/cmdarg.sh +++ b/cmdarg.sh @@ -324,12 +324,7 @@ function cmdarg_purge arrays="$arrays CMDARG_FLAGS CMDARG_TYPES" for arr in $arrays do - str='${!'"$arr"'[@]}' - for key in $(eval "echo $str") - do - str="$arr[$key]" - eval "unset $str" - done + eval "$arr=()" done CMDARG_GETOPTLIST="h" } diff --git a/tests/test_clean_state.sh b/tests/test_clean_state.sh index 48297fc..f8f288e 100644 --- a/tests/test_clean_state.sh +++ b/tests/test_clean_state.sh @@ -1,5 +1,30 @@ 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() { # Tests that cmdarg_purge ensures an empty config state @@ -55,4 +80,4 @@ function shunittest_clean_state_subshells() cmdarg_dump return 1 fi -} \ No newline at end of file +}