found problems with help output for booleans; writing tests to catch
diff --git a/source/1.0/src/shflags_test.sh b/source/1.0/src/shflags_test.sh
index fd11d74..0a58c90 100755
--- a/source/1.0/src/shflags_test.sh
+++ b/source/1.0/src/shflags_test.sh
@@ -10,9 +10,10 @@
MY_NAME=`basename $0`
MY_PATH=`dirname $0`
+PREFIX='shflags_test_'
SHELLS='/bin/sh /bin/bash /bin/dash /bin/ksh /bin/pdksh /bin/zsh'
TESTS=''
-for test in shflags_test_[a-z]*.sh; do
+for test in ${PREFIX}[a-z]*.sh; do
TESTS="${TESTS} ${test}"
done
@@ -121,7 +122,7 @@
# execute the tests
for suite in ${tests}; do
- suiteName=`expr "${suite}" : 'gflags_test_\(.*\).sh'`
+ suiteName=`expr "${suite}" : "${PREFIX}\(.*\).sh"`
echo
echo "--- Executing the '${suiteName}' test suite ---" >&2
( exec ${shell} ${shell_opts} ./${suite}; )
diff --git a/source/1.0/src/shflags_test_helpers b/source/1.0/src/shflags_test_helpers
index 3a1e860..0c0cdb6 100644
--- a/source/1.0/src/shflags_test_helpers
+++ b/source/1.0/src/shflags_test_helpers
@@ -9,6 +9,9 @@
__th_skipping=0
+# my name
+TH_MY_NAME=`basename "$0"`
+
# path to shFlags library. can be overridden by setting SHFLAGS_INC
TH_SHFLAGS=${SHFLAGS_INC:-./shflags}
diff --git a/source/1.0/src/shflags_test_internal.sh b/source/1.0/src/shflags_test_private.sh
similarity index 100%
rename from source/1.0/src/shflags_test_internal.sh
rename to source/1.0/src/shflags_test_private.sh
diff --git a/source/1.0/src/shflags_test_public.sh b/source/1.0/src/shflags_test_public.sh
new file mode 100755
index 0000000..67e5a83
--- /dev/null
+++ b/source/1.0/src/shflags_test_public.sh
@@ -0,0 +1,136 @@
+#! /bin/sh
+# vim:et:ft=sh:sts=2:sw=2
+#
+# Copyright 2008 Kate Ward. All Rights Reserved.
+# Released under the LGPL (GNU Lesser General Public License)
+#
+# Author: kate.ward@forestent.com (Kate Ward)
+#
+# shFlags unit test for the internal functions
+
+# load test helpers
+. ./shflags_test_helpers
+
+#------------------------------------------------------------------------------
+# suite tests
+#
+
+testGeneralHelpOutput()
+{
+ #
+ # test short -h option
+ #
+
+ rslt=`FLAGS -h 2>&1`
+ rtrn=$?
+ assertFalse \
+ 'short request for help should have returned non-zero exit code.' \
+ ${rtrn}
+ echo "${rslt}" |grep -- 'show this help' >/dev/null
+ rtrn=$?
+ assertTrue \
+ 'short request for help should have produced some help output.' \
+ ${rtrn}
+ [ ${rtrn} -ne ${FLAGS_TRUE} ] && echo "${rslt}" >&2
+
+ # test proper output when FLAGS_HELP set
+ rslt=`FLAGS_HELP='this is a test'; FLAGS -h 2>&1`
+ echo "${rslt}" |grep -- 'this is a test' >/dev/null
+ rtrn=$?
+ assertTrue \
+ 'setting FLAGS_HELP did not produce expected result' \
+ ${rtrn}
+ [ ${rtrn} -ne ${FLAGS_TRUE} ] && echo "${rslt}" >&2
+
+ # test that "'" chars work in help string
+ DEFINE_boolean b false "help string containing a ' char" b
+ rslt=`FLAGS -h 2>&1`
+ echo "${rslt}" |grep -- "help string containing a ' char" >/dev/null
+ rtrn=$?
+ assertTrue \
+ "help strings containing apostrophes don't work" \
+ ${rtrn}
+ [ ${rtrn} -ne ${FLAGS_TRUE} ] && echo "${rslt}" >&2
+
+ #
+ # test long --help option
+ #
+
+ flags_getoptIsStd && startSkipping
+
+ rslt=`FLAGS --help 2>&1`
+ rtrn=$?
+ assertFalse \
+ 'long request for help should have returned non-zero exit code.' \
+ ${rtrn}
+ echo "${rslt}" |grep -- 'show this help' >/dev/null
+ assertTrue \
+ 'long request for help should have produced some help output.' \
+ $?
+}
+
+testSpecificHelpOutput()
+{
+ DEFINE_string test '' 'test string' t
+
+ # short option testing
+
+ cat >"${expectedF}" <<EOF
+USAGE: ./${shunitParent} [flags] args
+flags:
+ -h show this help
+ -t test string
+EOF
+ ( FLAGS -h >"${stdoutF}" 2>"${stderrF}" )
+ diff "${expectedF}" "${stderrF}" >/dev/null
+ rtrn=$?
+ assertTrue 'short flag help; unexpected help output' ${rtrn}
+ [ ${__shunit_skip} -eq ${SHUNIT_FALSE} \
+ -a ${rtrn} -ne ${FLAGS_TRUE} ] \
+ && cat "${stderrF}"
+
+ # long option testing
+ flags_getoptIsStd && startSkipping
+
+ cat >"${expectedF}" <<EOF
+USAGE: ./${shunitParent} [flags] args
+flags:
+ -h show this help
+ -t test string
+EOF
+ ( FLAGS --help >"${stdoutF}" 2>"${stderrF}" )
+ diff "${expectedF}" "${stderrF}" >/dev/null
+ rtrn=$?
+ assertTrue 'long flag help; unexpected help output' ${rtrn}
+ [ ${__shunit_skip} -eq ${SHUNIT_FALSE} \
+ -a ${rtrn} -ne ${FLAGS_TRUE} ] \
+ && cat "${stderrF}"
+}
+
+#------------------------------------------------------------------------------
+# suite functions
+#
+
+oneTimeSetUp()
+{
+ # load flags
+ [ -n "${ZSH_VERSION:-}" ] && FLAGS_PARENT=$0
+ . ${TH_SHFLAGS}
+
+ tmpDir="${__shunit_tmpDir}/output"
+ mkdir "${tmpDir}"
+ stdoutF="${tmpDir}/stdout"
+ stderrF="${tmpDir}/stderr"
+ expectedF="${tmpDir}/expected"
+
+ shunitParent=`basename "${__SHUNIT_PARENT}"`
+}
+
+setUp()
+{
+ flags_reset
+}
+
+# load and run shUnit2
+[ -n "${ZSH_VERSION:-}" ] && SHUNIT_PARENT=$0
+. ${TH_SHUNIT}