1#   Copyright (C) 1988, 1990, 1991, 1992 Free Software Foundation, Inc.
2
3# This program is free software; you can redistribute it and/or modify
4# it under the terms of the GNU General Public License as published by
5# the Free Software Foundation; either version 2 of the License, or
6# (at your option) any later version.
7#
8# This program is distributed in the hope that it will be useful,
9# but WITHOUT ANY WARRANTY; without even the implied warranty of
10# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
11# GNU General Public License for more details.
12#
13# You should have received a copy of the GNU General Public License
14# along with this program; if not, write to the Free Software
15# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
16
17# Please email any bugs, comments, and/or additions to this file to:
18# bug-dejagnu@prep.ai.mit.edu
19
20# This file was written by Rob Savoye. (rob@cygnus.com)
21
22global EXPECT
23if ![info exists EXPECT] then {
24    set EXPECT $objdir/expect
25}
26
27set eprompt "expect\[0-9.\]*> "
28global eprompt
29
30#
31# expect_version -- extract and print the version number of expect
32#
33proc expect_version { } {
34    global EXPECT
35
36    catch {exec echo "puts \[exp_version\]\n" | $EXPECT} version
37    if [info exists version] then {
38	clone_output "[which $EXPECT] version is $version\n"
39    unset version
40}
41}
42
43#
44# expect_exit -- exit the test driver for expect
45#
46proc expect_exit {} {
47}
48
49#
50# expect_start -- start expect
51#
52proc expect_start { } {
53    global spawn_id
54    global srcdir
55    global EXPECT
56    global eprompt
57    global objdir
58
59    set defs    "$srcdir/../tests/defs"
60
61    if {[which $EXPECT] != 0} then {
62    spawn $EXPECT
63    } else {
64	error "Can't find $EXPECT"
65    }
66
67    expect {
68	-re "expect.*> " {
69	    verbose "Started the child expect shell"
70	}
71	timeout {
72	    error "Timed out starting the child expect shell."
73	}
74    }
75
76    exp_send "set objdir $objdir\r"
77    verbose "Sourcing $defs..."
78    exp_send "source $defs\r"
79    expect {
80        -re ".*source $defs.*$" {
81            verbose "Sourced $defs"
82        }
83        "Error: couldn't read file*" {
84            error "Couldn't source $defs"
85            return -1
86        }
87        -re "$eprompt" {
88            verbose "Got prompt, sourced $defs"
89            }
90        timeout {
91            error "Timed out sourcing $defs."
92            return 1
93        }
94    }
95
96    sleep 2
97    exp_send "set VERBOSE 1\r"
98    expect {
99        -re "set VERBOSE 1\[\r\n\]*1\[\r\n\]*$eprompt" {
100            verbose "Set verbose flag for tests"
101        }
102        timeout {
103            perror "Timed out setting verbose flag."
104        }
105    }
106    return $spawn_id
107}
108