From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 7375 invoked by alias); 23 Jan 2007 17:14:17 -0000 Received: (qmail 7365 invoked by uid 22791); 23 Jan 2007 17:14:15 -0000 X-Spam-Check-By: sourceware.org Received: from nevyn.them.org (HELO nevyn.them.org) (66.93.172.17) by sourceware.org (qpsmtpd/0.31.1) with ESMTP; Tue, 23 Jan 2007 17:14:05 +0000 Received: from drow by nevyn.them.org with local (Exim 4.63) (envelope-from ) id 1H9PDf-0004oD-1p for gdb-patches@sourceware.org; Tue, 23 Jan 2007 12:14:03 -0500 Date: Tue, 23 Jan 2007 17:14:00 -0000 From: Daniel Jacobowitz To: gdb-patches@sourceware.org Subject: [commit] Tests for the target description XML parser Message-ID: <20070123171403.GA18292@nevyn.them.org> Mail-Followup-To: gdb-patches@sourceware.org MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.13 (2006-08-11) X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2007-01/txt/msg00480.txt.bz2 I realized a week or two ago that I'd never written any test cases for any of these XML parsers - how foolish of me. So I wrote a bunch. Here are the ones for the bits already checked in; they didn't find any bugs, although the ones I wrote for the bits I'll be posting soon did find an embarrassing problem. Tested x86_64-pc-linux-gnu, both with and without expat, and checked in. Let me know if they give you any trouble. -- Daniel Jacobowitz CodeSourcery 2007-01-23 Daniel Jacobowitz * Makefile.in (ALL_SUBDIRS): Add gdb.xml. * configure: Regenerated. * configure.ac (AC_OUTPUT): Add gdb.xml/Makefile. * gdb.xml/Makefile.in, gdb.xml/tdesc-arch.exp, gdb.xml/tdesc-bogus.xml, gdb.xml/tdesc-errors.exp, gdb.xml/trivial.xml, gdb.xml/tdesc-unknown.xml: New files. * lib/gdb.exp (gdb_skip_xml_test): New function. --- gdb/testsuite/Makefile.in | 2 gdb/testsuite/configure | 3 gdb/testsuite/configure.ac | 3 gdb/testsuite/gdb.xml/Makefile.in | 13 ++++ gdb/testsuite/gdb.xml/tdesc-arch.exp | 104 ++++++++++++++++++++++++++++++++ gdb/testsuite/gdb.xml/tdesc-bogus.xml | 3 gdb/testsuite/gdb.xml/tdesc-errors.exp | 49 +++++++++++++++ gdb/testsuite/gdb.xml/tdesc-unknown.xml | 12 +++ gdb/testsuite/gdb.xml/trivial.xml | 1 gdb/testsuite/lib/gdb.exp | 23 +++++++ 10 files changed, 210 insertions(+), 3 deletions(-) Index: src/gdb/testsuite/Makefile.in =================================================================== --- src.orig/gdb/testsuite/Makefile.in 2007-01-11 15:25:05.000000000 -0500 +++ src/gdb/testsuite/Makefile.in 2007-01-11 15:25:07.000000000 -0500 @@ -37,7 +37,7 @@ RPATH_ENVVAR = @RPATH_ENVVAR@ ALL_SUBDIRS = gdb.ada gdb.arch gdb.asm gdb.base gdb.cp gdb.disasm \ gdb.dwarf2 \ gdb.fortran gdb.server gdb.java gdb.mi \ - gdb.objc gdb.threads gdb.trace \ + gdb.objc gdb.threads gdb.trace gdb.xml \ $(SUBDIRS) EXPECT = `if [ -f $${rootme}/../../expect/expect ] ; then \ Index: src/gdb/testsuite/configure.ac =================================================================== --- src.orig/gdb/testsuite/configure.ac 2007-01-11 15:25:05.000000000 -0500 +++ src/gdb/testsuite/configure.ac 2007-01-11 15:25:07.000000000 -0500 @@ -116,4 +116,5 @@ AC_OUTPUT([Makefile \ gdb.cp/Makefile gdb.disasm/Makefile gdb.dwarf2/Makefile \ gdb.fortran/Makefile gdb.server/Makefile \ gdb.java/Makefile gdb.mi/Makefile \ - gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile]) + gdb.objc/Makefile gdb.threads/Makefile gdb.trace/Makefile \ + gdb.xml/Makefile]) Index: src/gdb/testsuite/gdb.xml/Makefile.in =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.xml/Makefile.in 2007-01-11 15:25:07.000000000 -0500 @@ -0,0 +1,13 @@ +VPATH = @srcdir@ +srcdir = @srcdir@ + +PROGS = + +all info install-info dvi install uninstall installcheck check: + @echo "Nothing to be done for $@..." + +clean mostlyclean: + -rm -f *.ci *.o $(OBJS) $(PROGS) *~ core + +distclean maintainer-clean realclean: clean + -rm -f Makefile Index: src/gdb/testsuite/gdb.xml/tdesc-arch.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.xml/tdesc-arch.exp 2007-01-11 15:39:54.000000000 -0500 @@ -0,0 +1,104 @@ +# Copyright 2007 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. + +if {[gdb_skip_xml_test]} { + unsupported "tdesc-arch.exp" + return -1 +} + +gdb_start + +# Find some valid architectures - we just need legitimate values +# to put in our elements. +set arch1 "" +set arch2 "" +set msg "read valid architectures" +gdb_test_multiple "set architecture" $msg { + -re "Requires an argument. Valid arguments are (\[^ \]*), (\[^ \]*), .*auto\\.\r\n$gdb_prompt $" { + set arch1 $expect_out(1,string) + set arch2 $expect_out(2,string) + pass $msg + } +} + +set default_arch "" +set msg "read default architecture" +gdb_test_multiple "show architecture" $msg { + -re "The target architecture is set automatically \\(currently (\[^ \]*)\\)\r\n$gdb_prompt $" { + set default_arch $expect_out(1,string) + pass $msg + } +} + +# If that did not work, no point running further tests. +if { "$arch1" == "" || "$arch2" == "" || "$default_arch" == "" } { + unresolved "architecture XML tests" + return -1 +} + +# Run these tests twice, once for $arch1 and once for $arch2, to +# make sure that the tdesc file overrides the global default. + +proc set_arch { arch which } { + global gdb_prompt + + set fd [open "tdesc-arch.xml" w] + puts $fd \ + " + $arch + " + close $fd + + # Anchor the test output, so that error messages are detected. + set cmd "set tdesc filename tdesc-arch.xml" + set msg "$cmd ($which architecture)" + set cmd_regex [string_to_regexp $cmd] + gdb_test_multiple $cmd $msg { + -re "^$cmd_regex\r\n$gdb_prompt $" { + pass $msg + } + } + + set cmd "show architecture" + gdb_test $cmd \ + "The target architecture is set automatically \\(currently $arch\\)" \ + "$cmd ($which architecture)" + + file delete "tdesc-arch.xml" +} + +set_arch $arch1 first +set_arch $arch2 second + +# Check an invalid architecture setting. +set fd [open "tdesc-arch.xml" w] +puts $fd \ + " + invalid + " +close $fd + +set cmd "set tdesc filename tdesc-arch.xml" +gdb_test $cmd \ + "warning:.*Target description specified unknown architecture.*" \ + "$cmd (invalid architecture)" + +set cmd "show architecture" +gdb_test $cmd \ + "The target architecture is set automatically \\(currently $default_arch\\)" \ + "$cmd (invalid architecture)" + +file delete "tdesc-arch.xml" Index: src/gdb/testsuite/gdb.xml/tdesc-bogus.xml =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.xml/tdesc-bogus.xml 2007-01-11 15:26:41.000000000 -0500 @@ -0,0 +1,3 @@ + + Index: src/gdb/testsuite/gdb.xml/tdesc-errors.exp =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.xml/tdesc-errors.exp 2007-01-11 16:50:01.000000000 -0500 @@ -0,0 +1,49 @@ +# Copyright 2007 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. + +if {[gdb_skip_xml_test]} { + unsupported "tdesc-errors.exp" + return -1 +} + +gdb_start + +proc set_bad_arch { srcfile errmsg } { + global gdb_prompt + global srcdir + global subdir + + # Anchor the test output, so that error messages are detected. + set cmd "set tdesc filename $srcdir/$subdir/$srcfile" + set msg $cmd + set cmd_regex [string_to_regexp $cmd] + gdb_test_multiple $cmd $msg { + -re "^$cmd_regex\r\n$errmsg$gdb_prompt $" { + pass $msg + } + } +} + +set common_warn "\r\nwarning: Could not load XML target description; ignoring\r\n" + +# This file contains a syntax error. We should warn the user about +# it. +set_bad_arch "tdesc-bogus.xml" \ + "warning: while parsing .*: no element found$common_warn" + +# This file contains a bunch of unrecognized elements. They should be +# silently ignored. +set_bad_arch "tdesc-unknown.xml" "" Index: src/gdb/testsuite/gdb.xml/trivial.xml =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.xml/trivial.xml 2007-01-11 15:25:07.000000000 -0500 @@ -0,0 +1 @@ + Index: src/gdb/testsuite/lib/gdb.exp =================================================================== --- src.orig/gdb/testsuite/lib/gdb.exp 2007-01-11 15:25:05.000000000 -0500 +++ src/gdb/testsuite/lib/gdb.exp 2007-01-11 15:25:07.000000000 -0500 @@ -2274,6 +2274,29 @@ proc gdb_skip_bogus_test { msg } { return 0; } +# Return true if a test should be skipped due to lack of XML support +# in the host GDB. + +proc gdb_skip_xml_test { } { + global gdb_prompt + global srcdir + global xml_missing_cached + + if {[info exists xml_missing_cached]} { + return $xml_missing_cached + } + + gdb_start + set xml_missing_cached 0 + gdb_test_multiple "set tdesc filename ${srcdir}/gdb.xml/trivial.xml" "" { + -re ".*XML support was disabled at compile time.*$gdb_prompt $" { + set xml_missing_cached 1 + } + -re ".*$gdb_prompt $" { } + } + gdb_exit + return $xml_missing_cached +} # Note: the procedure gdb_gnu_strip_debug will produce an executable called # ${binfile}.dbglnk, which is just like the executable ($binfile) but without Index: src/gdb/testsuite/gdb.xml/tdesc-unknown.xml =================================================================== --- /dev/null 1970-01-01 00:00:00.000000000 +0000 +++ src/gdb/testsuite/gdb.xml/tdesc-unknown.xml 2007-01-11 15:26:20.000000000 -0500 @@ -0,0 +1,12 @@ + + + + + + + + + + + +