On Sat, Mar 15, 2025 at 11:02:59AM -0500, Robert Dubner wrote: > I am struggling with the learning curves, here. I am trying to understand > dejagnu, and I am trying to understand tcl, and I am trying to understand > the testsuite chain of commands and files that result, somehow, in the > programs in testsuite/cobol.dg being executed. Dealing with three new > technologies is slowing me down considerably. I am looking for some help > to leapfrog that. > > We have about 800 programs that definitively have no IP issues preventing > their use in the GCC repository. > > But the vast bulk of them are based on capturing stdout and comparing that > to a known-good file. > > I am completely prepared to create a test-0001.cob source code file for > the repo. I can prepare a matching test-0001.expected-output file for the > repo.
The normal dejagnu way is to use dg-output for that. So, if you have test-0001.cob and test-0001.expected-output, you could do for i in *.cob; do \ sed 's/\([].*()[]\)/\\\1/g;s/^/*> { dg-output {/;s/$/(\\n|\\r\\n|\\r)} }/;$s/.\{12\}} }$/} }/' \ < $i.expected-output >> $i.cob; done to turn the expected output into dg-output directives. Maybe I've missed some characters that also need to be backslash prefixed, in that case they'd go next to the .*() part early in the regexp. Of course, if the output is huge, perhaps we should write some dg- directive for specifying file with expected output and compare against that rather than the dg-output directives. But if it is just a couple dozens of lines, I think dg-output could be fine. > I see the stdout from each executed program is captured in the cobol.log > file. But it doesn't do me much good, there. > > Is there some way that the output of { dg-do run } can be directed to > designated test-0001.stdout and test-0001.stderr files? If so, I can > fairly easily add boilerplate to the end of the COBOL test program to do > the comparison. > > Otherwise I am going to have start rewriting those hundreds of programs to > somehow test themselves and produce the go/no-go response. Jakub