From: Bruno Haible Date: Sat, 20 Oct 2018 15:54:03 +0000 (+0200) Subject: Rename test gettext-7 to intl-thread-3 and support more platforms. X-Git-Tag: v0.20~315 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=43620051b06ff648bd9a06af6a1f27a23a7692c9;p=thirdparty%2Fgettext.git Rename test gettext-7 to intl-thread-3 and support more platforms. * gettext-tools/tests/intl-thread-3: Renamed from gettext-tools/tests/gettext-7. Don't limit to fixed set of platforms. * gettext-tools/tests/intl-thread-3-prg.c: Renamed from gettext-tools/tests/gettext-7-prg.c. Expect locale names as arguments. * gettext-tools/tests/intl-thread-3.po: Renamed from gettext-tools/tests/gettext-7.po. * gettext-tools/tests/Makefile.am: Update. --- diff --git a/.gitignore b/.gitignore index 82b740a0f..158434f67 100644 --- a/.gitignore +++ b/.gitignore @@ -659,8 +659,6 @@ autom4te.cache/ /gettext-tools/tests/fc4.exe /gettext-tools/tests/fc5 /gettext-tools/tests/fc5.exe -/gettext-tools/tests/gettext-7-prg -/gettext-tools/tests/gettext-7-prg.exe /gettext-tools/tests/gettext-8-prg /gettext-tools/tests/gettext-8-prg.exe /gettext-tools/tests/gettextpo-1-prg @@ -679,6 +677,8 @@ autom4te.cache/ /gettext-tools/tests/intl-thread-1-prg.exe /gettext-tools/tests/intl-thread-2-prg /gettext-tools/tests/intl-thread-2-prg.exe +/gettext-tools/tests/intl-thread-3-prg +/gettext-tools/tests/intl-thread-3-prg.exe /gettext-tools/tests/sentence-1-prg /gettext-tools/tests/sentence-1-prg.exe /gettext-tools/tests/testlocale diff --git a/gettext-tools/tests/Makefile.am b/gettext-tools/tests/Makefile.am index 244b1c42e..4ed721c28 100644 --- a/gettext-tools/tests/Makefile.am +++ b/gettext-tools/tests/Makefile.am @@ -23,8 +23,8 @@ MOSTLYCLEANFILES = core *.stackdump TESTS = gettext-1 gettext-2 \ intl-1 intl-2 intl-3 intl-4 \ intl-setlocale-1 intl-setlocale-2 \ - intl-thread-1 intl-thread-2 \ - gettext-7 gettext-8 \ + intl-thread-1 intl-thread-2 intl-thread-3 \ + gettext-8 \ msgattrib-1 msgattrib-2 msgattrib-3 msgattrib-4 msgattrib-5 \ msgattrib-6 msgattrib-7 msgattrib-8 msgattrib-9 msgattrib-10 \ msgattrib-11 msgattrib-12 msgattrib-13 msgattrib-14 msgattrib-15 \ @@ -167,7 +167,7 @@ EXTRA_DIST += init.sh init.cfg $(TESTS) \ intl-1.po intl-2-1.po intl-2-2.po intl-4.po \ intl-setlocale-1-1.po intl-setlocale-1-2.po intl-setlocale-2.po \ intl-thread-1.po intl-thread-2-1.po intl-thread-2-2.po \ - gettext-7.po \ + intl-thread-3.po \ gettextpo-1.de.po \ xgettext-1 \ xgettext-c-1 xg-c-21.c \ @@ -224,7 +224,7 @@ DEFS = -DLOCALEDIR=\"$(localedir)\" @DEFS@ LDADD = $(LDADD_@USE_INCLUDED_LIBINTL@) @INTL_MACOSX_LIBS@ LDADD_yes = ../intl/libintl.la @LTLIBTHREAD@ LDADD_no = ../intl/libgnuintl.la @LTLIBTHREAD@ @LTLIBINTL@ -check_PROGRAMS = tstgettext tstngettext testlocale intl-1-prg intl-3-prg intl-4-prg intl-setlocale-1-prg intl-setlocale-2-prg intl-thread-1-prg intl-thread-2-prg gettext-7-prg gettext-8-prg cake fc3 fc4 fc5 gettextpo-1-prg sentence-1-prg +check_PROGRAMS = tstgettext tstngettext testlocale intl-1-prg intl-3-prg intl-4-prg intl-setlocale-1-prg intl-setlocale-2-prg intl-thread-1-prg intl-thread-2-prg intl-thread-3-prg gettext-8-prg cake fc3 fc4 fc5 gettextpo-1-prg sentence-1-prg tstgettext_SOURCES = tstgettext.c setlocale.c tstgettext_CFLAGS = -DINSTALLDIR=\".\" tstgettext_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) @@ -252,11 +252,11 @@ intl_thread_2_prg_CFLAGS = $(intl_thread_2_prg_CFLAGS_@HAVE_NEWLOCALE@) intl_thread_2_prg_CFLAGS_1 = -DUSE_POSIX_THREADS intl_thread_2_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) $(intl_thread_2_prg_LDADD_@HAVE_NEWLOCALE@) intl_thread_2_prg_LDADD_1 = -lpthread -gettext_7_prg_SOURCES = gettext-7-prg.c -gettext_7_prg_CFLAGS = $(gettext_7_prg_CFLAGS_@HAVE_NEWLOCALE@) -gettext_7_prg_CFLAGS_1 = -DUSE_POSIX_THREADS -gettext_7_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) $(gettext_7_prg_LDADD_@HAVE_NEWLOCALE@) -gettext_7_prg_LDADD_1 = -lpthread +intl_thread_3_prg_SOURCES = intl-thread-3-prg.c +intl_thread_3_prg_CFLAGS = $(intl_thread_3_prg_CFLAGS_@HAVE_NEWLOCALE@) +intl_thread_3_prg_CFLAGS_1 = -DUSE_POSIX_THREADS +intl_thread_3_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) $(intl_thread_3_prg_LDADD_@HAVE_NEWLOCALE@) +intl_thread_3_prg_LDADD_1 = -lpthread gettext_8_prg_SOURCES = gettext-8-prg.c gettext_8_prg_LDADD = ../gnulib-lib/libgettextlib.la $(LDADD) cake_SOURCES = plural-1-prg.c setlocale.c diff --git a/gettext-tools/tests/gettext-7 b/gettext-tools/tests/gettext-7 deleted file mode 100755 index cf9f114cd..000000000 --- a/gettext-tools/tests/gettext-7 +++ /dev/null @@ -1,52 +0,0 @@ -#! /bin/sh -. "${srcdir=.}/init.sh"; path_prepend_ . ../src - -# Test that on glibc systems, gettext() in multithreaded applications works -# correctly if different threads operate in different locales referring to -# the same catalog file but with different encodings. - -# This test works only on glibc and MacOS X systems. -: ${host_os=unknown} -: ${GLIBC2=no} -{ case "$host_os" in - *-gnu*) test "$GLIBC2" = yes ;; - darwin*) true ;; - *) false ;; - esac -} || { - echo "Skipping test: not a glibc or Mac OS X system" - Exit 77 -} - -# This test works only on systems that have a de_DE.ISO-8859-1 and -# de_DE.UTF-8 locale installed. -missing_locale=`../gettext-7-prg 1` -if test -n "$missing_locale"; then - if test -f /usr/bin/localedef; then - echo "Skipping test: locale ${missing_locale} not installed" - else - echo "Skipping test: locale ${missing_locale} not supported" - fi - Exit 77 -fi - -test -d gt-7 || mkdir gt-7 -test -d gt-7/de_DE || mkdir gt-7/de_DE -test -d gt-7/de_DE/LC_MESSAGES || mkdir gt-7/de_DE/LC_MESSAGES - -: ${MSGFMT=msgfmt} -${MSGFMT} -o gt-7/de_DE/LC_MESSAGES/tstthread.mo "$abs_srcdir"/gettext-7.po - -../gettext-7-prg > gt-7.out -case $? in - 0) ;; - 77) - echo "Skipping test: not a glibc >= 2.3 or MacOS X >= 10.5 system" - Exit 77 - ;; - *) - Exit 1 - ;; -esac - -Exit 0 diff --git a/gettext-tools/tests/intl-thread-3 b/gettext-tools/tests/intl-thread-3 new file mode 100755 index 000000000..9ca30dee8 --- /dev/null +++ b/gettext-tools/tests/intl-thread-3 @@ -0,0 +1,43 @@ +#! /bin/sh +. "${srcdir=.}/init.sh"; path_prepend_ . ../src + +# Test that gettext() in multithreaded applications works correctly if +# different threads operate in different locales referring to the same +# catalog file but with different encodings. + +# Let's use two locales that configure already checked for: French. +# The PO file is actually German, not French, but that doesn't matter. + +test -d in-th-3 || mkdir in-th-3 +test -d in-th-3/fr || mkdir in-th-3/fr +test -d in-th-3/fr/LC_MESSAGES || mkdir in-th-3/fr/LC_MESSAGES + +: ${MSGFMT=msgfmt} +${MSGFMT} -o in-th-3/fr/LC_MESSAGES/tstthread.mo "$abs_srcdir"/intl-thread-3.po + +: ${LOCALE_FR=fr_FR} +: ${LOCALE_FR_UTF8=fr_FR.UTF-8} +if test $LOCALE_FR != none && test $LOCALE_FR_UTF8 != none; then + prepare_locale_ in-th-3/fr in-th-3/$LOCALE_FR + prepare_locale_ in-th-3/fr in-th-3/$LOCALE_FR_UTF8 + ../intl-thread-3-prg $LOCALE_FR $LOCALE_FR_UTF8 > in-th-3.out + case $? in + 0) ;; + 77) + echo "Skipping test: POSIX per-thread locales not supported" + Exit 77 + ;; + *) + Exit 1 + ;; + esac +else + if test -f /usr/bin/localedef; then + echo "Skipping test: no traditional and modern french locales are installed" + else + echo "Skipping test: no traditional and modern french locales are supported" + fi + Exit 77 +fi + +Exit 0 diff --git a/gettext-tools/tests/gettext-7-prg.c b/gettext-tools/tests/intl-thread-3-prg.c similarity index 72% rename from gettext-tools/tests/gettext-7-prg.c rename to gettext-tools/tests/intl-thread-3-prg.c index 9574da098..c9ff0bfc7 100644 --- a/gettext-tools/tests/gettext-7-prg.c +++ b/gettext-tools/tests/intl-thread-3-prg.c @@ -1,5 +1,5 @@ -/* Test program, used by the gettext-7 test. - Copyright (C) 2005-2007, 2009-2010, 2015-2016 Free Software Foundation, Inc. +/* Test program, used by the intl-thread-3 test. + Copyright (C) 2005-2007, 2009-2010, 2015-2016, 2018 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -25,7 +25,7 @@ #include #include -#if USE_POSIX_THREADS && ((__GLIBC__ >= 2 && !defined __UCLIBC__) || (defined __APPLE__ && defined __MACH__)) && HAVE_USELOCALE +#if USE_POSIX_THREADS && HAVE_USELOCALE #include @@ -33,17 +33,10 @@ #undef _LIBINTL_H #include "libgnuintl.h" -/* Name of German locale in ISO-8859-1 or ISO-8859-15 encoding. */ -#if __GLIBC__ >= 2 -# define LOCALE_DE_ISO8859 "de_DE.ISO-8859-1" -#elif defined __APPLE__ && defined __MACH__ /* MacOS X */ -# define LOCALE_DE_ISO8859 "de_DE.ISO8859-1" -#else -# define LOCALE_DE_ISO8859 "de_DE" -#endif - -/* Name of German locale in UTF-8 encoding. */ -#define LOCALE_DE_UTF8 "de_DE.UTF-8" +/* Name of locale to use in thread1. */ +const char *locale_name_1; +/* Name of locale to use in thread2. */ +const char *locale_name_2; /* Set to 1 if the program is not behaving correctly. */ int result; @@ -84,7 +77,7 @@ thread1_execution (void *arg) char *s; waitfor (1); - uselocale (newlocale (LC_ALL_MASK, LOCALE_DE_ISO8859, NULL)); + uselocale (newlocale (LC_ALL_MASK, locale_name_1, NULL)); setto (2); /* Here we expect output in ISO-8859-1. */ @@ -118,7 +111,7 @@ thread2_execution (void *arg) char *s; waitfor (2); - uselocale (newlocale (LC_ALL_MASK, LOCALE_DE_UTF8, NULL)); + uselocale (newlocale (LC_ALL_MASK, locale_name_2, NULL)); setto (1); /* Here we expect output in UTF-8. */ @@ -146,40 +139,19 @@ thread2_execution (void *arg) return NULL; } -static void -check_locale_exists (const char *name) -{ - if (newlocale (LC_ALL_MASK, name, NULL) == NULL) - { - printf ("%s\n", name); - exit (1); - } -} - int main (int argc, char *argv[]) { - int arg; pthread_t thread1; pthread_t thread2; - arg = (argc > 1 ? atoi (argv[1]) : 0); - switch (arg) - { - case 1: - /* Check for the existence of the first locale. */ - check_locale_exists (LOCALE_DE_ISO8859); - /* Check for the existence of the second locale. */ - check_locale_exists (LOCALE_DE_UTF8); - return 0; - default: - break; - } + locale_name_1 = argv[1]; + locale_name_2 = argv[2]; unsetenv ("LANGUAGE"); unsetenv ("OUTPUT_CHARSET"); textdomain ("tstthread"); - bindtextdomain ("tstthread", "gt-7"); + bindtextdomain ("tstthread", "in-th-3"); result = 0; flipflop = 1; diff --git a/gettext-tools/tests/gettext-7.po b/gettext-tools/tests/intl-thread-3.po similarity index 100% rename from gettext-tools/tests/gettext-7.po rename to gettext-tools/tests/intl-thread-3.po