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}