[gdb/testsuite] Fix test name in gdb.base/batch-exit-status.exp

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
...

The mistake is that I passed an output regexp argument to a parameter
interpreted as testname prefix.  Fix this by passing a testname prefix
instead.

Add support for checking output, to be able to handle the output regexp
argument.

Tested on x86_64-linux.
This commit is contained in:
Tom de Vries
2021-09-13 09:16:13 +02:00
parent 52e5dceb69
commit 003fa0df36

View File

@@ -20,7 +20,7 @@ standard_testfile
set good_commands "$srcdir/$subdir/batch-exit-status.good-commands"
set bad_commands "$srcdir/$subdir/batch-exit-status.bad-commands"
proc _test_exit_status {expect_status cmdline_opts} {
proc _test_exit_status {expect_status cmdline_opts {re ""}} {
global gdb_spawn_id
gdb_exit
@@ -29,7 +29,16 @@ proc _test_exit_status {expect_status cmdline_opts} {
return
}
set has_re [expr ![string equal $re ""]]
if { ! $has_re } {
set re "\$FOOBAR^"
}
set re_matched 0
gdb_test_multiple "" "run til exit" {
-re $re {
set re_matched 1
exp_continue
}
eof {
set result [wait -i $gdb_spawn_id]
verbose $result
@@ -41,15 +50,18 @@ proc _test_exit_status {expect_status cmdline_opts} {
clear_gdb_spawn_id
}
}
if { $has_re } {
gdb_assert { $re_matched } "output matched"
}
}
proc test_exit_status {expect_status cmdline_opts prefix} {
proc test_exit_status {expect_status cmdline_opts prefix args} {
if { $prefix == "" } {
set prefix $cmdline_opts
}
with_test_prefix $prefix {
_test_exit_status $expect_status $cmdline_opts
_test_exit_status $expect_status $cmdline_opts {*}$args
}
}
@@ -77,6 +89,8 @@ test_exit_status 1 "-batch -x $good_commands -x $bad_commands" \
test_exit_status 1 "-batch -x $good_commands -ex \"set not-a-thing 4\"" \
"-batch -x good-commands -ex \"set not-a-thing 4\""
set no_such_re ": No such file or directory\\."
test_exit_status 1 "-batch \"\"" $no_such_re
test_exit_status 1 "-batch \"\" \"\"" [multi_line $no_such_re $no_such_re]
set test "No such file or directory"
set no_such_re ": $test\\."
test_exit_status 1 "-batch \"\"" "1x: $test" ^[multi_line $no_such_re ""]$
test_exit_status 1 "-batch \"\" \"\"" "2x: $test" \
^[multi_line $no_such_re $no_such_re ""]$