summaryrefslogtreecommitdiff
path: root/testsuite
diff options
context:
space:
mode:
authorSergey Poznyakoff <gray@gnu.org.ua>2002-08-20 20:23:43 +0000
committerSergey Poznyakoff <gray@gnu.org.ua>2002-08-20 20:23:43 +0000
commit41c1f08b9ffcedc1b97d06cd41b9acc96ce6fbd9 (patch)
tree6ee26ee437880027b474cbcf2e664354c9ca7254 /testsuite
parent1e3acbf9ae341fdf9c33a38cf3246fb8dcd06014 (diff)
downloadmailutils-41c1f08b9ffcedc1b97d06cd41b9acc96ce6fbd9.tar.gz
mailutils-41c1f08b9ffcedc1b97d06cd41b9acc96ce6fbd9.tar.bz2
Added to repository
Diffstat (limited to 'testsuite')
-rw-r--r--testsuite/lib/DISTFILES1
-rw-r--r--testsuite/lib/mailutils.exp364
2 files changed, 365 insertions, 0 deletions
diff --git a/testsuite/lib/DISTFILES b/testsuite/lib/DISTFILES
new file mode 100644
index 000000000..805b653c0
--- /dev/null
+++ b/testsuite/lib/DISTFILES
@@ -0,0 +1 @@
+mailutils.exp
diff --git a/testsuite/lib/mailutils.exp b/testsuite/lib/mailutils.exp
new file mode 100644
index 000000000..456c2715c
--- /dev/null
+++ b/testsuite/lib/mailutils.exp
@@ -0,0 +1,364 @@
+# -*- tcl -*-
+# This file is part of Mailutils testsuite.
+# Copyright (C) 2002, Free Software Foundation
+#
+# 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.
+
+verbose "STARTED" 1
+
+proc mu_init {} {
+ global TOOL_EXECUTABLE
+ global MU_TOOL
+ global MU_SPOOL_SOURCE
+ global MU_FOLDER_SOURCE
+ global MU_SPOOL_DIR
+ global MU_FOLDER_DIR
+ global MU_RC_DIR
+ global MU_MAKESPOOL
+ global TOOL_NAME
+ global MU_TOOL_ARGS
+ global base_dir
+ global top_srcdir
+ global objdir
+ global host_board
+
+ if [info exists TOOL_EXECUTABLE] {
+ set MU_TOOL $TOOL_EXECUTABLE
+ }
+
+ if ![info exists MU_TOOL] {
+ if ![is_remote host] {
+ set MU_TOOL [findfile $base_dir/../$TOOL_NAME "$base_dir/../$TOOL_NAME" [transform $TOOL_NAME]]
+ set MU_SPOOL_SOURCE "$top_srcdir/testsuite/spool"
+ set MU_FOLDER_SOURCE "$top_srcdir/testsuite/folder"
+ set MU_SPOOL_DIR "$objdir/data/spool"
+ set MU_FOLDER_DIR "$objdir/data/folder"
+ set MU_RC_DIR "$top_srcdir/testsuite/etc"
+ set MU_MAKESPOOL "$top_srcdir/testsuite/makespool"
+ } else {
+ if [info exists host_board] {
+ if [board_info $host_board exists top_builddir] {
+ append MU_TOOL "[board_info $host_board top_builddir]/$TOOL_NAME/$TOOL_NAME"
+ } elseif [board_info $host_board exists top_srcdir] {
+ append MU_TOOL "[board_info $host_board top_srcdir]/$TOOL_NAME/$TOOL_NAME"
+ }
+ }
+
+ if ![info exists MU_TOOL] {
+ perror "The test suite is not set up for the remote testing"
+ perror "Please, read file README in $TOOL_NAME/testsuite subdirectory"
+ perror "for instructions on how to set up it."
+ exit 1
+ }
+ set MU_RC_DIR "[board_info $host_board top_srcdir]/etc"
+ set MU_SPOOL_SOURCE "[board_info $host_board top_srcdir]/spool"
+ set MU_FOLDER_SOURCE "[board_info $host_board top_srcdir]/folder"
+ set MU_SPOOL_DIR "[board_info $host_board objdir]/data/spool"
+ set MU_FOLDER_DIR "[board_info $host_board objdir]/data/folder"
+ set MU_MAKESPOOL "[board_info $host_board top_srcdir]/makespool"
+ }
+ }
+}
+
+### Only procedures should come after this point.
+
+proc mu_prepare_spools {} {
+ global MU_SPOOL_SOURCE
+ global MU_SPOOL_DIR
+ global MU_FOLDER_SOURCE
+ global MU_FOLDER_DIR
+ global MU_MAKESPOOL
+
+ set output [remote_exec host "$MU_MAKESPOOL \
+ $MU_SPOOL_SOURCE $MU_SPOOL_DIR\
+ $MU_FOLDER_SOURCE $MU_FOLDER_DIR"]
+}
+
+proc mu_cleanup_spools {} {
+ global MU_SPOOL_SOURCE
+ global MU_SPOOL_DIR
+ global MU_FOLDER_SOURCE
+ global MU_FOLDER_DIR
+ global MU_MAKESPOOL
+
+ if { $MU_SPOOL_SOURCE != $MU_SPOOL_DIR } {
+ set output [remote_exec host "$MU_MAKESPOOL -r \
+ $MU_SPOOL_DIR $MU_FOLDER_DIR"]
+ }
+}
+
+proc mu_version {} {
+ global MU_TOOL
+ global MU_TOOL_FLAGS
+ global MU_TOOL_VERSION
+
+ if [info exists MU_TOOL_VERSION] {
+ return
+ }
+
+ set output [remote_exec host "$MU_TOOL --version"]
+ regexp " \[0-9\]\[^ \t\n\r\]+" "$output" MU_TOOL_VERSION
+}
+
+##
+
+proc mu_send { string } {
+ global suppress_flag;
+ if {[info exists suppress_flag] && $suppress_flag} {
+ return "suppressed";
+ }
+ return [remote_send host "$string"]
+}
+
+proc mu_command { cmd } {
+ set res [mu_send "$cmd\n"]
+ mu_expect 30 {
+ -ex "\r\n" { }
+ default {
+ perror "mu_command for target failed";
+ return -1
+ }
+ }
+ return $res
+}
+
+proc mu_expect { args } {
+ global env
+ if { [lindex $args 0] == "-notransfer" } {
+ set notransfer -notransfer;
+ set args [lrange $args 1 end];
+ } else {
+ set notransfer "";
+ }
+
+ if { [llength $args] == 2 && [lindex $args 0] != "-re" } {
+ set gtimeout [lindex $args 0];
+ set expcode [list [lindex $args 1]];
+ } else {
+ upvar timeout timeout;
+
+ set expcode $args;
+ if [target_info exists mailutils,timeout] {
+ if [info exists timeout] {
+ if { $timeout < [target_info mailutils,timeout] } {
+ set gtimeout [target_info mailutils,timeout];
+ } else {
+ set gtimeout $timeout;
+ }
+ } else {
+ set gtimeout [target_info mailutils,timeout];
+ }
+ }
+
+ if ![info exists gtimeout] {
+ global timeout;
+ if [info exists timeout] {
+ set gtimeout $timeout;
+ } else {
+ # Eeeeew.
+ set gtimeout 60;
+ }
+ }
+ }
+
+ global suppress_flag;
+ global remote_suppress_flag;
+ global verbose
+ if [info exists remote_suppress_flag] {
+ set old_val $remote_suppress_flag;
+ }
+ if [info exists suppress_flag] {
+ if { $suppress_flag } {
+ set remote_suppress_flag 1;
+ }
+ }
+
+ verbose "RUNNING remote_expect host $gtimeout $notransfer $expcode" 2
+
+ set code [catch \
+ {uplevel remote_expect host $gtimeout $notransfer $expcode} string];
+ if [info exists old_val] {
+ set remote_suppress_flag $old_val;
+ } else {
+ if [info exists remote_suppress_flag] {
+ unset remote_suppress_flag;
+ }
+ }
+
+ if {$code == 1} {
+ global errorInfo errorCode;
+
+ return -code error -errorinfo $errorInfo -errorcode $errorCode $string
+ } elseif {$code == 2} {
+ return -code return $string
+ } elseif {$code == 3} {
+ return
+ } elseif {$code > 4} {
+ return -code $code $string
+ }
+}
+
+# mu_test COMMAND PATTERN
+# COMMAND - Command to send to mail
+# PATTERN - A list of strings to expect in return
+# Return value:
+# -3 - eof
+# -2 - timeout
+# -1 - generic failure
+# 1 - test fails
+# 0 - test succeeds
+proc mu_test { args } {
+ global verbose
+ global suppress_flag
+ upvar timeout timeout
+
+ set command [lindex $args 0]
+ set pattern [lindex $args 1]
+
+ if { [info exists suppress_flag] && $suppress_flag } {
+ set do_suppress 1
+ } else {
+ set do_suppress 0
+ }
+
+ if $verbose>2 then {
+ send_user "Command: \"$command\"\n"
+ send_user "Pattern: \"$pattern\"\n"
+ }
+
+ set result -1
+ if { "${command}" != "" } {
+ if { [mu_command "${command}"] != "" } {
+ if { ! $do_suppress } {
+ perror "Couldn't send \"$command\".";
+ }
+ return $result;
+ }
+ }
+
+ if [info exists timeout] {
+ set tmt $timeout;
+ } else {
+ global timeout;
+ if [info exists timeout] {
+ set tmt $timeout;
+ } else {
+ set tmt 60;
+ }
+ }
+
+ set result 0
+ for {set i 0} {$i < [llength $pattern]} {incr i} {
+ regsub "\[ \t\]*$" [lindex ${pattern} $i] "" pat
+ verbose "i=$i, pat=$pat" 2
+ mu_expect $tmt {
+ -ex "$pat" {
+ if { $expect_out(buffer) != $expect_out(0,string) } {
+ verbose "Got \"$expect_out(buffer)\"" 2
+ verbose "instead of expected \"$pat\\r\\n\"" 2
+ set result 1
+ break
+ }
+ mu_expect $tmt {
+ -re "\[ \t]*\r\n" { }
+ default {
+ set result 1
+ break
+ }
+ timeout {
+ set result -2
+ break
+ }
+ eof {
+ set result -3
+ break
+ }
+ }
+ }
+ default {
+ set result 1
+ break
+ }
+ timeout {
+ set result -2
+ break
+ }
+ eof {
+ set result -3
+ break
+ }
+ }
+ }
+
+ return $result
+}
+
+proc mu_test_file {args} {
+ global verbose
+
+ set default ""
+ set message ""
+
+ for {set i 0} {$i < [llength $args]} {incr i} {
+ set a [lindex $args $i]
+ if {"$a" == "-default"} {
+ set default [lindex $args [expr $i + 1]]
+ incr i
+ } elseif {"$a" == "-message"} {
+ set message [lindex $args [expr $i + 1]]
+ incr i
+ } else {
+ set args [lrange $args $i end]
+ break
+ }
+ }
+
+ if {"$message" == ""} {
+ set message "Contents of [lindex $args 0]"
+ }
+
+ if $verbose>2 then {
+ send_user "Message is \"$message\"\n"
+ }
+
+ set filename [lindex $args 0]
+ set pattern [lrange $args 1 end]
+
+ set res [remote_spawn host "/bin/cat $filename"]
+ if { $res < 0 || $res == "" } {
+ perror "Reading $filename failed."
+ return 1;
+ }
+ set result [mu_test "" $pattern]
+ if {$result == 0} {
+ pass "$message"
+ } elseif {$result == 1} {
+ if { "$default" == "" || "$default" != "FAIL" } {
+ fail "$message"
+ } else {
+ xfail "$message"
+ set result 0
+ }
+ } elseif {$result == -2} {
+ fail "$message (timeout)"
+ } elseif {$result == -3} {
+ fail "$message (eof)"
+ } else {
+ fail "$message"
+ }
+ return $result
+}
+
+

Return to:

Send suggestions and report system problems to the System administrator.