Add -nopass option to gdb_test/gdb_test_multiple
authorPedro Alves <pedro@palves.net>
Wed, 18 May 2022 12:22:02 +0000 (13:22 +0100)
committerPedro Alves <pedro@palves.net>
Wed, 25 May 2022 12:44:11 +0000 (13:44 +0100)
commitaee9dcf8a836fe08e3d7f1b58a8b6dd2e16d9b68
tree3a1944ebcc8c8af8384f8c295d3e3840a9b20b11
parent51498ab9abc6122817428198e831d36923e293a4
Add -nopass option to gdb_test/gdb_test_multiple

The previous patch to add -prompt/-lbl to gdb_test introduced a
regression: Before, you could specify an explicit empty message to
indicate you didn't want to PASS, like so:

  gdb_test COMMAND PATTERN ""

After said patch, gdb_test no longer distinguishes
no-message-specified vs empty-message, so tests that previously would
be silent on PASS, now started emitting PASS messages based on
COMMAND.  This in turn introduced a number of PATH/DUPLICATE
violations in the testsuite.

I think that not issuing a PASS should be restricted to only a few
cases -- namely in shared routines exported by gdb.exp, which happen
to use gdb_test internally.  In tests that iterate an unknown number
of tests exercising some racy scenario.  In the latter case, if we
emit PASSes for each iteration, we run into the situation where
different testsuite runs emit a different number of PASSes.

Thus, this patch preserves the current behavior, and, instead, adds a
new "-nopass" option to gdb_test and gdb_test_no_output.  Compared to
the old way of supressing PASS with an empty message, this has the
advantage that you can specify a FAIL message that is distinct from
the command string, and, it's also more explicit.

Change-Id: I5375f23f073493e0672190a0ec2e847938a580b2
gdb/testsuite/lib/gdb.exp