tests: Fix end-of-all-ticks test for Western locales.
authorWerner Koch <wk@gnupg.org>
Wed, 25 Jun 2014 12:33:34 +0000 (14:33 +0200)
committerWerner Koch <wk@gnupg.org>
Thu, 3 Jul 2014 09:04:23 +0000 (11:04 +0200)
* 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

index ec55687..f39e308 100644 (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;
           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);
           now = mktime (&tbuf);
+#endif
         }
       if (now == (time_t)(-1))
         fail (tidx);
         }
       if (now == (time_t)(-1))
         fail (tidx);
@@ -122,7 +126,11 @@ test_timegm (void)
         fail (tidx);
       tbuf = *tp;
       tbuf2 = tbuf;
         fail (tidx);
       tbuf = *tp;
       tbuf2 = tbuf;
+#ifdef HAVE_TIMEGM
       atime = timegm (&tbuf);
       atime = timegm (&tbuf);
+#else
+      atime = mktime (&tbuf);
+#endif
       if (atime == (time_t)(-1))
         fail (tidx);
       if (atime != now)
       if (atime == (time_t)(-1))
         fail (tidx);
       if (atime != now)
@@ -146,6 +154,14 @@ main (int argc, char **argv)
   (void)argc;
   (void)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;
   test_timegm ();
 
   return 0;