diff options
Diffstat (limited to 'gdb/testsuite/gdb.testsuite')
-rw-r--r-- | gdb/testsuite/gdb.testsuite/board-sanity.exp | 6 | ||||
-rw-r--r-- | gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp | 9 | ||||
-rw-r--r-- | gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp | 21 | ||||
-rw-r--r-- | gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp | 84 | ||||
-rwxr-xr-x[-rw-r--r--] | gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.gdb (renamed from gdb/testsuite/gdb.testsuite/lmap.exp) | 19 | ||||
-rw-r--r-- | gdb/testsuite/gdb.testsuite/mount-point-map.exp | 49 | ||||
-rw-r--r-- | gdb/testsuite/gdb.testsuite/with-override.exp | 8 |
7 files changed, 174 insertions, 22 deletions
diff --git a/gdb/testsuite/gdb.testsuite/board-sanity.exp b/gdb/testsuite/gdb.testsuite/board-sanity.exp index 9c80282..7b9a19e 100644 --- a/gdb/testsuite/gdb.testsuite/board-sanity.exp +++ b/gdb/testsuite/gdb.testsuite/board-sanity.exp @@ -44,7 +44,7 @@ proc test_remote { remote host_is_target } { if { $host_is_target } { set res [remote_file $other_remote exists $file] gdb_assert { $res != $exists_ok } \ - "$other_remote copy does not exist" + "$other_remote copy does not exist" } } @@ -80,7 +80,7 @@ proc test_remote { remote host_is_target } { set build_file [remote_upload $remote $file] gdb_assert { [string equal [file tail $build_file] $file] == 1 } \ "remote_upload returns valid value" - + set res [remote_file $remote delete $file] gdb_assert { [string equal $res $delete_ok] == 1 } \ "remove $remote copy" @@ -92,7 +92,7 @@ proc test_remote { remote host_is_target } { if { $host_is_target } { set res [remote_file $other_remote exists $file] gdb_assert { $res != $exists_ok } \ - "$other_remote copy does not exist" + "$other_remote copy does not exist" } set res [remote_file build exists $file] diff --git a/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp b/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp index 0957dbd..27f905e 100644 --- a/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp +++ b/gdb/testsuite/gdb.testsuite/gdb-caching-proc-consistency.exp @@ -63,8 +63,8 @@ proc test_file { file } { set fp [open $file] while { [gets $fp line] >= 0 } { - if [regexp -- "^gdb_caching_proc \[ \t\]*(\[^ \t\]*)" $line \ - match procname] { + if { [regexp -- "^gdb_caching_proc \[ \t\]*(\[^ \t\]*)" $line \ + match procname] } { lappend procnames $procname } } @@ -95,7 +95,8 @@ proc test_file { file } { } if { $setup_gdb } { - clean_restart $obj + clean_restart + gdb_load $obj } test_proc $procname @@ -113,7 +114,7 @@ if { ![gdb_simple_compile $me $src executable] } { } # Test gdb_caching_procs in gdb/testsuite/lib/*.exp -set files [eval glob -types f $srcdir/lib/*.exp] +set files [glob -types f $srcdir/lib/*.exp] set files [lsort $files] foreach file $files { test_file $file diff --git a/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp b/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp index f9610af..6b46b1c 100644 --- a/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp +++ b/gdb/testsuite/gdb.testsuite/gdb-caching-proc.exp @@ -22,23 +22,32 @@ gdb_caching_proc gdb_testsuite_gdb_caching_proc_exp_arg { arg } { return $arg } +gdb_caching_proc gdb_testsuite_gdb_caching_proc_exp_arg_nested { arg } { + incr ::count + return [gdb_testsuite_gdb_caching_proc_exp_arg $arg] +} + +# List of "expected $::count after running expression" and +# "expression". set assertions { - { [gdb_testsuite_gdb_caching_proc_exp_noarg] == 1 } - { [gdb_testsuite_gdb_caching_proc_exp_arg 1] == 1 } - { [gdb_testsuite_gdb_caching_proc_exp_arg "foo foo"] == "foo foo" } + 1 { [gdb_testsuite_gdb_caching_proc_exp_noarg] == 1 } + 1 { [gdb_testsuite_gdb_caching_proc_exp_arg 1] == 1 } + 1 { [gdb_testsuite_gdb_caching_proc_exp_arg "foo foo"] == "foo foo" } + 1 { [gdb_testsuite_gdb_caching_proc_exp_arg_nested "foo foo"] == "foo foo" } + 2 { [gdb_testsuite_gdb_caching_proc_exp_arg_nested "bar bar"] == "bar bar" } } set assertion_nr 0 -foreach assertion $assertions { +foreach {expected_count assertion} $assertions { with_test_prefix $assertion_nr { set ::count 0 gdb_assert $assertion - gdb_assert { $::count == 1 } + gdb_assert { $::count == $expected_count } with_test_prefix cached { gdb_assert $assertion - gdb_assert { $::count == 1 } + gdb_assert { $::count == $expected_count } } } incr assertion_nr diff --git a/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp new file mode 100644 index 0000000..a05ce61 --- /dev/null +++ b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.exp @@ -0,0 +1,84 @@ +# Copyright 2025 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +# Test gdb_test_multiple -lbl, particularly with patterns that share a +# common prefix. + +standard_testfile + +clean_restart + +gdb_test_no_output "source ${srcdir}/${subdir}/$testfile.gdb" \ + "source gdb test script" + +set saw_prompt 0 +set saw_prefix 0 +set saw_command 0 +set saw_prefix_foo 0 +set saw_prefix_bar 0 + +# #1 - We need anchors so that the "prefix foo" pattern below does not +# match when the expect output buffer contains: +# +# "\r\nprefix xxx\r\n\prefix foo\r\n" +# +# #2 - We need an anchor on the prompt match as otherwise the prompt +# regexp would match: +# +# "\r\nmeant-to-be-matched-by-lbl-2\r\nprefix xxx\r\n(gdb) " +# +# This test would fail if -lbl did not force the built-in prompt match +# regexp to have an anchor as well, as without it, the built-in prompt +# regexp would have the exact same issue as #2 above. + +gdb_test_multiple "command" "" -lbl { + -re "^command(?=\r\n)" { + verbose -log <COMMAND> + incr saw_command + exp_continue + } + -re "^\r\nprefix foo(?=\r\n)" { + verbose -log <PREFIX-FOO> + incr saw_prefix_foo + exp_continue + } + -re "^\r\nprefix bar(?=\r\n)" { + verbose -log <PREFIX-BAR> + incr saw_prefix_bar + exp_continue + } + -re "^\r\nprefix \[^\r\n\]*(?=\r\n)" { + verbose -log <PREFIX> + incr saw_prefix + exp_continue + } + -re "^\r\n$gdb_prompt $" { + verbose -log <PROMPT> + incr saw_prompt + pass $gdb_test_name + } +} + +verbose -log "saw_command: $saw_command" +verbose -log "saw_prefix_foo: $saw_prefix_foo" +verbose -log "saw_prefix_bar: $saw_prefix_bar" +verbose -log "saw_prefix: $saw_prefix" +verbose -log "saw_prompt: $saw_prompt" + +gdb_assert {$saw_command == 1} +gdb_assert {$saw_prefix_foo == 1} +gdb_assert {$saw_prefix_bar == 1} +gdb_assert {$saw_prefix == 3} +gdb_assert {$saw_prompt == 1} diff --git a/gdb/testsuite/gdb.testsuite/lmap.exp b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.gdb index da03722..8c94dfa 100644..100755 --- a/gdb/testsuite/gdb.testsuite/lmap.exp +++ b/gdb/testsuite/gdb.testsuite/gdb_test_multiple-lbl.gdb @@ -1,4 +1,5 @@ -# Copyright 2023-2025 Free Software Foundation, Inc. +# Copyright 2025 Free Software Foundation, Inc. + # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 3 of the License, or @@ -12,9 +13,13 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see <http://www.gnu.org/licenses/>. -set one 1 -set l1 { $one 2 } -set res1 [lmap item $l1 {expr $item + 1}] -gdb_assert { [lindex $res1 0] == 2 } -gdb_assert { [lindex $res1 1] == 3 } -gdb_assert { $item == 2 } +define command + echo prefix xxx\n + echo meant-to-be-matched-by-lbl-1\n + echo prefix foo\n + echo prefix bar\n + echo meant-to-be-matched-by-lbl-2\n + echo prefix xxx\n + echo prefix xxx\n + echo meant-to-be-matched-by-lbl-3\n +end diff --git a/gdb/testsuite/gdb.testsuite/mount-point-map.exp b/gdb/testsuite/gdb.testsuite/mount-point-map.exp new file mode 100644 index 0000000..9e462bb --- /dev/null +++ b/gdb/testsuite/gdb.testsuite/mount-point-map.exp @@ -0,0 +1,49 @@ +# Copyright 2025 Free Software Foundation, Inc. +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see <http://www.gnu.org/licenses/>. + +set unix_to_win { + /bin C:/msys64/usr/bin + /c C: + / C:/msys64 +} + +# Test that FROM is normalized to TO. + +proc test {from to} { + set got [host_file_normalize_mingw $from $::unix_to_win] + verbose -log "input: $from" + verbose -log "expected: $to" + verbose -log "got: $got" + gdb_assert {$got == $to} $from +} + +# Drive letters always get a '/' suffix, other Windows file names do +# not. +test "/" "C:/msys64" +test "/c" "C:/" +test "/bin" "C:/msys64/usr/bin" + +# A file name that already starts with a drive letter. +test "C:/msys64" "C:/msys64" + +# A subdir/subfile under each mount. +test "/foo" "C:/msys64/foo" +test "/c/foo" "C:/foo" +test "/bin/foo" "C:/msys64/usr/bin/foo" + +# Test slash normalization. +test "//" "C:/msys64" +test "/c///foo//bar//" "C:/foo/bar" +# We don't currently handle UNC paths. +test "//server///" "C:/msys64/server" diff --git a/gdb/testsuite/gdb.testsuite/with-override.exp b/gdb/testsuite/gdb.testsuite/with-override.exp index 9180150..2a316f9 100644 --- a/gdb/testsuite/gdb.testsuite/with-override.exp +++ b/gdb/testsuite/gdb.testsuite/with-override.exp @@ -42,6 +42,10 @@ with_test_prefix no-args { gdb_assert { [foo] == 2 } } } + + with_test_prefix "foo1 again" { + gdb_assert { [foo] == 1 } + } } with_test_prefix after { @@ -50,11 +54,11 @@ with_test_prefix no-args { } proc foo { {a 0} } { - return [expr $a + 1] + return [expr {$a + 1}] } proc foo_plus_1 { {a 0} } { - return [expr $a + 2] + return [expr {$a + 2}] } with_test_prefix default-arg { |