From: Bob Rossi <bob@brasko.net>
To: Mark Kettenis <mark.kettenis@xs4all.nl>
Cc: gdb-patches@sources.redhat.com, Daniel Jacobowitz <drow@false.org>
Subject: Re: MI testsuite to use PTY for inferior
Date: Mon, 05 Sep 2005 19:52:00 -0000 [thread overview]
Message-ID: <20050905195147.GA20894@white> (raw)
In-Reply-To: <200509012211.j81MBfX1004484@elgar.sibelius.xs4all.nl>
> 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
OK, I think I finally have a solution that will scale nicely to other
problems that pop up like this. The previous patch I posted is reposted
here, along with a patch that fixes the mi-syn-frame.exp testcase.
For an MI input command that can generate more than 1 MI output command
(the normal MI output command response + at least 1 asynchronous MI
output command), we can simply call mi_gdb_test multiple times, each
with an MI output command to match. Here's an example,
mi_gdb_test "47-exec-next" \
"47\\^running" \
"Testing console output" \
"Hello \\\\\"!\[\r\n\]+"
mi_gdb_test "" "47\\*stopped.*" "Finished step over hello"
When the first parameter is "", mi_gdb_test still matches the MI output
command, even though no new data is sent to GDB.
The attached patch solves the current issues found by Mark and I.
What do you think?
Thanks,
Bob Rossi
Index: gdb/testsuite/ChangeLog
2005-08-31 Bob Rossi <bob@brasko.net>
+
+ * lib/mi-support.exp (mi_gdb_test): Change -re to not be anchored.
+ * gdb.mi/mi-syn-frame.exp: Call mi_gdb_test twice instead of once for
+ commands that return an MI output command and an asyncronous MI output
+ command. This avoids race conditions.
+ * gdb.mi/mi-console.exp: Ditto.
Index: gdb/testsuite/gdb.mi/mi-console.exp
===================================================================
RCS file: /cvs/src/src/gdb/testsuite/gdb.mi/mi-console.exp,v
retrieving revision 1.15
diff -u -r1.15 mi-console.exp
--- gdb/testsuite/gdb.mi/mi-console.exp 4 Aug 2005 01:52:31 -0000 1.15
+++ gdb/testsuite/gdb.mi/mi-console.exp 5 Sep 2005 19:43:55 -0000
@@ -58,15 +58,8 @@
"47\\^running" \
"Testing console output" \
"Hello \\\\\"!\[\r\n\]+"
-
-gdb_expect {
- -re "47\\*stopped.*$mi_gdb_prompt$" {
- pass "Finished step over hello"
- }
- timeout {
- fail "Finished step over hello (timeout)"
- }
-}
+mi_gdb_test "" "47\\*stopped.*" "Finished step over hello"
+
mi_gdb_exit
return 0
Index: gdb/testsuite/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 -r1.6 mi-syn-frame.exp
--- gdb/testsuite/gdb.mi/mi-syn-frame.exp 4 Aug 2005 01:52:31 -0000 1.6
+++ gdb/testsuite/gdb.mi/mi-syn-frame.exp 5 Sep 2005 19:43:55 -0000
@@ -35,8 +35,6 @@
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,10 +59,12 @@
# Continue back to main()
#
mi_gdb_test "403-exec-continue" \
- "403\\^running\[\r\n\]+${my_mi_gdb_prompt}403\\\*stopped" \
+ "403\\^running" \
"testing exec continue" \
"hi in foo\[\r\n\]\+"
+mi_gdb_test "" "403\\*stopped" "finished exec continue"
+
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\"\}.*\\\]" \
"list stack frames"
@@ -91,8 +91,9 @@
"list stack frames"
-mi_gdb_test "408-exec-continue" \
- "408\\^running\[\r\n\]+${my_mi_gdb_prompt}408\\\*stopped"
+mi_gdb_test "408-exec-continue" "408\\^running"
+
+mi_gdb_test "" "408\\*stopped.*" "finished exec continue"
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\"\}.*\\\]" \
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 5 Sep 2005 19:43:55 -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"
}
next prev parent reply other threads:[~2005-09-05 19:52 UTC|newest]
Thread overview: 62+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-27 3:18 Bob Rossi
2005-08-13 22:04 ` Mark Kettenis
2005-08-20 9:07 ` Bob Rossi
2005-08-30 2:55 ` Daniel Jacobowitz
2005-09-01 0:52 ` Bob Rossi
2005-09-01 22:12 ` Mark Kettenis
2005-09-01 23:52 ` Bob Rossi
2005-09-05 19:52 ` Bob Rossi [this message]
2005-09-10 4:02 ` Daniel Jacobowitz
2005-07-30 5:54 Nick Roberts
2005-07-30 17:39 ` Bob Rossi
2005-07-30 18:08 ` Daniel Jacobowitz
2005-07-30 22:47 ` Nick Roberts
2005-07-31 1:19 ` Daniel Jacobowitz
2005-07-30 22:47 ` Nick Roberts
2005-07-30 23:03 ` Bob Rossi
2005-07-31 1:21 ` Daniel Jacobowitz
2005-07-31 13:16 ` Bob Rossi
2005-07-31 15:31 ` Daniel Jacobowitz
2005-07-31 21:20 ` Bob Rossi
2005-08-01 1:53 ` Daniel Jacobowitz
2005-08-01 2:05 ` Bob Rossi
2005-08-01 2:15 ` Daniel Jacobowitz
2005-08-01 11:32 ` Bob Rossi
2005-08-01 3:56 ` Eli Zaretskii
2005-08-01 11:30 ` Bob Rossi
2005-08-01 13:00 ` Daniel Jacobowitz
2005-08-01 13:16 ` Bob Rossi
2005-08-01 13:23 ` Daniel Jacobowitz
2005-08-01 13:31 ` Bob Rossi
2005-08-01 14:00 ` Daniel Jacobowitz
2005-08-01 14:07 ` Bob Rossi
2005-08-01 18:45 ` Eli Zaretskii
2005-08-01 19:01 ` Mark Kettenis
2005-08-01 19:25 ` Daniel Jacobowitz
2005-08-01 19:34 ` Mark Kettenis
2005-08-01 19:43 ` Bob Rossi
2005-08-01 20:48 ` Eli Zaretskii
2005-08-01 20:45 ` Eli Zaretskii
2005-08-01 20:52 ` Daniel Jacobowitz
2005-08-02 3:45 ` Eli Zaretskii
2005-08-02 3:50 ` Daniel Jacobowitz
2005-08-02 20:46 ` Eli Zaretskii
2005-08-02 20:48 ` Daniel Jacobowitz
2005-08-13 17:26 ` Bob Rossi
2005-08-13 21:41 ` Daniel Jacobowitz
2005-07-31 21:35 ` Nick Roberts
2005-07-31 21:37 ` Daniel Jacobowitz
2005-07-31 23:32 ` Nick Roberts
2005-08-01 1:51 ` Daniel Jacobowitz
2005-08-03 2:07 ` Bob Rossi
2005-08-03 12:48 ` Bob Rossi
2005-08-03 13:19 ` Daniel Jacobowitz
2005-08-03 18:22 ` Bob Rossi
2005-08-03 18:23 ` Daniel Jacobowitz
2005-08-03 18:24 ` Bob Rossi
2005-08-03 18:32 ` Daniel Jacobowitz
2005-08-03 19:31 ` Bob Rossi
2005-08-04 2:23 ` Bob Rossi
2005-08-04 2:27 ` Bob Rossi
2005-08-04 4:05 ` Daniel Jacobowitz
2005-08-04 13:07 ` Bob Rossi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20050905195147.GA20894@white \
--to=bob@brasko.net \
--cc=drow@false.org \
--cc=gdb-patches@sources.redhat.com \
--cc=mark.kettenis@xs4all.nl \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox