|
Packit |
62fe53 |
# Copyright (C) 1992-2016 Free Software Foundation, Inc.
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# This file is part of DejaGnu.
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# DejaGnu is free software; you can redistribute it and/or modify it
|
|
Packit |
62fe53 |
# under the terms of the GNU General Public License as published by
|
|
Packit |
62fe53 |
# the Free Software Foundation; either version 3 of the License, or
|
|
Packit |
62fe53 |
# (at your option) any later version.
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# DejaGnu is distributed in the hope that it will be useful, but
|
|
Packit |
62fe53 |
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
Packit |
62fe53 |
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Packit |
62fe53 |
# General Public License for more details.
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# You should have received a copy of the GNU General Public License
|
|
Packit |
62fe53 |
# along with DejaGnu; if not, write to the Free Software Foundation,
|
|
Packit |
62fe53 |
# Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# Setup an environment so we can execute library procs without DejaGnu.
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# Create a default environment and start expect.
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
proc make_defaults_file { defs } {
|
|
Packit |
62fe53 |
global srcdir
|
|
Packit |
62fe53 |
global objdir
|
|
Packit |
62fe53 |
global subdir
|
|
Packit |
62fe53 |
global build_triplet
|
|
Packit |
62fe53 |
global host_triplet
|
|
Packit |
62fe53 |
global target_triplet
|
|
Packit |
62fe53 |
global target_os
|
|
Packit |
62fe53 |
global target_cpu
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# We need to setup default values and a few default procs so we
|
|
Packit |
62fe53 |
# can execute library code without DejaGnu
|
|
Packit |
62fe53 |
set fd [open $defs w]
|
|
Packit |
62fe53 |
puts ${fd} "set tool foobar"
|
|
Packit |
62fe53 |
puts ${fd} "set srcdir ${srcdir}"
|
|
Packit |
62fe53 |
puts ${fd} "set objdir ${objdir}"
|
|
Packit |
62fe53 |
puts ${fd} "set subdir ${subdir}"
|
|
Packit |
62fe53 |
puts ${fd} "set build_triplet ${build_triplet}"
|
|
Packit |
62fe53 |
puts ${fd} "set host_triplet ${host_triplet}"
|
|
Packit |
62fe53 |
puts ${fd} "set target_triplet ${target_triplet}"
|
|
Packit |
62fe53 |
puts ${fd} "set target_os ${target_os}"
|
|
Packit |
62fe53 |
puts ${fd} "set target_cpu ${target_cpu}"
|
|
Packit |
62fe53 |
puts ${fd} "set testcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set warncnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set errcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set passcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set xpasscnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set kpasscnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set failcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set xfailcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set kfailcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set prms_id 0"
|
|
Packit |
62fe53 |
puts ${fd} "set bug_id 0"
|
|
Packit |
62fe53 |
puts ${fd} "set exit_status 0"
|
|
Packit |
62fe53 |
puts ${fd} "set untestedcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set unresolvedcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set unsupportedcnt 0"
|
|
Packit |
62fe53 |
puts ${fd} "set xfail_flag 0"
|
|
Packit |
62fe53 |
puts ${fd} "set xfail_prms 0"
|
|
Packit |
62fe53 |
puts ${fd} "set kfail_flag 0"
|
|
Packit |
62fe53 |
puts ${fd} "set kfail_prms 0"
|
|
Packit |
62fe53 |
puts ${fd} "set mail_logs 0"
|
|
Packit |
62fe53 |
puts ${fd} "set multipass_name 0"
|
|
Packit |
62fe53 |
catch "close $fd"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
proc start_expect { } {
|
|
Packit |
62fe53 |
global spawn_id
|
|
Packit |
62fe53 |
global base_dir
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# We need to setup default values and a few default procs so we
|
|
Packit |
62fe53 |
# can execute library code without DejaGnu
|
|
Packit |
62fe53 |
set defaults_file setval.tmp
|
|
Packit |
62fe53 |
make_defaults_file $defaults_file
|
|
Packit |
62fe53 |
set fd [open ${defaults_file} w]
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# look for expect
|
|
Packit |
62fe53 |
if ![info exists EXPECT] {
|
|
Packit |
62fe53 |
set EXPECT [findfile $base_dir/../../expect/expect "$base_dir/../../expect/expect" expect]
|
|
Packit |
62fe53 |
verbose "EXPECT defaulting to $EXPECT" 2
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# catch close
|
|
Packit |
62fe53 |
# catch wait
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# Start expect runing
|
|
Packit |
62fe53 |
spawn "$EXPECT"
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
-re "expect.*> " {
|
|
Packit |
62fe53 |
verbose "Started the child expect shell" 2
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
perror "Timed out starting the child expect shell."
|
|
Packit |
62fe53 |
return -1
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# Load the defaults file
|
|
Packit |
62fe53 |
exp_send "source ${defaults_file}\n"
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
"expect*> " {
|
|
Packit |
62fe53 |
verbose "Loaded testing defaults file." 2
|
|
Packit |
62fe53 |
return 1
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
perror "Couldn't load the testing defaults file."
|
|
Packit |
62fe53 |
return -1
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# Stop the runing expect process
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
proc stop_expect { } {
|
|
Packit |
62fe53 |
global spawn_id
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# make expect exit
|
|
Packit |
62fe53 |
exp_send "exit\n"
|
|
Packit |
62fe53 |
catch "close -i $spawn_id"
|
|
Packit |
62fe53 |
catch "wait -i $spawn_id"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# Load the library to test
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
proc load_test_lib { lib } {
|
|
Packit |
62fe53 |
global spawn_id
|
|
Packit |
62fe53 |
exp_send "source ${lib}\n"
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
"expect*> " {
|
|
Packit |
62fe53 |
verbose "Testing ${lib}" 2
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
perror "Couldn't load the libraries to test"
|
|
Packit |
62fe53 |
return -1
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
# test a library proc that emits patterns
|
|
Packit |
62fe53 |
#
|
|
Packit |
62fe53 |
proc exp_test { cmd pattern msg } {
|
|
Packit |
62fe53 |
global spawn_id
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
exp_send "puts ACK ; $cmd ; puts NAK\r\n"
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
"puts ACK*puts NAK" {
|
|
Packit |
62fe53 |
verbose "Got command echo" 3
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
warning "Never got command echo"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
"ACK" {
|
|
Packit |
62fe53 |
exp_continue
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
-re "\r\n1\r\n" {
|
|
Packit |
62fe53 |
warning "$msg, 1 was returned"
|
|
Packit |
62fe53 |
exp_continue
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
-re "\r\n0\r\n" {
|
|
Packit |
62fe53 |
warning "$msg, 0 was returned"
|
|
Packit |
62fe53 |
exp_continue
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
"$pattern" {
|
|
Packit |
62fe53 |
pass "$msg"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
fail "$msg"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
# test a config proc that only returns a code
|
|
Packit |
62fe53 |
# ex... config_test "isbuild $build_triplet" "pass" "fail" "isbuild, native"
|
|
Packit |
62fe53 |
# args are: command, true condition, false condition, message to print
|
|
Packit |
62fe53 |
proc config_test { cmd true false msg } {
|
|
Packit |
62fe53 |
global spawn_id
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
set timeout 20
|
|
Packit |
62fe53 |
exp_send "puts ACK ; puts \[$cmd\] ; puts NAK\r\n"
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
"puts ACK*$cmd*puts NAK" {
|
|
Packit |
62fe53 |
verbose "Got command echo" 3
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
warning "Never got command echo"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
|
|
Packit |
62fe53 |
expect {
|
|
Packit |
62fe53 |
-re "Checking pattern*with*\[\r\n\]" {
|
|
Packit |
62fe53 |
exp_continue
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
-re "\r\n1\r\n" {
|
|
Packit |
62fe53 |
$true "$msg"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
-re "\r\n0\r\n" {
|
|
Packit |
62fe53 |
$false "$msg"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
timeout {
|
|
Packit |
62fe53 |
perror "$msg (timed out)"
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|
|
Packit |
62fe53 |
}
|