diff options
author | Simon Marchi <simon.marchi@efficios.com> | 2023-01-06 13:27:14 -0500 |
---|---|---|
committer | Simon Marchi <simon.marchi@efficios.com> | 2023-01-26 14:31:33 -0500 |
commit | 8abd06e066be7ad41d608b500187e90736c9e8fa (patch) | |
tree | 379367ad1bbf189c033293954e5c5256d4f84ff7 /gdb/testsuite | |
parent | 59db4c934f9931d0c77a36cac1f9d6402ab7496d (diff) | |
download | gdb-8abd06e066be7ad41d608b500187e90736c9e8fa.zip gdb-8abd06e066be7ad41d608b500187e90736c9e8fa.tar.gz gdb-8abd06e066be7ad41d608b500187e90736c9e8fa.tar.bz2 |
gdb/testsuite/dap: make dap_wait_for_event_and_check return preceding messages
In the following patch, I change gdb.dap/basic-dap.exp such that after
waiting for some event, it checks if it received another event
meanwhile. To help with this, make dap_wait_for_event_and_check and
_dap_dap_wait_for_event return a list with everything received before
the event of interest. This is similar to what
dap_check_request_and_response returns.
Change-Id: I85c8980203a2dec833937e7552c2196bc137935d
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/lib/dap-support.exp | 28 |
1 files changed, 22 insertions, 6 deletions
diff --git a/gdb/testsuite/lib/dap-support.exp b/gdb/testsuite/lib/dap-support.exp index 179f675..527e7db 100644 --- a/gdb/testsuite/lib/dap-support.exp +++ b/gdb/testsuite/lib/dap-support.exp @@ -282,17 +282,27 @@ proc dap_match_values {name d args} { pass $name } -# A helper for dap_read_event that reads events, looking for one +# A helper for dap_wait_for_event_and_check that reads events, looking for one # matching TYPE. -proc _dap_wait_for_event {type} { +# +# Return a list of two items: +# +# - the matched event +# - a list of any JSON objects (events or others) seen before the matched +# event. +proc _dap_wait_for_event { {type ""} } { + set preceding [list] + while 1 { # We don't do any extra error checking here for the time # being; we'll just get a timeout thrown instead. set d [_dap_read_json] if {[dict get $d type] == "event" - && [dict get $d event] == $type} { - return $d + && ($type == "" || [dict get $d event] == $type)} { + return [list $d $preceding] } + + lappend preceding $d } } @@ -302,14 +312,20 @@ proc _dap_wait_for_event {type} { # are used to check fields of the event; the arguments alternate # between a field name (in "dict get" form) and its expected value. # -# Returns the dict for the chosen event, or empty string on error. +# Return a list of two items: +# +# - the matched event (regardless of whether it passed the field validation or +# not) +# - a list of any JSON objects (events or others) seen before the matched +# event. proc dap_wait_for_event_and_check {name type args} { if {$name == ""} { set name $type } set result [_dap_wait_for_event $type] - eval dap_match_values [list $name $result] $args + set event [lindex $result 0] + eval dap_match_values [list $name $event] $args return $result } |