contrib/dg-extract-results: Handle timeout warnings
authorChristophe Lyon <christophe.lyon@linaro.org>
Mon, 4 Feb 2019 08:55:00 +0000 (08:55 +0000)
committerChristophe Lyon <clyon@gcc.gnu.org>
Mon, 4 Feb 2019 08:55:00 +0000 (09:55 +0100)
2019-02-04  Christophe Lyon  <christophe.lyon@linaro.org>

contrib/
* dg-extract-results.py: Keep timeout warnings next to their
matching test.
* dg-extract-results.sh: Likewise.

From-SVN: r268511

contrib/ChangeLog
contrib/dg-extract-results.py
contrib/dg-extract-results.sh

index 35eb266..cd4eef3 100644 (file)
@@ -1,3 +1,10 @@
+2019-02-04  Christophe Lyon  <christophe.lyon@linaro.org>
+
+       contrib/
+       * dg-extract-results.py: Keep timeout warnings next to their
+       matching test.
+       * dg-extract-results.sh: Likewise.
+
 2019-01-01  Jakub Jelinek  <jakub@redhat.com>
 
        * update-copyright.py: Add Gerard Jungman as external author.
index 4b02a5b..ed62f73 100644 (file)
@@ -239,6 +239,7 @@ class Prog:
         harness = None
         segment = None
         final_using = 0
+        has_warning = 0
 
         # If this is the first run for this variation, add any text before
         # the first harness to the header.
@@ -292,8 +293,20 @@ class Prog:
                 # Ugly hack to get the right order for gfortran.
                 if name.startswith ('gfortran.dg/g77/'):
                     name = 'h' + name
-                key = (name, len (harness.results))
-                harness.results.append ((key, line))
+                # If we have a time out warning, make sure it appears
+                # before the following testcase diagnostic: we insert
+                # the testname before 'program' so that sort faces a
+                # list of testhanes.
+                if line.startswith ('WARNING: program timed out'):
+                  has_warning = 1
+                else:
+                  if has_warning == 1:
+                      key = (name, len (harness.results))
+                      myline = 'WARNING: %s program timed out.\n' % name
+                      harness.results.append ((key, myline))
+                      has_warning = 0
+                  key = (name, len (harness.results))
+                  harness.results.append ((key, line))
                 if not first_key and sort_logs:
                     first_key = key
                 if line.startswith ('ERROR: (DejaGnu)'):
index 6ee3d26..e9833c1 100755 (executable)
@@ -298,6 +298,8 @@ BEGIN {
   cnt=0
   print_using=0
   need_close=0
+  has_timeout=0
+  timeout_cnt=0
 }
 /^EXPFILE: / {
   expfiles[expfileno] = \$2
@@ -329,16 +331,36 @@ BEGIN {
   # Ugly hack for gfortran.dg/dg.exp
   if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//)
     testname="h"testname
+  if (\$1 == "WARNING:" && \$2 == "program" && \$3 == "timed" && (\$4 == "out" || \$4 == "out.")) {
+        has_timeout=1
+        timeout_cnt=cnt
+  } else {
+  # Prepare timeout replacement message in case it's needed
+    timeout_msg=\$0
+    sub(\$1, "WARNING:", timeout_msg)
+  }
 }
 /^$/ { if ("$MODE" == "sum") next }
 { if (variant == curvar && curfile) {
     if ("$MODE" == "sum") {
-      printf "%s %08d|", testname, cnt >> curfile
-      cnt = cnt + 1
+      # Do not print anything if the current line is a timeout
+      if (has_timeout == 0) {
+        # If the previous line was a timeout,
+        # insert the full current message without keyword
+        if (timeout_cnt != 0) {
+          printf "%s %08d|%s program timed out.\n", testname, timeout_cnt, timeout_msg >> curfile
+          timeout_cnt = 0
+        }
+        printf "%s %08d|", testname, cnt >> curfile
+        cnt = cnt + 1
+        filewritten[curfile]=1
+        need_close=1
+        if (timeout_cnt == 0)
+          print >> curfile
+      }
+
+      has_timeout=0
     }
-    filewritten[curfile]=1
-    need_close=1
-    print >> curfile
   } else
     next
 }