[gdb/testsuite] Make Term::wait_for "" match only a prompt
authorTom de Vries <tdevries@suse.de>
Wed, 21 Jun 2023 13:31:37 +0000 (15:31 +0200)
committerTom de Vries <tdevries@suse.de>
Wed, 21 Jun 2023 13:31:37 +0000 (15:31 +0200)
The semantics of Term::wait_for is:
...
    # Accept some output from gdb and update the screen.  WAIT_FOR is
    # a regexp matching the line to wait for.  Return 0 on timeout, 1
    # on success.
    proc wait_for {wait_for} {
...

Note that besides the regexp, also a subsequent gdb prompt is matched.

I recently used wait_for "" in a few test-cases, thinking that this would
match just a prompt, but in fact that's not the case.

Fix this in wait_for, and add a corresponding test in gdb.tui/tuiterm-2.exp.

Tested on x86_64-linux.

gdb/testsuite/gdb.tui/tuiterm-2.exp
gdb/testsuite/lib/tuiterm.exp

index e7a0f03e4baeccd4a148e0e9a671a696bae05e32..8e838d31073f9657ab93b11f370628a22d52b358 100644 (file)
@@ -93,6 +93,19 @@ with_override Term::accept_gdb_output test_accept_gdb_output {
                }
                gdb_assert { ![Term::command "foo"] }
            }
+
+           with_test_prefix Term::wait_for {
+               Term::_setup 4 20
+               set send_cnt 0
+               set expect_send {}
+               set action_cnt 0
+               set actions {
+                   {
+                       Term::_insert "(gdb) "
+                   }
+               }
+               gdb_assert { [Term::wait_for ""] }
+           }
        }
     }
 }
index dc928ae5aff5b1b72cbd29a502d1fcd74457f7aa..41fa554aa09e3799a1a7e3f08088ce2769608d14 100644 (file)
@@ -789,6 +789,10 @@ namespace eval Term {
        set fn "wait_for"
 
        set prompt_wait_for "(^|\\|)$gdb_prompt \$"
+       if { $wait_for == "" } {
+           set wait_for $prompt_wait_for
+       }
+
        debug_tui_matching "$fn: regexp: '$wait_for'"
 
        while 1 {