I've committed some code for parsing DejaGNU log/sum files and doing
three-way comparisons to contrib.
dglib.pm is a perl module which implements a "parseLogFile"
function. parseLogFile will take a DejaGNU log or sum file and
return a detailed parse of the file. Tests will be broken into
groups, and multi-phase (compile/link/execute) test results will be
combined for instance:
FAIL: gcc.dg/c-torture/link/20000105-1.c -O0 (test for excess errors)
will become something like:
gcc.dg
c-torture
compile/link/execute
20000105-1.c
-O0 (test for excess errors)
where 20000105-1.c is a test group, which is inside the "compile/link/
execute" test group, which is inside the "c-torture" test group,
which is inside the "gcc.dg" test group. "-O0 (test for excess
errors)" is the test name. It will have the result "FAIL", and it
will have a 'result detail' of "link phase".
It will also associate non-result lines in the log file with their
respective results.
compareSumTests3 is a script written on top of this which can do a
three-way comparison between DejaGNU .sum (or .log) files. It's
designed for doing a merge of branch A into branch B, where you have
two "old" compilers (the pre-merge compiler on branch A, 'old1', and
the pre-merge compiler on branch B, 'old2') and one "new" compiler
(the post-merge compiler.) It will tell you things like "these tests
were working in both old compilers but are broken after the merge",
or "these tests only worked in old1."
I hope people find them useful. Feel free to contact me with
questions, comments, &c.
--
Matthew Sachs <[EMAIL PROTECTED]> [AIM: MattSachs]
Compiler Quality Engineer, Apple Computer