aboutsummaryrefslogtreecommitdiff
path: root/source/1.0/src
diff options
context:
space:
mode:
authorkate.ward <kate.ward@forestent.com>2010-03-28 23:12:17 +0000
committerkate.ward <kate.ward@forestent.com>2010-03-28 23:12:17 +0000
commit929261fb95f6949701e1d93c8159c055fb21face (patch)
tree789ce9ba6e73dc8edb764cc376ea5ccc4f98987f /source/1.0/src
parent93203d95ab0e7ca2493dc1046edf7a4b82287cd6 (diff)
downloadshflags-929261fb95f6949701e1d93c8159c055fb21face.tar.gz
fixed flakey functionality of booleans
Diffstat (limited to 'source/1.0/src')
-rw-r--r--source/1.0/src/shflags22
-rwxr-xr-xsource/1.0/src/shflags_test_private.sh48
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