On 8/29/25 04:40, Richard Earnshaw wrote:
On 29/08/2025 10:36, Iain Sandoe wrote:
On 29 Aug 2025, at 10:32, Richard Earnshaw <richard.earns...@arm.com> wrote:
On 29/08/2025 04:08, Jacob Bachmeyer wrote:
[...]
The problem with detecting duplicate names in the DejaGnu framework is that it would add memory overhead that scales with the number of tests and DejaGnu tries to avoid that kind of unbounded space requirement. (OK, it *is* bounded for any finite testsuite, but the idea of a steadily growing memory footprint during a test run still bothers me.) I suggest that the comparison script GCC uses is probably the best place to check for duplicate test names, since that seems to also be the script that can be confused by them.

That's exactly what I was suggesting.  Trying to do it in dejagnu would be a nightmare given that we run multiple instances of it to get parallel testing.

For the record, I’ve now proposed a BoF for the cauldron on ‘improving the raw output’ from the testsuite, since that seems at least one place we can make progress - by making the input to the post-processing tools more machine-friendly.  Hopefully the concerns and ideas from this thread can contribute there.

I don't know how much maintenance DejaGNU is getting these days, but certainly something like a --json option to runtest that caused the .sum files to be written as structured data would make some post-processing significantly easier

There is an option for XML logs that is currently a bit "half-baked" and, as far as I can tell, what it currently tries to do is not actually possible with Expect.  (There seems to be no good way to reliably distinguish text to and from child processes in the log.  The fatal flaw is that text "to" a child is typically echoed by the pty driver and therefore is actually logged as "from" the child.)

The "least ridiculous" option may be to divide the log into per-test segments with result tags as segment delimiters---XML syntactic sugar atop the plain text log.  Removing XML log support entirely and only using XML for a structured summary might be a better option.  Annotating text sent by DejaGnu before it appears as echoed by the pty driver is another option that could be a legitimate use of XML.

There are plans to radically overhaul XML support for the DejaGnu 1.7 release.  There is some preliminary code on the "psql" branch but I am unsure if that code will ultimately be merged or prove to be a dead end.  The revised XML support might simply provide an XML summary file alongside the plain log and summary files.

The DejaGnu 1.6.3 release introduced the first elements of support for test groups.  In 1.6.3, all that the {testcase group ...} commands do is validate group nesting and report the current group if [testcase group] is used.  The framework will eventually implicitly group tests; explicit groups will nest among the implicit groups.  In 1.7, the new XML output will record groups as XML container tags in the XML log and/or summary.

All that said, once the infrastructure for the revised XML support is complete, reusing it to also produce .sum.json files would be relatively simple, really only a matter of output syntax.  (Note that that would mean the resulting JSON structure would mirror the XML tree structure.)


DejaGnu maintenance in general is:  bugs get fixed quickly in Git master, feature advances occur as I collect the right "round tuits", and there is a roadmap for features to land in at least the next few releases but no timeline planned for when those releases will be made.

For example, the currently planned major highlight for 1.6.4 will be a rewritten table-driven default_target_compile because that procedure is teetering on the edge of "BigBallOfMud" unmaintainability.

There are also plans for (eventual) native parallel testing support, but these are far off at the moment and will require major refactoring of how DejaGnu runs tests.  Expect limitations mean while that parallel testing support is possible, implementing it reliably will not be easy.  (A first experimental attempt has already foundered on limitations of Expect.)

The refactoring required for parallel testing will not affect well-behaved testsuites, and any testsuites it does affect will be unavoidably broken if run in parallel anyway.  Using slave interpreters to isolate test cases has been in the TODO file for a very long time.  (I guess probably since Tcl introduced the feature...)

For now, the best option for parallel testing is to run parallel instances of DejaGnu on different subsets of the testsuite.


I should probably also give advance notice that if you are interested in this, you should be subscribed to the DejaGnu mailing list (<deja...@gnu.org>).  It is generally low traffic, and there are some currently undocumented dubious behaviors that will be changed in the future.  Such changes will be announced on that list to check if anyone is actually depending on the current behavior.

For example, the (undocumented) procedure findfile can return a directory, despite its name.  (Yes, directories *are* technically files in POSIX...)  This is likely to change in the future.


-- Jacob

Reply via email to