]> diplodocus.org Git - nmh/blobdiff - test/mhshow/test-charset
Reworked parameter value tests to reflect Ralph's (re-?) discovery
[nmh] / test / mhshow / test-charset
index 86729a6545a73f74895d3e98844946f92b536d71..013499a27b06ee76a25b37a2fd69827566937012 100755 (executable)
@@ -20,7 +20,17 @@ check_exit '-eq 1' mhshow -
 
 require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8
 
-test "$ICONV_ENABLED" -eq 0  &&  text_size=10  || text_size=11
+iconv_elides_question_marks=0
+if test "$ICONV_ENABLED" -eq 0; then
+    text_size=10
+else
+    text_size=11
+    #### The GNU iconv library normalises charset names by eliding '?', along
+    #### with some other characters.  The iconv library used on FreeBSD/NetBSD
+    #### doesn't.
+    printf x | iconv -f ?UTF-8 -t UTF-8 >/dev/null 2>&1  &&
+        iconv_elides_question_marks=1
+fi
 
 expected=$MH_TEST_DIR/$$.expected
 actual=$MH_TEST_DIR/$$.actual
@@ -71,12 +81,16 @@ run_prog mhshow $msgnum > $actual 2>&1
 check "$expected" "$actual" : locale profile component
 
 
+#### RFC 2231 defines the extended value syntax:
+#### extended-initial-value := [charset] "'" [language] "'"
+####                           extended-other-values
+#### used below, where language is blank.
+
 start_test 'Encoded parameter value'
 msgfile=`mhpath new`
 msgnum=`basename $msgfile`
-#### The encoded charset name is really UTF-8 encoded,
-#### but say it's UTF-16 to exercise the iconv code,
-#### if it's available, in get_param_value().
+#### Use a charset to exercise the iconv code, if it's available,
+#### in get_param_value().
 cat > $msgfile <<EOF
 From: foo@example.edu
 To: bar@example.edu
@@ -104,15 +118,8 @@ Content-Description: bogus quoted-printable data
 4 รท 2 = 2
 EOF
 
-if test "$ICONV_ENABLED" -eq 1; then
-  if iconv -l | grep EBCDIC-US >/dev/null; then
-    #### For unknown reasons, this test fails on the FreeBSD10
-    #### buildbot.  It doesn't support EBCDIC-US, so skip it
-    #### on that bot.
-    run_prog mhshow $msgnum > $actual 2>&1
-    check "$expected" "$actual" : encoded parameter value
-  fi
-fi
+run_prog mhshow $msgnum > $actual 2>&1
+check "$expected" "$actual" : encoded parameter value
 
 
 start_test 'replacement character in parameter value'
@@ -134,7 +141,11 @@ MIME-Version: 1.0
 EOF
 
 run_prog mhshow $msgnum > $actual 2>&1
-check "$expected" "$actual"
+if [ $iconv_elides_question_marks -eq 1 ]; then
+    check "$expected" "$actual"
+else
+    grep "Can't convert .*us-ascii to UTF-8" "$actual" >/dev/null  ||  failed=1
+fi
 
 
 finish_test