aboutsummaryrefslogtreecommitdiff
path: root/contrib/bluegnu2.0.3/lib/framework.exp
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/bluegnu2.0.3/lib/framework.exp')
-rw-r--r--contrib/bluegnu2.0.3/lib/framework.exp677
1 files changed, 0 insertions, 677 deletions
diff --git a/contrib/bluegnu2.0.3/lib/framework.exp b/contrib/bluegnu2.0.3/lib/framework.exp
deleted file mode 100644
index 5491274..0000000
--- a/contrib/bluegnu2.0.3/lib/framework.exp
+++ /dev/null
@@ -1,677 +0,0 @@
-# Copyright (C) 92, 93, 94, 95, 1996 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@welcomehome.org)
-
-# These variables are local to this file.
-# This or more warnings and a test fails.
-set warning_threshold 3
-# This or more errors and a test fails.
-set perror_threshold 1
-
-proc mail_file { file to subject } {
- if [file readable $file] {
- catch "exec mail -s \"$subject\" $to < $file"
- }
-}
-
-#
-# Open the output logs
-#
-proc open_logs { } {
- global outdir
- global tool
- global sum_file
-
- if { ${tool} == "" } {
- set tool testrun
- }
- catch "exec rm -f $outdir/$tool.sum"
- set sum_file [open "$outdir/$tool.sum" w]
- catch "exec rm -f $outdir/$tool.log"
- log_file -a "$outdir/$tool.log"
- verbose "Opening log files in $outdir"
- if { ${tool} == "testrun" } {
- set tool ""
- }
-}
-
-
-#
-# Close the output logs
-#
-proc close_logs { } {
- global sum_file
-
- catch "close $sum_file"
-}
-
-#
-# Check build host triplet for pattern
-#
-# With no arguments it returns the triplet string.
-#
-proc isbuild { args } {
- global build_triplet
- global host_triplet
-
- if ![info exists build_triplet] {
- set build_triplet ${host_triplet}
- }
- if [string match "" $args] {
- return $build_triplet
- }
- verbose "Checking pattern \"$args\" with $build_triplet" 2
-
- if [string match "$args" $build_triplet] {
- return 1
- } else {
- return 0
- }
-}
-
-#
-# If this is a canadian (3 way) cross. This means the tools are
-# being built with a cross compiler for another host.
-#
-proc is3way {} {
- global host_triplet
- global build_triplet
-
- if ![info exists build_triplet] {
- set build_triplet ${host_triplet}
- }
- verbose "Checking $host_triplet against $build_triplet" 2
- if { "$build_triplet" == "$host_triplet" } {
- return 0
- }
- return 1
-}
-
-#
-# Check host triplet for pattern
-#
-# With no arguments it returns the triplet string.
-#
-proc ishost { args } {
- global host_triplet
-
- if [string match "" $args] {
- return $host_triplet
- }
- verbose "Checking pattern \"$args\" with $host_triplet" 2
-
- if [string match "$args" $host_triplet] {
- return 1
- } else {
- return 0
- }
-}
-
-#
-# Check target triplet for pattern
-#
-# With no arguments it returns the triplet string.
-# Returns 1 if the target looked for, or 0 if not.
-#
-proc istarget { args } {
- global target_triplet
-
- # if no arg, return the config string
- if [string match "" $args] {
- if [info exists target_triplet] {
- return $target_triplet
- } else {
- perror "No target configuration names found."
- }
- }
-
- # now check against the cannonical name
- if [info exists target_triplet] {
- verbose "Checking \"$args\" against \"$target_triplet\"" 2
- if [string match "$args" $target_triplet] {
- return 1
- }
- }
-
- # nope, no match
- return 0
-}
-
-#
-# Check to see if we're running the tests in a native environment
-#
-# Returns 1 if running native, 0 if on a target.
-#
-proc isnative { } {
- global target_triplet
- global build_triplet
-
- if [string match $build_triplet $target_triplet] {
- return 1
- }
- return 0
-}
-
-#
-# unknown -- called by expect if a proc is called that doesn't exist
-#
-proc unknown { args } {
- global errorCode
- global errorInfo
-
- clone_output "ERROR: (DejaGnu) proc \"$args\" does not exist."
- if [info exists errorCode] {
- send_error "The error code is $errorCode\n"
- }
- if [info exists errorInfo] {
- send_error "The info on the error is:\n$errorInfo\n"
- }
-
- log_summary
-}
-
-#
-# Print output to stdout (or stderr) and to log file
-#
-# If the --all flag (-a) option was used then all messages go the the screen.
-# Without this, all messages that start with a keyword are written only to the
-# detail log file. All messages that go to the screen will also appear in the
-# detail log. This should only be used by the framework itself using pass,
-# fail, xpass, xfail, warning, perror, note, untested, unresolved, or
-# unsupported procedures.
-#
-proc clone_output { message } {
- global sum_file
- global all_flag
-
- puts $sum_file "$message"
- case [lindex $message 0] in {
- {"PASS:" "XFAIL:" "UNRESOLVED:" "UNSUPPORTED:" "UNTESTED:"} {
- if $all_flag {
- send_user "$message\n"
- return "$message"
- } else {
- send_log "$message\n"
- }
- }
- {"ERROR:" "WARNING:" "NOTE:"} {
- send_error "$message\n"
- return "$message"
- }
- default {
- send_user "$message\n"
- return "$message"
- }
- }
-}
-
-#
-# Reset all globally used variables
-#
-proc reset_vars {} {
- # test result counters
- global testcnt
- global failcnt
- global passcnt
- global xfailcnt
- global xpasscnt
- global untestedcnt
- global unresolvedcnt
- global unsupportedcnt
-
- # other miscellaneous variables
- global prms_id
- global bug_id
-
- # reset them all
- set prms_id 0
- set bug_id 0
- set testcnt 0
- set failcnt 0
- set passcnt 0
- set xfailcnt 0
- set xpasscnt 0
- set untestedcnt 0
- set unresolvedcnt 0
- set unsupportedcnt 0
-
- # Variables local to this file.
- global warning_threshold perror_threshold
- set warning_threshold 3
- set perror_threshold 1
-}
-
-#
-# Print summary of all pass/fail counts
-#
-# Calling this exits.
-#
-proc log_summary {} {
- global tool
- global sum_file
- global exit_status
- global failcnt
- global passcnt
- global testcnt
- global xfailcnt
- global xpasscnt
- global untestedcnt
- global unresolvedcnt
- global unsupportedcnt
- global mail_logs
- global outdir
- global mailing_list
-
- clone_output "\n\t\t=== $tool Summary ===\n"
-
- # If the tool set `testcnt', it wants us to do a sanity check on the
- # total count, so compare the reported number of testcases with the
- # expected number. Maintaining an accurate count in `testcnt' isn't easy
- # so it's not clear how often this will be used.
- if { $testcnt > 0 } {
- # total all the testcases reported
- set totlcnt [expr $failcnt+$passcnt+$xfailcnt+$xpasscnt]
- set totlcnt [expr $totlcnt+$untestedcnt+$unresolvedcnt+$unsupportedcnt]
-
- if { $testcnt>$totlcnt || $testcnt<$totlcnt } {
- if { $testcnt > $totlcnt } {
- set mismatch "unreported [expr $testcnt-$totlcnt]"
- }
- if { $testcnt < $totlcnt } {
- set mismatch "misreported [expr $totlcnt-$testcnt]"
- }
- } else {
- verbose "# of testcases run $testcnt"
- }
-
- if [info exists mismatch] {
- clone_output "### ERROR: totals do not equal number of testcases run"
- clone_output "### ERROR: # of testcases expected $testcnt"
- clone_output "### ERROR: # of testcases reported $totlcnt"
- clone_output "### ERROR: # of testcases $mismatch\n"
- }
- }
-
- if { $passcnt > 0 } {
- clone_output "# of expected passes $passcnt"
- }
- if { $xfailcnt > 0 } {
- clone_output "# of expected failures $xfailcnt"
- }
- if { $xpasscnt > 0 } {
- clone_output "# of unexpected successes $xpasscnt"
- }
- if { $failcnt > 0 } {
- clone_output "# of unexpected failures $failcnt"
- }
- if { $unresolvedcnt > 0 } {
- clone_output "# of unresolved testcases $unresolvedcnt"
- }
- if { $untestedcnt > 0 } {
- clone_output "# of untested testcases $untestedcnt"
- }
- if { $unsupportedcnt > 0 } {
- clone_output "# of unsupported tests $unsupportedcnt"
- }
- # extract version number
- if {[info procs ${tool}_version] != ""} {
- if {[catch "${tool}_version" output]} {
- warning "${tool}_version failed:\n$output"
- }
- }
- close_logs
- cleanup
- if $mail_logs {
- mail_file $outdir/$tool.sum $mailing_list "Dejagnu Summary Log"
- }
- exit $exit_status
-}
-
-#
-# Close all open files, remove temp file and core files
-#
-proc cleanup {} {
- global sum_file
- global exit_status
- global done_list
- global base_dir
- global subdir
-
- #catch "exec rm -f [glob xgdb core *.x *.o *_soc a.out]"
- #catch "exec rm -f [glob -nocomplain $subdir/*.o $subdir/*.x $subdir/*_soc]"
-}
-
-#
-# Setup a flag to control whether a failure is expected or not
-#
-# Multiple target triplet patterns can be specified for targets
-# for which the test fails. A decimal number can be specified,
-# which is the PRMS number.
-#
-proc setup_xfail { args } {
- global xfail_flag
- global xfail_prms
-
- set xfail_prms 0
- set argc [ llength $args ]
- for { set i 0 } { $i < $argc } { incr i } {
- set sub_arg [ lindex $args $i ]
- # is a prms number. we assume this is a number with no characters
- if [regexp "^\[0-9\]+$" $sub_arg] {
- set xfail_prms $sub_arg
- continue
- }
- if [istarget $sub_arg] {
- set xfail_flag 1
- continue
- }
- }
-}
-
-#
-# Clear the xfail flag for a particular target
-#
-proc clear_xfail { args } {
- global xfail_flag
- global xfail_prms
-
- set argc [ llength $args ]
- for { set i 0 } { $i < $argc } { incr i } {
- set sub_arg [ lindex $args $i ]
- case $sub_arg in {
- "*-*-*" { # is a configuration triplet
- if [istarget $sub_arg] {
- set xfail_flag 0
- set xfail_prms 0
- }
- continue
- }
- }
- }
-}
-
-#
-# Record that a test has passed or failed (perhaps unexpectedly)
-#
-# This is an internal procedure, only used in this file.
-#
-proc record_test { type message } {
- global passcnt failcnt xpasscnt xfailcnt
- global untestedcnt unresolvedcnt unsupportedcnt
- global exit_status
- global prms_id bug_id
- global xfail_flag xfail_prms
- global errcnt warncnt
- global warning_threshold perror_threshold
-
- # If we have too many warnings or errors,
- # the output of the test can't be considered correct.
- if { $warning_threshold > 0 && $warncnt >= $warning_threshold
- || $perror_threshold > 0 && $errcnt >= $perror_threshold } {
- # Reset these first to prevent infinite recursion.
- set warncnt 0
- set errcnt 0
- unresolved $message
- return
- }
-
- switch $type {
- PASS {
- incr passcnt
- if $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- FAIL {
- incr failcnt
- set exit_status 1
- if $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- XPASS {
- incr xpasscnt
- set exit_status 1
- if { $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- }
- }
- XFAIL {
- incr xfailcnt
- if { $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- }
- }
- UNTESTED {
- incr untestedcnt
- # The only reason we look at the xfail stuff is to pick up
- # `xfail_prms'.
- if { $xfail_flag && $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- } elseif $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- UNRESOLVED {
- incr unresolvedcnt
- set exit_status 1
- # The only reason we look at the xfail stuff is to pick up
- # `xfail_prms'.
- if { $xfail_flag && $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- } elseif $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- UNSUPPORTED {
- incr unsupportedcnt
- # The only reason we look at the xfail stuff is to pick up
- # `xfail_prms'.
- if { $xfail_flag && $xfail_prms != 0 } {
- set message [concat $message "\t(PRMS $xfail_prms)"]
- } elseif $prms_id {
- set message [concat $message "\t(PRMS $prms_id)"]
- }
- }
- default {
- perror "record_test called with bad type `$type'"
- set errcnt 0
- return
- }
- }
-
- if $bug_id {
- set message [concat $message "\t(BUG $bug_id)"]
- }
-
- global multipass_name
- if { $multipass_name != "" } {
- clone_output "$type: $multipass_name: $message"
- } else {
- clone_output "$type: $message"
- }
-
- # Reset these so they're ready for the next test case. We don't reset
- # prms_id or bug_id here. There may be multiple tests for them. Instead
- # they are reset in the main loop after each test. It is also the
- # testsuite driver's responsibility to reset them after each testcase.
- set warncnt 0
- set errcnt 0
- set xfail_flag 0
- set xfail_prms 0
-}
-
-#
-# Record that a test has passed
-#
-proc pass { message } {
- global xfail_flag
-
- if $xfail_flag {
- record_test XPASS $message
- } else {
- record_test PASS $message
- }
-}
-
-#
-# Record that a test has failed
-#
-proc fail { message } {
- global xfail_flag
-
- if $xfail_flag {
- record_test XFAIL $message
- } else {
- record_test FAIL $message
- }
-}
-
-#
-# Record that a test has passed unexpectedly
-#
-proc xpass { message } {
- record_test XPASS $message
-}
-
-#
-# Record that a test has failed unexpectedly
-#
-proc xfail { message } {
- record_test XFAIL $message
-}
-
-#
-# Set warning threshold
-#
-proc set_warning_threshold { threshold } {
- set warning_threshold $threshold
-}
-
-#
-# Get warning threshold
-#
-proc get_warning_threshold { } {
- return $warning_threshold
-}
-
-#
-# Prints warning messages
-# These are warnings from the framework, not from the tools being tested.
-# It takes a string, and an optional number and returns nothing.
-#
-proc warning { args } {
- global warncnt
- global errno
-
- if { [llength $args] > 1 } {
- set warncnt [lindex $args 1]
- } else {
- incr warncnt
- }
- set message [lindex $args 0]
-
- clone_output "WARNING: $message"
- set errno "WARNING: $message"
-
- global errorInfo
- if [info exists errorInfo] {
- unset errorInfo
- }
-}
-
-#
-# Prints error messages
-# These are errors from the framework, not from the tools being tested.
-# It takes a string, and an optional number and returns nothing.
-#
-proc perror { args } {
- global errcnt
- global errno
-
- if { [llength $args] > 1 } {
- set errcnt [lindex $args 1]
- } else {
- incr errcnt
- }
- set message [lindex $args 0]
-
- clone_output "ERROR: $message"
- set errno "ERROR: $message"
-
- global errorInfo
- if [info exists errorInfo] {
- unset errorInfo
- }
-}
-
-#
-# Prints informational messages
-#
-# These are messages from the framework, not from the tools being tested.
-# This means that it is currently illegal to call this proc outside
-# of dejagnu proper.
-#
-proc note { message } {
- clone_output "NOTE: $message"
-
- # ??? It's not clear whether we should do this. Let's not, and only do
- # so if we find a real need for it.
- #global errorInfo
- #if [info exists errorInfo] {
- # unset errorInfo
- #}
-}
-
-#
-# untested -- mark the test case as untested
-#
-proc untested { message } {
- record_test UNTESTED $message
-}
-
-#
-# Mark the test case as unresolved
-#
-proc unresolved { message } {
- record_test UNRESOLVED $message
-}
-
-#
-# Mark the test case as unsupported
-#
-# Usually this is used for a test that is missing OS support.
-#
-proc unsupported { message } {
- record_test UNSUPPORTED $message
-}
-
-
-#
-# Create an exp_continue proc if it doesn't exist
-#
-# For compatablity with old versions.
-#
-global argv0
-if ![info exists argv0] {
- proc exp_continue { } {
- continue -expect
- }
-}