From f874089d310d9d3996a56b577245cb97d1430266 Mon Sep 17 00:00:00 2001 From: Christophe Lyon Date: Mon, 4 Feb 2019 08:55:00 +0000 Subject: [PATCH] contrib/dg-extract-results: Handle timeout warnings 2019-02-04 Christophe Lyon contrib/ * dg-extract-results.py: Keep timeout warnings next to their matching test. * dg-extract-results.sh: Likewise. From-SVN: r268511 --- contrib/ChangeLog | 7 +++++++ contrib/dg-extract-results.py | 17 +++++++++++++++-- contrib/dg-extract-results.sh | 32 +++++++++++++++++++++++++++----- 3 files changed, 49 insertions(+), 7 deletions(-) diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 35eb2669544..cd4eef3d507 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,10 @@ +2019-02-04 Christophe Lyon + + contrib/ + * dg-extract-results.py: Keep timeout warnings next to their + matching test. + * dg-extract-results.sh: Likewise. + 2019-01-01 Jakub Jelinek * update-copyright.py: Add Gerard Jungman as external author. diff --git a/contrib/dg-extract-results.py b/contrib/dg-extract-results.py index 4b02a5bea92..ed62f73226f 100644 --- a/contrib/dg-extract-results.py +++ b/contrib/dg-extract-results.py @@ -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)'): diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh index 6ee3d26de31..e9833c1159f 100755 --- a/contrib/dg-extract-results.sh +++ b/contrib/dg-extract-results.sh @@ -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 } -- 2.30.2