From: David Levine Date: Tue, 20 Feb 2018 02:30:17 +0000 (-0500) Subject: Fixed mhshow/test-charset to work on all tested platforms. X-Git-Url: https://diplodocus.org/git/nmh/commitdiff_plain/8ed8876c673325b1af92d67012dc2e8ae3cf1019?hp=19c69cf39d0ab9aee0cf45caa13d39edf1997fef Fixed mhshow/test-charset to work on all tested platforms. Restores the functionality of commit f81046da6. Also, skips the last two tests if iconv isn't enabled. And removes the test files if the last test, without iconv_elides_question_marks, behaves as expected. Finally, some comments have been updated. --- diff --git a/test/mhshow/test-charset b/test/mhshow/test-charset index 63efcdd5..c3f0687f 100755 --- a/test/mhshow/test-charset +++ b/test/mhshow/test-charset @@ -20,8 +20,17 @@ check_exit '-eq 1' mhshow - require_locale en_US.UTF-8 en_US.UTF8 en_US.utf-8 en_US.utf8 -text_size=10 -test "$ICONV_ENABLED" -eq 1 && 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 libraries used on FreeBSD/NetBSD + #### and Mac OS X don'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 @@ -72,6 +81,13 @@ run_prog mhshow $msgnum > $actual 2>&1 check "$expected" "$actual" : locale profile component +#### All of the remaining tests rely on iconv.a +if test "$ICONV_ENABLED" -eq 0; then + finish_test + exit $failed +fi + + #### RFC 2231 defines the extended value syntax: #### extended-initial-value := [charset] "'" [language] "'" #### extended-other-values @@ -110,12 +126,14 @@ Content-Description: bogus quoted-printable data 4 ÷ 2 = 2 EOF -if test "$ICONV_ENABLED" -eq 1; then - run_prog mhshow $msgnum > $actual 2>&1 - check "$expected" "$actual" : encoded parameter value -fi +run_prog mhshow $msgnum > $actual 2>&1 +check "$expected" "$actual" : encoded parameter value +#### mhshow replaces the invalid character in the charset parameter value with +#### a '?'. So, a charset name of "?us-ascii" is fed to iconv. If +#### $iconv_elides_question_marks, iconv will normalize that to "us-ascii". +#### Otherwise, we expect iconv to fail. start_test 'replacement character in parameter value' cat > $msgfile <<'EOF' Subject: invalid parameter value charset @@ -133,7 +151,16 @@ 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 + if grep "Can't convert .*us-ascii to UTF-8" "$actual" >/dev/null; then + rm -f "$expected" "$actual" + else + failed=1 + fi +fi + finish_test exit $failed