Re: [PATCH][gdb/testsuite] Check for valid test name

Andrew Burgess
2021-09-13T14:26:41Z

* Tom de Vries via Gdb-patches <gdb-patches@sourceware.org> [2021-09-13 09:19:11 +0200]:

> Hi,
>
> When running gdb.base/batch-exit-status.exp I noticed that the test name
> contains a newline:
> ...
> PASS: gdb.base/batch-exit-status.exp: : No such file or directory\.^M
> : No such file or directory\.: [lindex $result 2] == 0
> ...
>
> Check for this in ::CheckTestNames::check, such that we have a warning:
> ...
> PASS: gdb.base/batch-exit-status.exp: : No such file or directory\.^M
> : No such file or directory\.: [lindex $result 2] == 0
> WARNING: Newline in test name
> ...
>
> Tested on x86_64-linux.
>
> Any comments?
>
> Thanks,
> - Tom
>
> [gdb/testsuite] Check for valid test name
>
> ---
> gdb/testsuite/lib/check-test-names.exp | 9 +++++++++
> 1 file changed, 9 insertions(+)
>
> diff --git a/gdb/testsuite/lib/check-test-names.exp b/gdb/testsuite/lib/check-test-names.exp
> index 1de7624d5c5..db76abab990 100644
> --- a/gdb/testsuite/lib/check-test-names.exp
> +++ b/gdb/testsuite/lib/check-test-names.exp
> @@ -93,6 +93,13 @@ namespace eval ::CheckTestNames {
> return $message
> }
>
> + # Check if MESSAGE is a well-formed test name.
> + proc _check_name { message } {

I think `_check_newline` would be a better name.

> + if { [regexp \n $message]} {
> + warning "Newline in test name"
> + }

If I run the entire testsuite I guess these warnings will likely get
lost in the output, unlike the DUPLICATE/PATH warnings, which are
listed along with the other PASS/FAIL/etc results.

Did you check to see if this warning occurs any other times in the
testsuite right now? I guess if we're clean right now then having
this as a warning is fine, as we should spot this when adding new
tests.

I'm happy with this though (with the name change above).

Thanks,
Andrew

> + }
> +
> # Check if MESSAGE contains either the source path or the build path.
> # This will result in test names that can't easily be compared between
> # different runs of GDB.
> @@ -110,6 +117,8 @@ namespace eval ::CheckTestNames {
> if [ _check_duplicates $message ] {
> clone_output "DUPLICATE: $message"
> }
> +
> + _check_name $message
> }
>
> # If COUNT is greater than zero, disply PREFIX followed by COUNT.