Removed note from BUGS section of several man pages saying
[mmh] / test / format / test-myname
index 97a0539..dda0f37 100755 (executable)
@@ -4,35 +4,56 @@
 # the Signature profile entry, and via SIGNATURE environment variable.
 #
 
+set -e
+
 if test -z "${MH_OBJ_DIR}"; then
-    srcdir=`dirname $0`/../..
-    MH_OBJ_DIR=`cd $srcdir && pwd`; export MH_OBJ_DIR
+    srcdir=`dirname "$0"`/../..
+    MH_OBJ_DIR=`cd "$srcdir" && pwd`; export MH_OBJ_DIR
 fi
 
 . "$MH_OBJ_DIR/test/common.sh"
 
 setup_test
 
-unset SIGNATURE 
-
-runtest()
-{
-       testoutput=$(${MH_LIB_DIR}/ap -format "%(myname)" ignore)
-
-       if [ x"$1" != x"${testoutput}" ]; then
-               echo "For $2, expected $1 but got ${testoutput}"
-               exit 1
-       fi
-}
+unset SIGNATURE
 
-runtest "$(${MH_OBJ_DIR}/test/getfullname)" "GECOS field test"
+fullname=`${MH_OBJ_DIR}/test/getfullname`
+run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
+         "$fullname" "GECOS field test"
 
 echo "Signature: Some Random Name 1" >> ${MH}
 
-runtest "Some Random Name 1" "MH Profile Signature test"
-
-export SIGNATURE="Some Random Name 2"
-
-runtest "${SIGNATURE}" "SIGNATURE Environment test"
-
-exit 0
+run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
+         "Some Random Name 1" "MH Profile Signature test"
+
+SIGNATURE="Some Random Name 2"
+export SIGNATURE
+
+run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
+         "${SIGNATURE}" "SIGNATURE Environment test"
+
+#### Test escaping of display names.
+escape="${MH_OBJ_DIR}/test/getfullname"
+run_test "$escape "'user'           'user'              'no escape'
+run_test "$escape "'first.last'     '"first.last"'      'escape'
+run_test "$escape "'"first.last"'   '"first.last"'      'already escaped'
+run_test "$escape "'first.last"'    '"first.last"'      'missing initial "'
+run_test "$escape "'"first.last'    '"first.last"'      'missing final "'
+run_test "$escape "'embedded"quote' '"embedded\"quote"' 'embedded quote'
+run_test "$escape "'server\name,#'  '"server\name"'     'Windows form'
+run_test "$escape "'"'              '"\""'              'special "'
+run_test "$escape "'('              '"("'               'special ('
+run_test "$escape "')'              '")"'               'special )'
+#### We stop at the first comma so this one gets eliminated:
+run_test "$escape "','              ''                  'special ,'
+run_test "$escape "'.'              '"."'               'special .'
+run_test "$escape "':'              '":"'               'special :'
+run_test "$escape "';'              '";"'               'special ;'
+run_test "$escape "'<'              '"<"'               'special <'
+run_test "$escape "'>'              '">"'               'special >'
+run_test "$escape "'@'              '"@"'               'special @'
+run_test "$escape "'['              '"["'               'special ['
+run_test "$escape "'\\'             '"\\"'              'special \\'
+run_test "$escape "']'              '"]"'               'special ]'
+
+exit $failed