1 # Copyright
2016-2019 Free Software Foundation
, Inc.
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
3 of the License
, or
6 #
(at your option
) any later version.
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.
13 # You should have received a copy of the GNU General Public License
14 # along with this
program.
If not
, see
<http
://www.gnu.org
/licenses
/>.
18 set compile_options
"debug"
19 if {[build_executable $testfile.exp $testfile $
{srcfile
} $
{compile_options
}] == -1} {
20 untested
"failed to compile"
24 # Ensure no output has been sent. Use MESSAGE as test message.
26 proc ensure_no_output
{message
} {
29 # Run a command and use an anchor to make sure no output appears
30 # before the command
's expected output.
31 gdb_test "print 999" "^print 999\r\n\\\$$decimal = 999" $message
34 # Run a few execution-related commands on CON1, and ensure the proper
35 # output, or none, if appropriate, is sent to CON2. CON1_NAME and
36 # CON2_NAME are the names of the consoles.
38 proc do_execution_tests {con1 con1_name con2 con2_name} {
42 set bp_lineno [gdb_get_line_number "set break $con1_name here"]
45 gdb_test "next" "global = 1;"
48 ensure_no_output "next causes no spurious output on other console"
52 gdb_test "break $srcfile:$bp_lineno" \
53 "Breakpoint $decimal .*$srcfile, line $bp_lineno\\." \
57 ensure_no_output "break causes no spurious output on other console"
61 gdb_test "continue" "set break $con1_name here .*" "continue to breakpoint"
65 set test "breakpoint hit reported on other console"
66 gdb_test_multiple "" $test {
67 -re "Breakpoint $decimal, .* set break $con1_name here " {
76 proc_with_prefix do_test {} {
77 global srcfile testfile
80 global gdb_main_spawn_id extra_spawn_id
82 clean_restart $testfile
85 untested "could not run to main"
90 "Usage: new-ui INTERPRETER TTY" \
91 "new-ui without arguments"
93 set test "new-ui does not repeat"
95 gdb_test_multiple "" $test {
96 -re "^\r\n$gdb_prompt $" {
101 # Save the main UI's spawn ID.
102 set gdb_main_spawn_id $gdb_spawn_id
104 # Create the new PTY
for the secondary console UI.
106 set extra_spawn_id $spawn_id
107 set extra_tty_name $spawn_out
(slave
,name)
108 gdb_test_multiple
"new-ui console $extra_tty_name" "new-ui" {
109 -re
"New UI allocated\r\n$gdb_prompt $" {
113 with_spawn_id $extra_spawn_id
{
114 set test
"initial prompt on extra console"
115 gdb_test_multiple
"" $test {
116 -re
"$gdb_prompt $" {
122 # Ensure non
-execution commands in one console don
't cause output
123 # in the other consoles.
124 with_spawn_id $gdb_main_spawn_id {
125 gdb_test "print 1" "^print 1\r\n\\\$1 = 1" "print on main console"
127 with_spawn_id $extra_spawn_id {
128 gdb_test "print 2" "^print 2\r\n\\\$2 = 2" "print on extra console"
131 # Verify that we get proper queries on the main UI, but that they are
132 # auto-answered on secondary UIs.
133 with_spawn_id $gdb_main_spawn_id {
134 gdb_test "delete" "" "delete all breakpoint on main console" \
135 "Delete all breakpoints. .y or n. $" "n"
137 with_spawn_id $extra_spawn_id {
138 # Check output in two stages in order to override
139 # gdb_test_multiple's internal
"got interactive prompt" fail
140 # that would otherwise match
if the expect buffer happens to
141 # fill with partial output that ends in
"(y or n) ".
142 set test
"delete all breakpoints on extra console"
143 gdb_test_multiple
"delete" $test {
144 -re
"Delete all breakpoints. .y or n. " {
146 ".answered Y; input not from terminal." \
152 # Run a few execution tests with the main console as the driver
154 with_test_prefix
"main console" {
156 $gdb_main_spawn_id
"main console" \
157 $extra_spawn_id
"extra console"
159 # Same
, but with the extra console as driver.
160 with_test_prefix
"extra console" {
162 $extra_spawn_id
"extra console" \
163 $gdb_main_spawn_id
"main console"
167 # Test missing
/ invalid arguments.
169 proc_with_prefix do_test_invalid_args
{} {
172 clean_restart $testfile
175 set extra_tty_name $spawn_out
(slave
,name)
177 # Test bad terminal path.
178 gdb_test
"new-ui console /non/existent/path" \
179 "opening terminal failed: No such file or directory\." \
180 "new-ui with bad terminal path"
182 # Test bad interpreter
name.
183 gdb_test
"new-ui bloop $extra_tty_name" \
184 "Interpreter `bloop' unrecognized" \
185 "new-ui with bad interpreter name"
187 # Test that we can
continue working normally.
189 fail
"could not run to main"