This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

GNU C Library master sources branch master updated. glibc-2.28.9000-209-gf103447


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "GNU C Library master sources".

The branch, master has been updated
       via  f1034472e21d77b978464b73adbb0f9f1f032c91 (commit)
      from  367d7cc2cb293a2fe952e00168f574d92c69764c (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://sourceware.org/git/gitweb.cgi?p=glibc.git;a=commitdiff;h=f1034472e21d77b978464b73adbb0f9f1f032c91

commit f1034472e21d77b978464b73adbb0f9f1f032c91
Author: Florian Weimer <fweimer@redhat.com>
Date:   Tue Oct 23 11:25:05 2018 +0200

    time/tst-mktime2: Improve test error reporting

diff --git a/ChangeLog b/ChangeLog
index 0a5cb14..c0fbf75 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2018-10-23  Florian Weimer  <fweimer@redhat.com>
+
+	* time/tst-mktime2.c (N_STRINGS): Remove.
+	(set_timezone): New function.
+	(spring_forward_gap): Call it.  Use FAIL_EXIT1.
+	(mktime_test1): Report localtime failure and check errno value.
+	Use TEST_COMPARE.
+	(irix_6_4_bug, bigtime_test): Use TEST_COMPARE.
+	(do_test): Remove alarm call. Use set_timezone and array_length.
+
 2018-10-23  Andreas Schwab  <schwab@suse.de>
 
 	* sysdeps/unix/sysv/linux/riscv/setcontext.S (__setcontext)
diff --git a/time/tst-mktime2.c b/time/tst-mktime2.c
index c41db3e..09f8513 100644
--- a/time/tst-mktime2.c
+++ b/time/tst-mktime2.c
@@ -1,8 +1,12 @@
 /* Test program from Paul Eggert and Tony Leneis.  */
 
+#include <array_length.h>
+#include <errno.h>
 #include <limits.h>
-#include <time.h>
+#include <stdio.h>
 #include <stdlib.h>
+#include <support/check.h>
+#include <time.h>
 #include <unistd.h>
 
 /* True if the arithmetic type T is signed.  */
@@ -34,7 +38,14 @@ static const char *tz_strings[] =
     (const char *) 0, "GMT0", "JST-9",
     "EST+3EDT+2,M10.1.0/00:00:00,M2.3.0/00:00:00"
   };
-#define N_STRINGS ((int) (sizeof (tz_strings) / sizeof (tz_strings[0])))
+
+static void
+set_timezone (const char *tz)
+{
+  printf ("info: setting TZ=%s\n", tz);
+  if (setenv ("TZ", tz, 1) != 0)
+    FAIL_EXIT1 ("setenv: %m");
+}
 
 /* Fail if mktime fails to convert a date in the spring-forward gap.
    Based on a problem report from Andreas Jaeger.  */
@@ -48,7 +59,7 @@ spring_forward_gap (void)
      instead of "TZ=America/Vancouver" in order to detect the bug even
      on systems that don't support the Olson extension, or don't have the
      full zoneinfo tables installed.  */
-  setenv ("TZ", "PST8PDT,M4.1.0,M10.5.0", 1);
+  set_timezone ("PST8PDT,M4.1.0,M10.5.0");
 
   tm.tm_year = 98;
   tm.tm_mon = 3;
@@ -58,15 +69,22 @@ spring_forward_gap (void)
   tm.tm_sec = 0;
   tm.tm_isdst = -1;
   if (mktime (&tm) == (time_t)-1)
-    exit (1);
+    FAIL_EXIT1 ("mktime: %m");
 }
 
 static void
 mktime_test1 (time_t now)
 {
   struct tm *lt = localtime (&now);
-  if (lt && mktime (lt) != now)
-    exit (2);
+  if (lt == NULL)
+    {
+      /* For extreme input values, it is expected that localtime fails
+	 with EOVERFLOW.  */
+      printf ("info: localtime (%lld) failed: %m\n", (long long int) now);
+      TEST_COMPARE (errno, EOVERFLOW);
+      return;
+    }
+  TEST_COMPARE (mktime (lt), now);
 }
 
 static void
@@ -90,8 +108,8 @@ irix_6_4_bug (void)
   tm.tm_sec = 0;
   tm.tm_isdst = -1;
   mktime (&tm);
-  if (tm.tm_mon != 2 || tm.tm_mday != 31)
-    exit (3);
+  TEST_COMPARE (tm.tm_mon, 2);
+  TEST_COMPARE (tm.tm_mday, 31);
 }
 
 static void
@@ -105,18 +123,16 @@ bigtime_test (int j)
   if (now != (time_t) -1)
     {
       struct tm *lt = localtime (&now);
-      if (! (lt
-	     && lt->tm_year == tm.tm_year
-	     && lt->tm_mon == tm.tm_mon
-	     && lt->tm_mday == tm.tm_mday
-	     && lt->tm_hour == tm.tm_hour
-	     && lt->tm_min == tm.tm_min
-	     && lt->tm_sec == tm.tm_sec
-	     && lt->tm_yday == tm.tm_yday
-	     && lt->tm_wday == tm.tm_wday
-	     && ((lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst)
-		  == (tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst))))
-	exit (4);
+      TEST_COMPARE (lt->tm_year, tm.tm_year);
+      TEST_COMPARE (lt->tm_mon, tm.tm_mon);
+      TEST_COMPARE (lt->tm_mday, tm.tm_mday);
+      TEST_COMPARE (lt->tm_hour, tm.tm_hour);
+      TEST_COMPARE (lt->tm_min, tm.tm_min);
+      TEST_COMPARE (lt->tm_sec, tm.tm_sec);
+      TEST_COMPARE (lt->tm_yday, tm.tm_yday);
+      TEST_COMPARE (lt->tm_wday, tm.tm_wday);
+      TEST_COMPARE (lt->tm_isdst < 0 ? -1 : 0 < lt->tm_isdst,
+		    tm.tm_isdst < 0 ? -1 : 0 < tm.tm_isdst);
     }
 }
 
@@ -127,17 +143,13 @@ do_test (void)
   int i;
   unsigned int j;
 
-  setenv ("TZ", "America/Sao_Paulo", 1);
-  /* This test makes some buggy mktime implementations loop.
-     Give up after 60 seconds; a mktime slower than that
-     isn't worth using anyway.  */
-  alarm (60);
+  set_timezone ("America/Sao_Paulo");
 
   delta = TIME_T_MAX / 997; /* a suitable prime number */
-  for (i = 0; i < N_STRINGS; i++)
+  for (i = 0; i < array_length (tz_strings); i++)
     {
-      if (tz_strings[i])
-	setenv ("TZ", tz_strings[i], 1);
+      if (tz_strings[i] != NULL)
+	set_timezone (tz_strings[i]);
 
       for (t = 0; t <= TIME_T_MAX - delta; t += delta)
 	mktime_test (t);
@@ -154,5 +166,4 @@ do_test (void)
   return 0;
 }
 
-#define TEST_FUNCTION do_test ()
-#include "../test-skeleton.c"
+#include <support/test-driver.c>

-----------------------------------------------------------------------

Summary of changes:
 ChangeLog          |   10 +++++++
 time/tst-mktime2.c |   71 ++++++++++++++++++++++++++++++----------------------
 2 files changed, 51 insertions(+), 30 deletions(-)


hooks/post-receive
-- 
GNU C Library master sources


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]