Added test-slocal.
[mmh] / test / format / test-myname
index dc86ea5..dda0f37 100755 (executable)
@@ -4,6 +4,8 @@
 # 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
@@ -13,19 +15,45 @@ fi
 
 setup_test
 
-unset SIGNATURE 
+unset SIGNATURE
 
+fullname=`${MH_OBJ_DIR}/test/getfullname`
 run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
-         "`${MH_OBJ_DIR}/test/getfullname`" "GECOS field test"
+         "$fullname" "GECOS field test"
 
 echo "Signature: Some Random Name 1" >> ${MH}
 
 run_test "${MH_LIB_DIR}/ap -format %(myname) ignore" \
          "Some Random Name 1" "MH Profile Signature test"
 
-export SIGNATURE="Some Random Name 2"
+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