diff options
-rw-r--r-- | contrib/ChangeLog | 5 | ||||
-rw-r--r-- | contrib/dg-extract-results.py | 23 | ||||
-rwxr-xr-x | contrib/dg-extract-results.sh | 44 |
3 files changed, 60 insertions, 12 deletions
diff --git a/contrib/ChangeLog b/contrib/ChangeLog index 8ce6765..489af77 100644 --- a/contrib/ChangeLog +++ b/contrib/ChangeLog @@ -1,3 +1,8 @@ +2019-10-21 Andrew Burgess <andrew.burgess@embecosm.com> + + * dg-extract-results.py: Update from gcc repo. + * dg-extract-results.sh: Likewise. + 2018-08-06 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> * dg-extract-results.sh: Move from gdb/testsuite. diff --git a/contrib/dg-extract-results.py b/contrib/dg-extract-results.py index 4b02a5b..7100794 100644 --- a/contrib/dg-extract-results.py +++ b/contrib/dg-extract-results.py @@ -117,7 +117,7 @@ class Prog: self.tool_re = re.compile (r'^\t\t=== (.*) tests ===$') self.result_re = re.compile (r'^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED' r'|WARNING|ERROR|UNSUPPORTED|UNTESTED' - r'|KFAIL):\s*(.+)') + r'|KFAIL|KPASS):\s*(.+)') self.completed_re = re.compile (r'.* completed at (.*)') # Pieces of text to write at the head of the output. # start_line is a pair in which the first element is a datetime @@ -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,10 +293,22 @@ 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 not first_key and sort_logs: - first_key = key + # 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 testnames. + 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)'): for i in range (len (self.count_names)): if 'DejaGnu errors' in self.count_names[i]: diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh index 6ee3d26..f948088 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 @@ -324,23 +326,51 @@ BEGIN { } } /^\t\t=== .* ===$/ { curvar = ""; next } -/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL):/ { +/^(PASS|XPASS|FAIL|XFAIL|UNRESOLVED|WARNING|ERROR|UNSUPPORTED|UNTESTED|KFAIL|KPASS):/ { testname=\$2 # Ugly hack for gfortran.dg/dg.exp if ("$TOOL" == "gfortran" && testname ~ /^gfortran.dg\/g77\//) testname="h"testname + if ("$MODE" == "sum") { + if (\$0 ~ /^WARNING: program timed out/) { + has_timeout=1 + timeout_cnt=cnt+1 + } 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-1, timeout_msg >> curfile + timeout_cnt = 0 + cnt = cnt + 1 + } + printf "%s %08d|", testname, cnt >> curfile + cnt = cnt + 1 + filewritten[curfile]=1 + need_close=1 + print >> curfile + } + has_timeout=0 + } else { + filewritten[curfile]=1 + need_close=1 + print >> curfile } - filewritten[curfile]=1 - need_close=1 - print >> curfile - } else + } else { + has_timeout=0 + timeout_cnt=0 next + } } END { n=1 |