From a54a5a9ebcc9143c17635efd0ed06bafa8f3b03b Mon Sep 17 00:00:00 2001 From: Rob Savoye Date: Thu, 8 Apr 1993 05:26:10 +0000 Subject: Rename to util-defs.exp and turn into generic procedures. --- binutils/testsuite/lib/nm-defs.exp | 156 ----------------------------------- binutils/testsuite/lib/util-defs.exp | 112 +++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 156 deletions(-) delete mode 100644 binutils/testsuite/lib/nm-defs.exp create mode 100755 binutils/testsuite/lib/util-defs.exp diff --git a/binutils/testsuite/lib/nm-defs.exp b/binutils/testsuite/lib/nm-defs.exp deleted file mode 100644 index 733612c..0000000 --- a/binutils/testsuite/lib/nm-defs.exp +++ /dev/null @@ -1,156 +0,0 @@ -# Copyright (C) 1988, 1990, 1991, 1992 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ - -# Please email any bugs, comments, and/or additions to this file to: -# DejaGnu@cygnus.com - -# This file was written by Rob Savoye. (rob@cygnus.com) - -# -# nm_test -- run nm and test the result. -# Takes four parameters. -# Parameters: -# First one is the command line arguments -# Second one is the file name -# Third one is the regexp style pattern to match for a PASS, -# Fourth one is an optional message to be printed. If this -# a null string "", then the pass/fail messages are not printed. -# Returns: -# 1 if the test failed, -# 0 if the test passes, -# -1 if there was an internal error. -# -proc nm_test { args } { - global verbose - global comp_output - global NM - global NMFLAGS - - # get the parameters - set cmd_arg [lindex $args 0] - set file [lindex $args 1] - set pattern [lindex $args 2] - - if [llength $args]==4 then { - set message [lindex $args 3] - } else { - set message "$arg option" - } - - if $verbose>2 then { - send_user "Looking to match \"$pattern\"\n" - send_user "Message is \"$message\"\n" - } - - if ![file exists $file] then { - error "$file doesn't exist" - return -1 - } - -# -# run nm and analyze the results -# - set nm_flags_orig $NMFLAGS - append NMFLAGS " $cmd_arg" - nm_start $file - - if [string match "" $comp_output] then { - fail "$message" - warning "Got no output." - set NMFLAGS $nm_flags_orig - return 1 - } - - if [regexp "$pattern" $comp_output] then { - pass "$message" - set NMFLAGS $nm_flags_orig - return 0 - } - - fail "$message" - set NMFLAGS $nm_flags_orig - return 1 -} - -# since nm is purely host based, all the init module use these -# same procedures - -# -# default_nm_version -- extract and print the version number of nm -# -proc default_nm_version {} { - global NM - set tmp [exec $NM +version] - regexp " \[0-9\.\]+" $tmp version - clone_output "[which $NM] version $version\n" - unset tmp - unset version -} - -# -# default_nm_load -- loads the program. For nm, we just execute it -# -proc default_nm_load { arg } { - global verbose - global exec_output - if ![file exists $args] then { - error $args does not exist" - return -1 - } - set status [catch "exec $arg" exec_output] - if $verbose>1 then { - send_user "Executed $arg\n" - } - return $status -} - -# -# default_nm_exit -- just a stub for nm -# -proc default_nm_exit {} { -} - -# -# nm_start -- start GDB running -# -proc default_nm_start { arg } { - global verbose - global NM - global NMFLAGS - global comp_output - - if $verbose>1 then { - send_user "Spawning \"$NM $NMFLAGS $arg\"\n" - } - catch "exec $NM $NMFLAGS $arg" comp_output - if ![string match "" $comp_output] then { - send_log "$comp_output\n" - if $verbose>3 then { - send_user "$comp_output\n" - } - } -} - -# -# add some basic error trapping. These mostly catch programming error's -# within the tests themselves -# -expect_before { - buffer_full { error "Internal buffer is full" } - "can't open 'nmtest'" { error "Can't open test file" } -} - - diff --git a/binutils/testsuite/lib/util-defs.exp b/binutils/testsuite/lib/util-defs.exp new file mode 100755 index 0000000..4a2f013 --- /dev/null +++ b/binutils/testsuite/lib/util-defs.exp @@ -0,0 +1,112 @@ +# Copyright (C) 1988, 1990, 1991, 1992 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., 675 Mass Ave, Cambridge, MA 02139, USA. */ + +# Please email any bugs, comments, and/or additions to this file to: +# bug-dejagnu@prep.ai.mit.edu + +# This file was written by Rob Savoye. (rob@cygnus.com) + +# +# util_test -- run a utility and test the result. +# Takes four parameters. +# Parameters: +# First one is the command line arguments +# Second one is the file name +# Third one is the regexp style pattern to match for a PASS, +# Fourth one is an optional message to be printed. If this +# a null string "", then the pass/fail messages are not printed. +# Returns: +# 1 if the test failed, +# 0 if the test passes, +# -1 if there was an internal error. +# +proc util_test { args } { + global verbose + + # get the parameters + set cmd [lindex $args 0] + verbose "Utility to execute is $cmd" 2 + set cmd_arg [lindex $args 1] + verbose "Command line arguments are $cmd_arg" 2 + set file [lindex $args 2] + verbose "The file name to use is $file" 2 + set pattern [lindex $args 3] + verbose "The pattern to match is \"$pattern\"" 2 + + if [llength $args]==5 then { + set message [lindex $args 4] + } else { + set message "$arg option" + } + + verbose "Looking to match \"$pattern\"\nMessage is \"$message\"" 1 + + if ![file exists $file] then { + error "$file doesn't exist" + return -1 + } + +# +# run the utility to be tested and analyze the results +# + set comp_output [util_start $cmd $cmd_arg $file] + + if [regexp "$pattern" $comp_output] then { + pass "$message" + return 0 + } + + if [string match "" $comp_output] then { + warning "Got no output." + return 1 + } + + fail "$message" + return 1 +} + +# util_start -- run the utility. +# return NULL or the output +# +proc util_start { args } { + set cmd [lindex $args 0] + set cmd_arg [lindex $args 1] + set file [lindex $args 2] + + if {[which $cmd] == 0} then { + error "Can't find $cmd" + return "" + } + + verbose "Spawning \"$cmd $cmd_arg $file\"" 1 + catch "exec $cmd $cmd_arg $file" comp_output + if ![string match "" $comp_output] then { + send_log "$comp_output\n" + verbose "$comp_output" 1 + } + return $comp_output +} + +# +# add some basic error trapping. These mostly catch programming error's +# within the tests themselves +# +expect_before { + buffer_full { error "Internal buffer is full" } + "can't open 'nmtest'" { error "Can't open test file" } +} + + -- cgit v1.1