This is the mail archive of the
gdb-patches@sourceware.org
mailing list for the GDB project.
Re: [RFC] Fixing gdb.base/completion.exp (PR testsuite/12649)
- From: Pedro Alves <pedro at codesourcery dot com>
- To: gdb-patches at sourceware dot org
- Cc: Marek Polacek <mpolacek at redhat dot com>
- Date: Mon, 2 May 2011 15:58:30 +0100
- Subject: Re: [RFC] Fixing gdb.base/completion.exp (PR testsuite/12649)
- References: <4DB82F26.30801@redhat.com> <201104281614.31962.pedro@codesourcery.com> <4DBAC6BB.4030402@redhat.com>
On Friday 29 April 2011 15:10:03, Marek Polacek wrote:
> On 04/28/2011 05:14 PM, Pedro Alves wrote:
> > Are you sure? I did't see that when I try it.
>
> For instance this is OK:
> gdb_test_no_output "complete hfgfh" "complete 'hfgfh'"
>
> but this is not:
> gdb_test_no_output "hfgfh\t" "complete 'hfgfh'"
Haven't really looked at exactly why that happens (it's
most likely something withing gdb_test_multiple that causes
it), we can always keep the send_gdb, and pass an empty
command to gdb_test_multiple, like in the patchlet below.
>
> > And I'd much rather we do this (remote the races) as first step instead
> > of completely rewriting the whole test file into something completely
> > different...
>
> Good point.
>
> > A follow up step would convert/simplify the send_gdb+gdb_expects
> > into gdb_test&friends.
>
> Something like this attempt?
> http://sourceware.org/ml/gdb-patches/2011-04/msg00538.html
No, I mean something along the lines of the incomplete patch
below, really convert/simplifying the send_gdb+gdb_expects
into gdb_test&friends.
After that is done, the testfile should quite a bit smaller, and couple
of patterns should emerge. Then, looking at the patterns, we could
consider coming up with some helper functions that would allow
running the tests in several different ways, e.g, once with \t, and
another with "complete", as I suggested a couple of messages ago.
Made possible since we now understand what races were there in
the "\t" original version.
---
gdb/testsuite/gdb.base/completion.exp | 25 +++++++++++--------------
gdb/testsuite/lib/gdb.exp | 2 +-
2 files changed, 12 insertions(+), 15 deletions(-)
Index: src/gdb/testsuite/gdb.base/completion.exp
===================================================================
--- src.orig/gdb/testsuite/gdb.base/completion.exp 2011-05-02 15:30:52.000000000 +0100
+++ src/gdb/testsuite/gdb.base/completion.exp 2011-05-02 15:50:30.649463000 +0100
@@ -94,21 +94,18 @@ if ![runto_main] then {
set oldtimeout1 $timeout
set timeout 30
-
+set test "complete 'hfgfh'"
send_gdb "hfgfh\t"
-gdb_expect {
- -re "^hfgfh\\\x07$"\
- { send_gdb "\n"
- gdb_expect {
- -re "Undefined command: \"hfgfh\"\\. Try \"help\"\\..*$gdb_prompt $"\
- { pass "complete 'hfgfh'"}
- -re ".*$gdb_prompt $" { fail "complete 'hfgfh'"}
- timeout {fail "(timeout) complete 'hfgfh'"}
- }
- }
- -re ".*$gdb_prompt $" { fail "complete 'hfgfh'" }
- timeout { fail "(timeout) complete 'hfgfh'" }
- }
+gdb_test_multiple "" "$test" {
+ -re "^hfgfh\\\x07$" {
+ send_gdb "\n"
+ gdb_test_multiple "" $test {
+ -re "Undefined command: \"hfgfh\"\\. Try \"help\"\\..*$gdb_prompt $" {
+ pass $test
+ }
+ }
+ }
+}
#exp_internal 0
Index: src/gdb/testsuite/lib/gdb.exp
===================================================================
--- src.orig/gdb/testsuite/lib/gdb.exp 2011-04-28 17:17:41.000000000 +0100
+++ src/gdb/testsuite/lib/gdb.exp 2011-05-02 15:52:55.889463000 +0100
@@ -593,7 +593,7 @@ proc gdb_test_multiple { command message
set message $command
}
- if [string match "*\[\r\n\]" $command] {
+ if { $command != "" && [string match "*\[\r\n\]" $command] } {
error "Invalid trailing newline in \"$message\" test"
}
--
Pedro Alves