From: Bruno Haible Date: Mon, 19 Jun 2023 16:33:36 +0000 (+0200) Subject: Fix lang-python-* failures when a traditional French locale is present. X-Git-Tag: v0.23~422 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3c7e67be7d4dab9df362ab19f4f5fa3b9ca0836b;p=thirdparty%2Fgettext.git Fix lang-python-* failures when a traditional French locale is present. This is caused by the new UTF-8 encoded messages in .mo files, together with a bug in gettext.py from Python 2.7 that prohibits reencoding of the looked-up messages at run time. * gettext-tools/tests/lang-python-1: Instead of conditionally skipping the test in the $LOCALE_FR_UTF8 locale, conditionally skip the test in the $LOCALE_FR locale. * gettext-tools/tests/lang-python-2: Likewise. --- diff --git a/gettext-tools/tests/lang-python-1 b/gettext-tools/tests/lang-python-1 index 41264bfaa..f992cf387 100755 --- a/gettext-tools/tests/lang-python-1 +++ b/gettext-tools/tests/lang-python-1 @@ -3,9 +3,10 @@ # Test of gettext facilities in the Python language. -# Note: This test fails with Python 2.3 ... 2.7 when an UTF-8 locale is present. +# Note: This test fails with Python 2.3 ... 2.7 when an ISO-8859-1 locale is +# present. # It looks like a bug in Python's gettext.py. This here is a quick workaround: -UTF8_LOCALE_UNSUPPORTED=yes +ISO8859_LOCALE_UNSUPPORTED=yes cat <<\EOF > prog1.py import gettext @@ -82,16 +83,16 @@ EOF : ${LOCALE_FR=fr_FR} : ${LOCALE_FR_UTF8=fr_FR.UTF-8} -if test $LOCALE_FR != none; then - prepare_locale_ fr $LOCALE_FR - LANGUAGE= LC_ALL=$LOCALE_FR python prog1.py > prog.out || Exit 1 - ${DIFF} prog.ok prog.out || Exit 1 +if test $LOCALE_FR_UTF8 != none; then + prepare_locale_ fr $LOCALE_FR_UTF8 + LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 python prog1.py > prog.out || Exit 1 + ${DIFF} prog.oku prog.out || Exit 1 fi -if test -z "$UTF8_LOCALE_UNSUPPORTED"; then - if test $LOCALE_FR_UTF8 != none; then - prepare_locale_ fr $LOCALE_FR_UTF8 - LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 python prog1.py > prog.out || Exit 1 - ${DIFF} prog.oku prog.out || Exit 1 +if test -z "$ISO8859_LOCALE_UNSUPPORTED"; then + if test $LOCALE_FR != none; then + prepare_locale_ fr $LOCALE_FR + LANGUAGE= LC_ALL=$LOCALE_FR python prog1.py > prog.out || Exit 1 + ${DIFF} prog.ok prog.out || Exit 1 fi if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then if test -f /usr/bin/localedef; then @@ -102,11 +103,11 @@ if test -z "$UTF8_LOCALE_UNSUPPORTED"; then Exit 77 fi else - if test $LOCALE_FR = none; then + if test $LOCALE_FR_UTF8 = none; then if test -f /usr/bin/localedef; then - echo "Skipping test: no traditional french locale is installed" + echo "Skipping test: no french Unicode locale is installed" else - echo "Skipping test: no traditional french locale is supported" + echo "Skipping test: no french Unicode locale is supported" fi Exit 77 fi diff --git a/gettext-tools/tests/lang-python-2 b/gettext-tools/tests/lang-python-2 index 939400395..332100f2c 100755 --- a/gettext-tools/tests/lang-python-2 +++ b/gettext-tools/tests/lang-python-2 @@ -4,9 +4,10 @@ # Test of gettext facilities (including plural handling) in the Python # language. -# Note: This test fails with Python 2.3 ... 2.7 when an UTF-8 locale is present. +# Note: This test fails with Python 2.3 ... 2.7 when an ISO-8859-1 locale is +# present. # It looks like a bug in Python's gettext.py. This here is a quick workaround: -UTF8_LOCALE_UNSUPPORTED=yes +ISO8859_LOCALE_UNSUPPORTED=yes cat <<\EOF > prog2.py import sys @@ -103,16 +104,16 @@ EOF : ${LOCALE_FR=fr_FR} : ${LOCALE_FR_UTF8=fr_FR.UTF-8} -if test $LOCALE_FR != none; then - prepare_locale_ fr $LOCALE_FR - LANGUAGE= LC_ALL=$LOCALE_FR python prog2.py 2 > prog.out || Exit 1 - ${DIFF} prog.ok prog.out || Exit 1 +if test $LOCALE_FR_UTF8 != none; then + prepare_locale_ fr $LOCALE_FR_UTF8 + LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 python prog2.py 2 > prog.out || Exit 1 + ${DIFF} prog.oku prog.out || Exit 1 fi -if test -z "$UTF8_LOCALE_UNSUPPORTED"; then - if test $LOCALE_FR_UTF8 != none; then - prepare_locale_ fr $LOCALE_FR_UTF8 - LANGUAGE= LC_ALL=$LOCALE_FR_UTF8 python prog2.py 2 > prog.out || Exit 1 - ${DIFF} prog.oku prog.out || Exit 1 +if test -z "$ISO8859_LOCALE_UNSUPPORTED"; then + if test $LOCALE_FR != none; then + prepare_locale_ fr $LOCALE_FR + LANGUAGE= LC_ALL=$LOCALE_FR python prog2.py 2 > prog.out || Exit 1 + ${DIFF} prog.ok prog.out || Exit 1 fi if test $LOCALE_FR = none && test $LOCALE_FR_UTF8 = none; then if test -f /usr/bin/localedef; then @@ -123,11 +124,11 @@ if test -z "$UTF8_LOCALE_UNSUPPORTED"; then Exit 77 fi else - if test $LOCALE_FR = none; then + if test $LOCALE_FR_UTF8 = none; then if test -f /usr/bin/localedef; then - echo "Skipping test: no traditional french locale is installed" + echo "Skipping test: no french Unicode locale is installed" else - echo "Skipping test: no traditional french locale is supported" + echo "Skipping test: no french Unicode locale is supported" fi Exit 77 fi