From 3533860ee316918dd47501c53e910bfd0032b39d Mon Sep 17 00:00:00 2001 From: Werner Koch Date: Wed, 25 Jun 2014 14:33:34 +0200 Subject: [PATCH] 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 --- common/t-timestuff.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/common/t-timestuff.c b/common/t-timestuff.c index ec55687c6..f39e3089d 100644 --- a/common/t-timestuff.c +++ b/common/t-timestuff.c @@ -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;