tests: Fix end-of-all-ticks test for Western locales.

* common/t-timestuff.c (test_timegm): Use timegm if available.
(main): Set TX to UTC if timegm is not available.
--

On OpenBSD 5.3 i386 that test failed due to the use of mktime.

Reported-by: Claus Assmann
This commit is contained in:
Werner Koch 2014-06-25 14:33:34 +02:00
parent b51af333bd
commit 3533860ee3
1 changed files with 16 additions and 0 deletions

View File

@ -112,7 +112,11 @@ test_timegm (void)
tbuf.tm_hour = tvalues[tidx].hour;
tbuf.tm_min = tvalues[tidx].min;
tbuf.tm_sec = tvalues[tidx].sec;
#ifdef HAVE_TIMEGM
now = timegm (&tbuf);
#else
now = mktime (&tbuf);
#endif
}
if (now == (time_t)(-1))
fail (tidx);
@ -122,7 +126,11 @@ test_timegm (void)
fail (tidx);
tbuf = *tp;
tbuf2 = tbuf;
#ifdef HAVE_TIMEGM
atime = timegm (&tbuf);
#else
atime = mktime (&tbuf);
#endif
if (atime == (time_t)(-1))
fail (tidx);
if (atime != now)
@ -146,6 +154,14 @@ main (int argc, char **argv)
(void)argc;
(void)argv;
/* If we do not have timegm, we use mktime. However, we need to use
UTC in this case so that the 20380118T235959 test does not fail
for other timezones. */
#ifndef HAVE_TIMEGM
setenv ("TZ", "UTC", 1);
tzset ();
#endif
test_timegm ();
return 0;