This is the mail archive of the gdb-patches@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [RFC] Fixing gdb.base/completion.exp (PR testsuite/12649)


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]