| # Copyright (C) 92, 93, 94, 95, 96, 97, 98, 1999 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) |
| |
| # |
| # Run a utility and test the result. |
| # |
| # Parameters: |
| # First one is the command |
| # Second one is command arguments |
| # Third one is the file name |
| # Fourth one is the regexp style pattern to match for a PASS |
| # |
| # 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 [info exists file] { |
| if ![string match "" $file] { |
| if ![file exists $file] { |
| perror "$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] |
| |
| verbose "Output is \"$comp_output\"" 2 |
| verbose "Pattern is \"$pattern\"" 2 |
| |
| if [regexp "$pattern" $comp_output] { |
| verbose "Pattern matches." 2 |
| return 0 |
| } |
| |
| verbose "Pattern does not match." 2 |
| return 1 |
| } |
| |
| # |
| # Run the utility |
| # |
| # Return NULL or the output. |
| # |
| |
| proc util_start { args } { |
| global verbose |
| set cmd [lindex $args 0] |
| set cmd_arg [lindex $args 1] |
| set file [lindex $args 2] |
| |
| if {[which $cmd] == 0} { |
| perror "Can't find $cmd" |
| return "" |
| } |
| |
| if { $verbose > 0 } { |
| verbose "Spawning \"$cmd $cmd_arg $file\"" |
| } else { |
| send_log "Spawning \"$cmd $cmd_arg $file\"\n" |
| } |
| catch "exec $cmd $cmd_arg $file" comp_output |
| if ![string match "" $comp_output] { |
| send_log "$comp_output\n" |
| } |
| return $comp_output |
| } |