(testsuite) Fix assert_bash_exec output parameter

Changed `out' parameter of `assert_bash_exec()' to accept also -1 and 0:

@param mixed $out  (optional) Reference to variable to hold output.
    If variable equals -1 (default) the bash command is
    expected to return no output.  If variable equals 0,
    any output from the bash command is disregarded.

This fixes the situation of commit cfcf9fa where contrib/ri was causing
invisible errors when running the test suite.
This commit is contained in:
Freddy Vulto 2009-09-26 11:00:02 +02:00
parent 32f22b996a
commit 9501c0fa90

View File

@ -7,15 +7,20 @@ package require textutil::string
# Execute a bash command and make sure the exit status is succesful. # Execute a bash command and make sure the exit status is succesful.
# The command is expected to return no output. See `assert_bash_exec_out' if
# you want to catch output from the bash command.
# If not, output the error message. # If not, output the error message.
# @param string $cmd Bash command line to execute. If emptry string (""), the # @param string $cmd Bash command line to execute. If emptry string (""), the
# exit status of the previously executed bash command will be # exit status of the previously executed bash command will be
# checked; specify `title' to adorn the error message. # checked; specify `title' to adorn the error message.
# @param string $title (optional) Command title. If empty, `cmd' is used. # @param string $title (optional) Command title. If empty, `cmd' is used.
# @param string $prompt (optional) Bash prompt. Default is "/@" # @param string $prompt (optional) Bash prompt. Default is "/@"
# @param string $stdout (optional) Reference to variable to hold stdout. # @param mixed $out (optional) Reference to variable to hold output.
proc assert_bash_exec {{aCmd ""} {title ""} {prompt /@} {stdout ''}} { # If variable equals -1 (default) the bash command is expected
upvar $stdout results # to return no output. If variable equals 0, any output
# from the bash command is disregarded.
proc assert_bash_exec {{aCmd ""} {title ""} {prompt /@} {out -1}} {
if {$out != 0 && $out != -1} {upvar $out results}
if {[string length $aCmd] != 0} { if {[string length $aCmd] != 0} {
send "$aCmd\r" send "$aCmd\r"
expect -ex "$aCmd\r\n" expect -ex "$aCmd\r\n"
@ -29,6 +34,12 @@ proc assert_bash_exec {{aCmd ""} {title ""} {prompt /@} {stdout ''}} {
expr [string length $results] - [string length "/@"] - 1 expr [string length $results] - [string length "/@"] - 1
] ]
] ]
if {$out == -1 && [string length $results] > 0} {
if {[info exists multipass_name]} {
fail "ERROR Unexpected output from bash command \"$title\""
}; # if
send_user "ERROR Unexpected output from bash command \"$title\":\n$results"
}; # if
set cmd "echo $?" set cmd "echo $?"
send "$cmd\r" send "$cmd\r"
@ -38,7 +49,7 @@ proc assert_bash_exec {{aCmd ""} {title ""} {prompt /@} {stdout ''}} {
if {[info exists multipass_name]} { if {[info exists multipass_name]} {
fail "ERROR executing bash command \"$title\"" fail "ERROR executing bash command \"$title\""
}; # if }; # if
send_user "ERROR executing bash command \"$title\"\n$stdout" send_user "ERROR executing bash command \"$title\""
} }
}; # expect }; # expect
}; # assert_bash_exec() }; # assert_bash_exec()