[committed,gdb/testsuite] Fix gdb.mi/gdb2549.exp with check-read1

Message ID 20200303103608.GA16670@delia
State New, archived
Headers

Commit Message

Tom de Vries March 3, 2020, 10:36 a.m. UTC
  Hi,

When running gdb.mi/gdb2549.exp with check-read1, we get:
...
Running src/gdb/testsuite/gdb.mi/gdb2549.exp ...
FAIL: gdb.mi/gdb2549.exp: register values t (timeout)
...

The problem is that the command generates a lot of output, which is matched by
a single '.*':
...
mi_gdb_test "666-data-list-register-values t" \
  "666\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$binary\"\}.*\\\]" \
  "register values t"
...

Fix this by splitting up the matching and calling exp_continue after each
number/value pair.

Tested on x86_64-linux with make targets check and check-read1.

Committed to trunk.

Thanks,
- Tom

[gdb/testsuite] Fix gdb.mi/gdb2549.exp with check-read1

gdb/testsuite/ChangeLog:

2020-03-03  Tom de Vries  <tdevries@suse.de>

	* gdb.mi/gdb2549.exp: Fix "register values t" check-read1 timeout.

---
 gdb/testsuite/gdb.mi/gdb2549.exp | 33 ++++++++++++++++++++++++++++++---
 1 file changed, 30 insertions(+), 3 deletions(-)
  

Patch

diff --git a/gdb/testsuite/gdb.mi/gdb2549.exp b/gdb/testsuite/gdb.mi/gdb2549.exp
index 0b4cb6be38..cc6441c8ec 100644
--- a/gdb/testsuite/gdb.mi/gdb2549.exp
+++ b/gdb/testsuite/gdb.mi/gdb2549.exp
@@ -51,6 +51,7 @@  proc register_tests_no_exec { } {
 proc register_tests { } {
     global hex
     global decimal
+    global mi_gdb_prompt
     set octal "\[0-7\]+"
     set binary "\[0-1\]+"
     set float "\\-?((\[0-9\]+(\\.\[0-9\]+)?(e\[-+\]\[0-9\]+)?)|(nan\\($hex\\)))"
@@ -71,9 +72,35 @@  proc register_tests { } {
 	    "555\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$octal\"\}.*\\\]" \
 	    "register values o"
 
-    mi_gdb_test "666-data-list-register-values t" \
-	    "666\\^done,register-values=\\\[\{number=\"$decimal\",value=\"$binary\"\}.*\\\]" \
-	    "register values t"
+    set cmd "666-data-list-register-values t"
+    set test "register values t"
+    set state 0
+    gdb_test_multiple $cmd $test -prompt "$mi_gdb_prompt$" {
+	-re "666\\^done,register-values=\\\[" {
+	    if { $state == 0 } {
+		set state 1
+		exp_continue
+	    }
+	    fail $gdb_test_name
+	}
+	-re "\{number=\"$decimal\",value=\"$binary\"\}" {
+	    if { $state != 0 } {
+		set state 2
+		exp_continue
+	    }
+	    fail $gdb_test_name
+	}
+	-re "\{number=\"$decimal\",value=\"\[^\"\]*\"\}" {
+	    exp_continue
+	}
+	-re "\]\r\n$mi_gdb_prompt$" {
+	    if { $state == 2 } {
+		pass $gdb_test_name
+	    } else {
+		fail $gdb_test_name
+	    }
+	}
+    }
 }
 
 register_tests_no_exec