PR libstdc++/31413 fix test failure on Debian systems
Debian uses a different D_FMT string for the zh_TW.UTF-8 locale, which caused this test to fail. Try to detect the Debian format and adjust the input being tested. PR libstdc++/31413 * testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT string for alternative format. From-SVN: r263948
This commit is contained in:
parent
fb9cb5369d
commit
9111b08384
|
@ -1,3 +1,9 @@
|
||||||
|
2018-08-29 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
|
PR libstdc++/31413
|
||||||
|
* testsuite/22_locale/time_get/get_date/wchar_t/4.cc: Check D_FMT
|
||||||
|
string for alternative format.
|
||||||
|
|
||||||
2018-08-28 Jonathan Wakely <jwakely@redhat.com>
|
2018-08-28 Jonathan Wakely <jwakely@redhat.com>
|
||||||
|
|
||||||
PR libstdc++/87116
|
PR libstdc++/87116
|
||||||
|
|
|
@ -25,6 +25,8 @@
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
#include <testsuite_hooks.h>
|
#include <testsuite_hooks.h>
|
||||||
|
|
||||||
|
static bool debian_date_format();
|
||||||
|
|
||||||
void test01()
|
void test01()
|
||||||
{
|
{
|
||||||
using namespace std;
|
using namespace std;
|
||||||
|
@ -46,7 +48,7 @@ void test01()
|
||||||
0x5e74, L'1', L'2', 0x6708, L'1', L'7',
|
0x5e74, L'1', L'2', 0x6708, L'1', L'7',
|
||||||
0x65e5 , 0x0 };
|
0x65e5 , 0x0 };
|
||||||
|
|
||||||
iss.str(wstr);
|
iss.str(debian_date_format() ? wstr+2 : wstr);
|
||||||
iterator_type is_it01(iss);
|
iterator_type is_it01(iss);
|
||||||
tm time01;
|
tm time01;
|
||||||
tim_get.get_date(is_it01, end, iss, errorstate, &time01);
|
tim_get.get_date(is_it01, end, iss, errorstate, &time01);
|
||||||
|
@ -56,6 +58,26 @@ void test01()
|
||||||
VERIFY( time01.tm_year == 103 );
|
VERIFY( time01.tm_year == 103 );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include <locale.h>
|
||||||
|
#if __has_include(<langinfo.h>)
|
||||||
|
# include <langinfo.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
static bool debian_date_format()
|
||||||
|
{
|
||||||
|
#ifdef D_FMT
|
||||||
|
if (setlocale(LC_TIME, "zh_TW.UTF-8") != NULL)
|
||||||
|
{
|
||||||
|
// See https://gcc.gnu.org/bugzilla/show_bug.cgi?id=31413
|
||||||
|
// and https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71641#c2
|
||||||
|
if (*nl_langinfo(D_FMT) == '%')
|
||||||
|
return true;
|
||||||
|
setlocale(LC_TIME, "C");
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
test01();
|
test01();
|
||||||
|
|
Loading…
Reference in New Issue