[PATCHv2 3/3] contrib: Handle GDB specific test result types

Andrew Burgess
2020-04-27T22:01:55Z

NOTE: I know that this patch needs to go through the GCC list and then
be back-ported to the binutils-gdb repository. I'm posting it here
for completeness while the other patches in this series are
discussed. If the general idea is approved for GDB then I'll get this
merged through the GCC route.

When running Dejagnu on GDB we can now (sometimes) see two additional
test result types, these are '# of paths in test names' and '# of
duplicate test names'.

If the test is run in parallel mode (make -j...) then these extra test
results will appear in the individual test summary files, but are not
merged into the final summary file.

This commit adds support to the merge scripts to carry over these
extra result types.

contrib/ChangeLog:

* dg-extract-results.py: Handle GDB specific test types.
* dg-extract-results.sh: Likewise.
---
contrib/ChangeLog | 5 +++++
contrib/dg-extract-results.py | 4 +++-
contrib/dg-extract-results.sh | 10 ++++++++++
3 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/contrib/dg-extract-results.py b/contrib/dg-extract-results.py
index 7100794d42a..b86a4af6b60 100644
--- a/contrib/dg-extract-results.py
+++ b/contrib/dg-extract-results.py
@@ -143,7 +143,9 @@ class Prog:
'# of known failures\t\t',
'# of untested testcases\t\t',
'# of unresolved testcases\t',
- '# of unsupported tests\t\t'
+ '# of unsupported tests\t\t',
+ '# of paths in test names\t',
+ '# of duplicate test names\t'
]
self.runs = dict()

diff --git a/contrib/dg-extract-results.sh b/contrib/dg-extract-results.sh
index f948088370e..021a4f407ac 100755
--- a/contrib/dg-extract-results.sh
+++ b/contrib/dg-extract-results.sh
@@ -400,6 +400,7 @@ BEGIN {
variant="$VAR"
tool="$TOOL"
passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kpasscnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0;
+ pathcnt=0; dupcnt=0
curvar=""; insummary=0
}
/^Running target / { curvar = \$3; next }
@@ -414,6 +415,8 @@ BEGIN {
/^# of untested testcases/ { if (insummary == 1) untstcnt += \$5; next; }
/^# of unresolved testcases/ { if (insummary == 1) unrescnt += \$5; next; }
/^# of unsupported tests/ { if (insummary == 1) unsupcnt += \$5; next; }
+/^# of paths in test names/ { if (insummary == 1) pathcnt += \$7; next; }
+/^# of duplicate test names/ { if (insummary == 1) dupcnt += \$6; next; }
/^$/ { if (insummary == 1)
{ insummary = 0; curvar = "" }
next
@@ -431,6 +434,8 @@ END {
if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+ if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+ if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
}
EOF

@@ -452,6 +457,7 @@ cat << EOF > $TOTAL_AWK
BEGIN {
tool="$TOOL"
passcnt=0; failcnt=0; untstcnt=0; xpasscnt=0; xfailcnt=0; kfailcnt=0; unsupcnt=0; unrescnt=0; dgerrorcnt=0
+ pathcnt=0; dupcnt=0
}
/^# of DejaGnu errors/ { dgerrorcnt += \$5 }
/^# of expected passes/ { passcnt += \$5 }
@@ -463,6 +469,8 @@ BEGIN {
/^# of untested testcases/ { untstcnt += \$5 }
/^# of unresolved testcases/ { unrescnt += \$5 }
/^# of unsupported tests/ { unsupcnt += \$5 }
+/^# of paths in test names/ { pathcnt += \$7 }
+/^# of duplicate test names/ { dupcnt += \$6 }
END {
printf ("\n\t\t=== %s Summary ===\n\n", tool)
if (dgerrorcnt != 0) printf ("# of DejaGnu errors\t\t%d\n", dgerrorcnt)
@@ -475,6 +483,8 @@ END {
if (untstcnt != 0) printf ("# of untested testcases\t\t%d\n", untstcnt)
if (unrescnt != 0) printf ("# of unresolved testcases\t%d\n", unrescnt)
if (unsupcnt != 0) printf ("# of unsupported tests\t\t%d\n", unsupcnt)
+ if (pathcnt != 0) printf ("# of paths in test names\t%d\n", pathcnt)
+ if (dupcnt != 0) printf ("# of duplicate test names\t%d\n", dupcnt)
}
EOF

--
2.25.3