From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2550 invoked by alias); 13 Aug 2002 20:10:44 -0000 Mailing-List: contact gdb-patches-help@sources.redhat.com; run by ezmlm Precedence: bulk List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sources.redhat.com Received: (qmail 2542 invoked from network); 13 Aug 2002 20:10:43 -0000 Received: from unknown (HELO touchme.toronto.redhat.com) (216.138.202.10) by sources.redhat.com with SMTP; 13 Aug 2002 20:10:43 -0000 Received: from redhat.com (tooth.toronto.redhat.com [172.16.14.29]) by touchme.toronto.redhat.com (Postfix) with ESMTP id 8FCF1B804F; Tue, 13 Aug 2002 16:10:42 -0400 (EDT) Message-ID: <3D59661F.C4E69AA7@redhat.com> Date: Tue, 13 Aug 2002 13:10:00 -0000 From: Fernando Nasser Organization: Red Hat Canada X-Accept-Language: en MIME-Version: 1.0 To: tromey@redhat.com Cc: gdb-patches@sources.redhat.com, Elena Zannoni Subject: Re: [RFA/TESTSUITE]: readline tests References: <87y9c1rodk.fsf@fleche.redhat.com> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-SW-Source: 2002-08/txt/msg00306.txt.bz2 Sorry for the delay Tom. New tests are always welcome. Elena, is it OK with you? Can we check it in? Regards to all. Fernando Tom Tromey wrote: > > This adds a new file of readline tests. Currently it only checks > operate-and-get-next; Elena wanted some tests for a recent patch in > that area. > > Ok? > > Tom > > Index: testsuite/ChangeLog > from Tom Tromey > > * gdb.base/readline.exp: New file. > > Index: testsuite/gdb.base/readline.exp > =================================================================== > RCS file: testsuite/gdb.base/readline.exp > diff -N testsuite/gdb.base/readline.exp > --- /dev/null 1 Jan 1970 00:00:00 -0000 > +++ testsuite/gdb.base/readline.exp 24 Jul 2002 17:59:10 -0000 > @@ -0,0 +1,190 @@ > +# Copyright 2002 Free Software Foundation, Inc. > + > +# This program is free software; you can redistribute it and/or modify > +# it under the terms of the GNU General Public License as published by > +# the Free Software Foundation; either version 2 of the License, or > +# (at your option) any later version. > +# > +# This program is distributed in the hope that it will be useful, > +# but WITHOUT ANY WARRANTY; without even the implied warranty of > +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the > +# GNU General Public License for more details. > +# > +# You should have received a copy of the GNU General Public License > +# along with this program; if not, write to the Free Software > +# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. > + > +# Please email any bugs, comments, and/or additions to this file to: > +# bug-gdb@prep.ai.mit.edu > + > +# This file was written by Tom Tromey > + > +# This file is part of the gdb testsuite. > + > +# > +# Tests for readline operations. > +# > + > +# This function is used to test operate-and-get-next. > +# NAME is the name of the test. > +# ARGS is a list of alternating commands and expected results. > +proc operate_and_get_next {name args} { > + global gdb_prompt > + > + set my_gdb_prompt "($gdb_prompt| >)" > + > + set reverse {} > + foreach {item result} $args { > + verbose "sending $item" > + sleep 1 > + > + # We can't use gdb_test here because we might see a " >" prompt. > + set status 0 > + send_gdb "$item\n" > + gdb_expect { > + -re "$item" { > + # Ok > + } > + timeout { > + set status 1 > + } > + } > + > + if {! $status} { > + gdb_expect { > + -re "$result" { > + # Ok. > + } > + timeout { > + set status 1 > + } > + } > + } > + > + if {$status} { > + fail "$name - send $item" > + return 0 > + } > + pass "$name - send $item" > + > + set reverse [linsert $reverse 0 $item $result] > + } > + > + # Now use C-p to go back to the start. > + foreach {item result} $reverse { > + # Actually send C-p followed by C-l. This lets us recognize the > + # command when gdb prints it again. > + send_gdb "\x10\x0c" > + set status 0 > + gdb_expect { > + -re "$item" { > + # Ok > + } > + timeout { > + set status 1 > + } > + } > + if {$status} { > + fail "$name - C-p to $item" > + return 0 > + } > + pass "$name - C-p to $item" > + } > + > + # Now C-o through the list. Don't send the command, since it is > + # already there. Strip off the first command from the list so we > + # can see the next command inside the loop. > + set count 0 > + foreach {item result} $args { > + set status 0 > + > + # If this isn't the first item, make sure we see the command at > + # the prompt. > + if {$count > 0} { > + gdb_expect { > + -re ".*$item" { > + # Ok > + } > + timeout { > + set status 1 > + } > + } > + } > + > + if {! $status} { > + # For the last item, send a simple \n instead of C-o. > + if {$count == [llength $args] - 2} { > + send_gdb "\n" > + } else { > + # 15 is C-o. > + send_gdb [format %c 15] > + } > + set status 0 > + gdb_expect { > + -re "$result" { > + # Ok > + } > + timeout { > + set status 1 > + } > + } > + } > + > + if {$status} { > + fail "$name - C-o for $item" > + return 0 > + } > + pass "$name - C-o for $item" > + > + set count [expr {$count + 2}] > + } > + > + return 1 > +} > + > + > +if $tracelevel { > + strace $tracelevel > +} > + > +# Don't let a .inputrc file or an existing setting of INPUTRC mess up > +# the test results. Even if /dev/null doesn't exist on the particular > +# platform, the readline library will use the default setting just by > +# failing to open the file. OTOH, opening /dev/null successfully will > +# also result in the default settings being used since nothing will be > +# read from this file. > +global env > +if [info exists env(INPUTRC)] { > + set old_inputrc $env(INPUTRC) > +} > +set env(INPUTRC) "/dev/null" > + > +gdb_start > +gdb_reinitialize_dir $srcdir/$subdir > + > +set oldtimeout1 $timeout > +set timeout 30 > + > + > +# A simple test of operate-and-get-next. > +operate_and_get_next "Simple operate-and-get-next" \ > + "p 1" ".* = 1" \ > + "p 2" ".* = 2"\ > + "p 3" ".* = 3" > + > +# Test operate-and-get-next with a secondary prompt. > +operate_and_get_next "operate-and-get-next with secondary prompt" \ > + "if 1 > 0" "" \ > + "p 5" "" \ > + "end" ".* = 5" > + > + > +# Restore globals modified in this test... > +if [info exists old_inputrc] { > + set env(INPUTRC) $old_inputrc > +} else { > + unset env(INPUTRC) > +} > +set timeout $oldtimeout1 > + > +return 0 -- Fernando Nasser Red Hat Canada Ltd. E-Mail: fnasser@redhat.com 2323 Yonge Street, Suite #300 Toronto, Ontario M4P 2C9