]> git.ipfire.org Git - thirdparty/gcc.git/commit
testsuite: Add support for dg-output-file directive
authorJakub Jelinek <jakub@redhat.com>
Tue, 18 Mar 2025 15:50:05 +0000 (16:50 +0100)
committerJakub Jelinek <jakub@gcc.gnu.org>
Tue, 18 Mar 2025 15:50:05 +0000 (16:50 +0100)
commit563e6d926d9826d76895086d0c40a29dc90d66e5
tree7bc28eabd74b95c4818987c70186905e9aed552e
parent51b1c0a2dde8ada0856c8a8cf2c1d26ac1657787
testsuite: Add support for dg-output-file directive

The COBOL tests has many tests which just dump emit lots of output
to stdout and want to compare it against expected output.
We have the dg-output directive, but if one needs more than dozens
of lines in the output, adding hundreds of dg-output directives to
each source uses too much memory and is harder to maintain.

The following patch offers an alternative, dg-output-file
directive where one can supply a text file with expected output
(no regexp matching in that case, just exact output, except that it
handles different line ending styles (for the expected file
using tcl gets, for the actual output skips over \n, \r\n or \r).
And a newline at the end of the whole output is optional (in the actual
output, because I think some boards get it eaten).

Also tested with addition or subtraction of some characters from the
expected output files and saw FAILs with appropriate messages.

2025-03-18  Jakub Jelinek  <jakub@redhat.com>

* doc/sourcebuild.texi (dg-output-file): Document.

* lib/gcc-dg.exp (${tool}-load): If output-file is set, compare
combined output against content of the [lindex ${output-file} 1]
file.
(dg-output-file): New directive.
* lib/dg-test-cleanup.exp (cleanup-after-saved-dg-test): Clear
output-file variable.
* gcc.dg/dg-output-file-1.c: New test.
* gcc.dg/dg-output-file-1-lp64.txt: New test.
* gcc.dg/dg-output-file-1-ilp32.txt: New test.
gcc/doc/sourcebuild.texi
gcc/testsuite/gcc.dg/dg-output-file-1-ilp32.txt [new file with mode: 0644]
gcc/testsuite/gcc.dg/dg-output-file-1-lp64.txt [new file with mode: 0644]
gcc/testsuite/gcc.dg/dg-output-file-1.c [new file with mode: 0644]
gcc/testsuite/lib/dg-test-cleanup.exp
gcc/testsuite/lib/gcc-dg.exp