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