diff options
author | kate.ward <kate.ward@forestent.com> | 2010-03-28 23:12:17 +0000 |
---|---|---|
committer | kate.ward <kate.ward@forestent.com> | 2010-03-28 23:12:17 +0000 |
commit | 929261fb95f6949701e1d93c8159c055fb21face (patch) | |
tree | 789ce9ba6e73dc8edb764cc376ea5ccc4f98987f /source/1.0/src | |
parent | 93203d95ab0e7ca2493dc1046edf7a4b82287cd6 (diff) | |
download | shflags-929261fb95f6949701e1d93c8159c055fb21face.tar.gz |
fixed flakey functionality of booleans
Diffstat (limited to 'source/1.0/src')
-rw-r--r-- | source/1.0/src/shflags | 22 | ||||
-rwxr-xr-x | source/1.0/src/shflags_test_private.sh | 48 |
2 files changed, 53 insertions, 17 deletions
diff --git a/source/1.0/src/shflags b/source/1.0/src/shflags index aaea760..0d0f9de 100644 --- a/source/1.0/src/shflags +++ b/source/1.0/src/shflags @@ -86,7 +86,7 @@ FLAGS_FALSE=1 FLAGS_ERROR=2 # reserved flag names -FLAGS_RESERVED='ARGC ARGV ERROR FALSE HELP PARENT RESERVED TRUE VERSION' +FLAGS_RESERVED_LIST=' ARGC ARGV ERROR FALSE HELP PARENT RESERVED TRUE VERSION ' _flags_debug() { echo "flags:DEBUG $@" >&2; } _flags_warn() { echo "flags:WARN $@" >&2; } @@ -229,8 +229,8 @@ _flags_define() # TODO(kward): check for validity of the flag name (e.g. dashes) # check whether the flag name is reserved - echo " ${FLAGS_RESERVED} " |grep " ${_flags_name_} " >/dev/null - if [ $? -eq 0 ]; then + _flags_itemInList ${_flags_name_} "${FLAGS_RESERVED_LIST}" + if [ $? -eq ${FLAGS_TRUE} ]; then flags_error="flag name (${_flags_name_}) is reserved" _flags_return_=${FLAGS_ERROR} fi @@ -352,6 +352,8 @@ _flags_genOptStr() for _flags_flag_ in ${__flags_longNames}; do _flags_type_=`_flags_getFlagInfo ${_flags_flag_} ${__FLAGS_INFO_TYPE}` + [ $? -eq ${FLAGS_TRUE} ] || \ + ( _flags_fatal 'call to _flags_type_ failed'; return ${FLAGS_ERROR} ) case ${_flags_optStrType_} in ${__FLAGS_OPTSTR_SHORT}) _flags_shortName_=`_flags_getFlagInfo \ @@ -394,9 +396,9 @@ _flags_getFlagInfo() _flags_info_=$2 _flags_nameVar_="__flags_${_flags_name_}_${_flags_info_}" - _flags_strToEval_="_flags_value_=\"\${${_flags_nameVar_}:-}\"" + _flags_strToEval_="_flags_nameValue_=\"\${${_flags_nameVar_}:-}\"" eval "${_flags_strToEval_}" - if [ -n "${_flags_value_}" ]; then + if [ -n "${_flags_nameValue_}" ]; then flags_return=${FLAGS_TRUE} else # see if the _flags_name_ variable is a string as strings can be empty... @@ -407,9 +409,9 @@ _flags_getFlagInfo() # try to find the _type variable of the _type variable, and so on. Not so # good ;-) _flags_typeVar_="__flags_${_flags_name_}_${__FLAGS_INFO_TYPE}" - _flags_strToEval_="_flags_type_=\"\${${_flags_typeVar_}:-}\"" + _flags_strToEval_="_flags_typeValue_=\"\${${_flags_typeVar_}:-}\"" eval "${_flags_strToEval_}" - if [ "${_flags_type_}" = "${__FLAGS_TYPE_STRING}" ]; then + if [ "${_flags_typeValue_}" = "${__FLAGS_TYPE_STRING}" ]; then flags_return=${FLAGS_TRUE} else flags_return=${FLAGS_ERROR} @@ -417,9 +419,9 @@ _flags_getFlagInfo() fi fi - echo "${_flags_value_}" - unset _flags_info_ _flags_name_ _flags_strToEval_ _flags_type_ _flags_value_ \ - _flags_nameVar_ _flags_typeVar_ + echo "${_flags_nameValue_}" + unset _flags_info_ _flags_name_ _flags_nameValue_ _flags_nameVar_ \ + _flags_strToEval_ _flags_typeValue_ _flags_typeVar_ [ ${flags_return} -eq ${FLAGS_ERROR} ] && _flags_error "${flags_error}" return ${flags_return} } diff --git a/source/1.0/src/shflags_test_private.sh b/source/1.0/src/shflags_test_private.sh index f145593..6f15bb8 100755 --- a/source/1.0/src/shflags_test_private.sh +++ b/source/1.0/src/shflags_test_private.sh @@ -16,6 +16,47 @@ # suite tests # +testColumns() +{ + cols=`_flags_columns` + value=`expr "${cols}" : '\([0-9]*\)'` + assertNotNull "unexpected screen width (${cols})" "${value}" +} + +testGenOptStr() +{ + _testGenOptStr '' '' + + DEFINE_boolean bool false 'boolean value' b + _testGenOptStr 'b' 'bool' + + DEFINE_float float 0.0 'float value' f + _testGenOptStr 'bf:' 'bool,float:' + + DEFINE_integer int 0 'integer value' i + _testGenOptStr 'bf:i:' 'bool,float:,int:' + + DEFINE_string str 0 'string value' s + _testGenOptStr 'bf:i:s:' 'bool,float:,int:,str:' + + DEFINE_boolean help false 'show help' h + _testGenOptStr 'bf:i:s:h' 'bool,float:,int:,str:,help' +} + +_testGenOptStr() +{ + short=$1 + long=$2 + + result=`_flags_genOptStr ${__FLAGS_OPTSTR_SHORT}` + assertTrue 'short option string generation failed' $? + assertEquals "${short}" "${result}" + + result=`_flags_genOptStr ${__FLAGS_OPTSTR_LONG}` + assertTrue 'long option string generation failed' $? + assertEquals "${long}" "${result}" +} + testGetFlagInfo() { __flags_blah_foobar='1234' @@ -52,13 +93,6 @@ testItemInList() assertFalse 'empty lists should not match' $? } -testColumns() -{ - cols=`_flags_columns` - value=`expr "${cols}" : '\([0-9]*\)'` - assertNotNull "unexpected screen width (${cols})" "${value}" -} - testValidateBoolean() { # valid values |