Re: MI testsuite to use PTY for inferior

Mark Kettenis
2005-09-01T22:12:09Z

> Date: Wed, 31 Aug 2005 20:52:00 -0400
> From: Bob Rossi <bob@brasko.net>
>
> Index: gdb/testsuite/lib/mi-support.exp
> ===================================================================
> RCS file: /cvs/src/src/gdb/testsuite/lib/mi-support.exp,v
> retrieving revision 1.30
> diff -u -r1.30 mi-support.exp
> --- gdb/testsuite/lib/mi-support.exp 9 Aug 2005 19:00:16 -0000 1.30
> +++ gdb/testsuite/lib/mi-support.exp 1 Sep 2005 00:46:01 -0000
> @@ -659,7 +659,15 @@
> gdb_start
> set result -1
> }
> - -re "\[\r\n\]*($pattern)\[\r\n\]+$mi_gdb_prompt\[ \]*$" {
> + -re "\[\r\n\]*($pattern)\[\r\n\]+$mi_gdb_prompt\[ \]*" {
> + # NOTE, there is no trailing anchor because with GDB/MI,
> + # asynchronous responses can happen at any point, causing more
> + # data to be available. Normally an anchor is used to make
> + # sure the end of the output is matched, however, $mi_gdb_prompt
> + # is just as good of an anchor since mi_gdb_test is meant to
> + # match a single mi output command. If a second GDB/MI output
> + # response is sent, it will be in the buffer for the next
> + # time mi_gdb_test is called.
> if ![string match "" $message] then {
> pass "$message"
> }
>
> Basically, this passes the mi-console.exp testcase if the 'sleep 1' is
> there or not. Also, it didn't break any testcases. It changes
> mi_gdb_test to enforce the fact that only a single MI output command can
> be matched. What do you think?

Fixes the problems in mi-console.exp, but I still see the following:

403-exec-continue
403^running
(gdb)
FAIL: gdb.mi/mi-syn-frame.exp: testing exec continue
403*stopped
(gdb)
404-stack-list-frames 0 0
404^done,stack=[frame={level="0",addr="0x1c0006c8",func="main",file="../../../..
/src/gdb/gdb/testsuite/gdb.mi/mi-syn-frame.c",fullname="/home/kettenis/src/gdb/g
db/testsuite/gdb.mi/mi-syn-frame.c",line="14"}]
(gdb)
PASS: gdb.mi/mi-syn-frame.exp: list stack frames

Seems the attached patch solves those though.

Mark

Index: ChangeLog
from Mark Kettenis <kettenis@gnu.org>

* gdb.mi/mi-syn-frame.exp (my_mi_gdb_prompt): Remove. Split tests
that were using this variable.

Index: gdb.mi/mi-syn-frame.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-syn-frame.exp,v
retrieving revision 1.6
diff -u -p -r1.6 mi-syn-frame.exp
--- gdb.mi/mi-syn-frame.exp 4 Aug 2005 01:52:31 -0000 1.6
+++ gdb.mi/mi-syn-frame.exp 1 Sep 2005 22:10:47 -0000
@@ -35,8 +35,6 @@ if { [gdb_compile "${srcdir}/${subdir}/
gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

-set my_mi_gdb_prompt "\\(gdb\\)\[ \]*\[\r\n\]*"
-
mi_gdb_exit
mi_gdb_start separate-inferior-tty
mi_delete_breakpoints
@@ -61,9 +59,18 @@ mi_gdb_test "402-stack-list-frames" "402
# Continue back to main()
#
mi_gdb_test "403-exec-continue" \
- "403\\^running\[\r\n\]+${my_mi_gdb_prompt}403\\\*stopped" \
- "testing exec continue" \
- "hi in foo\[\r\n\]\+"
+ "403\\^running" \
+ "testing exec continue" \
+ "hi in foo\[\r\n\]\+"
+
+gdb_expect {
+ -re "403\\*stopped.*$mi_gdb_prompt$" {
+ pass "finished exec continue"
+ }
+ timeout {
+ fail "finished exec continue (timeout)"
+ }
+}

mi_gdb_test "404-stack-list-frames 0 0" \
"404\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \
@@ -92,7 +99,16 @@ mi_gdb_test "407-stack-list-frames" \

mi_gdb_test "408-exec-continue" \
- "408\\^running\[\r\n\]+${my_mi_gdb_prompt}408\\\*stopped"
+ "408\\^running"
+
+gdb_expect {
+ -re "408\\*stopped.*$mi_gdb_prompt$" {
+ pass "finished exec continue"
+ }
+ timeout {
+ fail "finished exec continue (timeout)"
+ }
+}

mi_gdb_test "409-stack-list-frames 0 0" \
"409\\^done,stack=\\\[frame=\{level=\"0\",addr=\"$hex\",func=\"main\",file=\".*mi-syn-frame.c\",fullname=\"${fullname_syntax}${srcfile}\",line=\"$decimal\"\}.*\\\]" \