1
0
mirror of https://git.savannah.gnu.org/git/gnulib.git synced 2025-08-08 17:22:05 +03:00

regex-tests: skip UTF-8 test on mingw

test-regex failed on mingw; and I traced it in gdb to an instance
of init_dfa() setting dfa->is_utf8 to 0 in spite of setlocale()
claiming success for "en_US.UTF-8".  test-wcwidth already has
precedent for skipping utf-8 tests where the system (or gnulib
setlocale replacement, in this case) lies about utf-8 support.

* modules/regex-tests (Depends-on): Add localcharset.
* tests/test-regex.c (main): Use it to skip test on mingw.

Signed-off-by: Eric Blake <eblake@redhat.com>
This commit is contained in:
Eric Blake
2013-03-12 15:15:01 -06:00
parent a8d9f46352
commit d69a420938
3 changed files with 33 additions and 19 deletions

View File

@@ -1,3 +1,9 @@
2013-03-12 Eric Blake <eblake@redhat.com>
regex-tests: skip UTF-8 test on mingw
* modules/regex-tests (Depends-on): Add localcharset.
* tests/test-regex.c (main): Use it to skip test on mingw.
2013-03-11 Eric Blake <eblake@redhat.com> 2013-03-11 Eric Blake <eblake@redhat.com>
tests: make it easier to bypass alarm time in debugger tests: make it easier to bypass alarm time in debugger

View File

@@ -3,6 +3,7 @@ tests/test-regex.c
tests/macros.h tests/macros.h
Depends-on: Depends-on:
localcharset
configure.ac: configure.ac:

View File

@@ -26,6 +26,8 @@
# include <signal.h> # include <signal.h>
#endif #endif
#include "localcharset.h"
int int
main (void) main (void)
{ {
@@ -65,25 +67,30 @@ main (void)
result |= 1; result |= 1;
} }
{ /* Check whether it's really a UTF-8 locale.
/* This test is from glibc bug 15078. On mingw, the setlocale call succeeds but returns
The test case is from Andreas Schwab in "English_United States.1252", with locale_charset() returning
<http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html>. "CP1252". */
*/ if (strcmp (locale_charset (), "UTF-8") == 0)
static char const pat[] = "[^x]x"; {
static char const data[] = /* This test is from glibc bug 15078.
"\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80" The test case is from Andreas Schwab in
"\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax"; <http://www.sourceware.org/ml/libc-alpha/2013-01/msg00967.html>.
re_set_syntax (0); */
memset (&regex, 0, sizeof regex); static char const pat[] = "[^x]x";
s = re_compile_pattern (pat, sizeof pat - 1, &regex); static char const data[] =
if (s) "\xe1\x80\x80\xe1\x80\xbb\xe1\x80\xbd\xe1\x80\x94\xe1\x80"
result |= 1; "\xba\xe1\x80\xaf\xe1\x80\x95\xe1\x80\xbax";
else if (re_search (&regex, data, sizeof data - 1, re_set_syntax (0);
0, sizeof data - 1, 0) memset (&regex, 0, sizeof regex);
!= 21) s = re_compile_pattern (pat, sizeof pat - 1, &regex);
result |= 1; if (s)
} result |= 1;
else if (re_search (&regex, data, sizeof data - 1,
0, sizeof data - 1, 0)
!= 21)
result |= 1;
}
if (! setlocale (LC_ALL, "C")) if (! setlocale (LC_ALL, "C"))
return 1; return 1;