blob: 41e79465cd29e572e1d21e9082a372c3e4f4103b [file] [log] [blame]
# Copyright (C) 1998, 1999, 2002 Red Hat, Inc.
#
# 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.
# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu
# This file was written by Keith Seitz (keiths@cygnus.com)
# Read in the standard defs file
if {![gdbtk_read_defs]} {
break
}
global objdir test_ran
global console text
set console [ManagedWin::open Console]
set text [$console test set _twin]
##### #####
# #
# Helper functions for this module #
# #
##### #####
# console_command --
# Invoke STRING as a command in the console window and
# return the result
proc console_command {string} {
global console text
# Save current position
set line [lindex [split [$text index cmdmark] .] 0]
incr line 1
# Insert and invoke command
$text insert end $string
$console invoke
update
# Get the result
set end [lindex [split [$text index cmdmark] .] 0]
incr end -1
return [$text get $line.0 [list $end.0 lineend]]
}
# get_cmd_line --
# Return the command line
proc get_cmd_line {} {
global text
update
set index [$text index cmdmark]
return [$text get [list $index linestart] [list $index lineend]]
}
# clear_command_line --
# Clear the command line
proc clear_command_line {} {
global text
$text delete {cmdmark + 1 char} insert
}
##### #####
# #
# CONSOLE TESTS #
# #
##### #####
#
# Miscellaneous tests
#
# Test: console-misc-1
# Desc: Change console prompt
gdbtk_test console-misc-1 {change console prompt} {
# Insert the "set prompt" command into the text widget
console_command {set prompt (test) }
$text get {cmdmark linestart} {cmdmark lineend}
} {(test) }
if {$test_ran} {
console_command {set prompt (gdb) }
}
#
# Paste tests
#
# Test: console-paste-1
# Desc: Paste the X selection into console window
gdbtk_test console-paste-1 {paste X text} {
# This is cheesy, but it works... Create a text widget
# which holds the current selection...
text .test_text
.test_text insert end "this is some pasted text"
.test_text tag add sel 1.0 {1.0 lineend}
event generate .test_text <<Copy>>
event generate $text <<Paste>>
get_cmd_line
} {(gdb) this is some pasted text}
if {$test_ran} {
destroy .test_text
clear_command_line
}
#
# Test for errors
#
# Test: console-error-1
# Desc: Check if console window reports internal gdb errors
gdbtk_test console-error-1 {invoke unknown command} {
console_command {this_command_doesn't_exist}
} {Error: Undefined command: "this". Try "help".
}
#
# History tests
#
# Test: console-history-1.1
# Desc: Exercise the up-history functionality
gdbtk_test console-history-1.1 {up history once} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
get_cmd_line
} {(gdb) help si}
if {$test_ran} {
clear_command_line
}
# Test: console-history-1.2
# Desc: Exercise the up-history functionality
gdbtk_test console-history-1.2 {up history twice} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
# this doesn't seem to work reliably: event generate $text <Up>
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
$console test _previous
get_cmd_line
} {(gdb) help quit}
if {$test_ran} {
clear_command_line
}
# Test: console-history-1.3
# Desc: Exercise the up-history functionality
gdbtk_test console-history-1.3 {up history four times} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
for {set i 0} {$i < 4} {incr i} {
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
}
get_cmd_line
} {(gdb) show remotedevice}
if {$test_ran} {
clear_command_line
}
# Test: console-history-1.4
# Desc: Exercise the up-history functionality
gdbtk_test console-history-1.4 {up fourteen times} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
for {set i 0} {$i < 14} {incr i} {
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
}
get_cmd_line
} {(gdb) show annotate}
if {$test_ran} {
clear_command_line
}
# Test: console-history-1.5
# Desc: Exercise the up-history search functionality
gdbtk_test console-history-1.5 {up search} {
# Add some commands into the command buffer
console_command {show height}
console_command {show annotate}
console_command {show complaints}
console_command {print main}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
$text insert end "sh"
# this doesn't seem to work reliably: event generate $text <Shift-Up>
# this doesn't seem to work reliably: event generate $text <Shift-Up>
# this doesn't seem to work reliably: event generate $text <Shift-Up>
$console test _search_history
$console test _search_history
$console test _search_history
get_cmd_line
} {(gdb) show annotate}
# Test: console-history-1.6
# Desc: Exercise the down-history search functionality
gdbtk_test console-history-1.6 {down search} {
# this doesn't seem to work reliably: event generate $text <Shift-Down>
# this doesn't seem to work reliably: event generate $text <Shift-Down>
$console test _rsearch_history
$console test _rsearch_history
get_cmd_line
} {(gdb) show remotelogbase}
# Test: console-history-1.7
# Desc: Down-history search to bottom
# We go back down until the original partialcommand is displayed
gdbtk_test console-history-1.7 {down search to bottom} {
# this doesn't seem to work reliably: event generate $text <Shift-Down>
# this doesn't seem to work reliably: event generate $text <Shift-Down>
$console test _rsearch_history
$console test _rsearch_history
get_cmd_line
} {(gdb) sh}
# Test: console-history-1.8
# Desc: Up-history search to top
# We go up until there are no matches
gdbtk_test console-history-1.8 {up search to top} {
for {set i 0} {$i < 100} {incr i} {
# this doesn't seem to work reliably: event generate $text <Shift-Up>
$console test _search_history
}
get_cmd_line
} {(gdb) show annotate}
if {$test_ran} {
clear_command_line
}
# Test: console-history-2.1
# Desc: Exercise the down-history functionality
gdbtk_test console-history-2.1 {down once} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
for {set i 0} {$i < 14} {incr i} {
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
}
# this doesn't seem to work reliably: event generate $text <Down>
$console test _next
get_cmd_line
} {(gdb) show complaints}
if {$test_ran} {
clear_command_line
}
# Test: console-history-2.2
# Desc: Exercise the down-history functionality
gdbtk_test console-history-2.2 {down twice} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
for {set i 0} {$i < 14} {incr i} {
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
}
# this doesn't seem to work reliably: event generate $text <Down>
# this doesn't seem to work reliably: event generate $text <Down>
$console test _next
$console test _next
get_cmd_line
} {(gdb) show confirm}
if {$test_ran} {
clear_command_line
}
# Test: console-history-2.3
# Desc: Exercise the down-history functionality
gdbtk_test console-history-2.3 {down four times} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
for {set i 0} {$i < 14} {incr i} {
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
}
for {set i 0} {$i < 4} {incr i} {
# this doesn't seem to work reliably: event generate $text <Down>
$console test _next
}
get_cmd_line
} {(gdb) show language}
if {$test_ran} {
clear_command_line
}
# Test: console-history-2.4
# Desc: Exercise the down-history functionality
gdbtk_test console-history-2.4 {down infinitely} {
# Add some commands into the command buffer
console_command {show annotate}
console_command {show complaints}
console_command {show confirm}
console_command {show height}
console_command {show language}
console_command {show print demangle}
console_command {show remotebaud}
console_command {show remotebreak}
console_command {show remotecache}
console_command {show remotedebug}
console_command {show remotedevice}
console_command {show remotelogbase}
console_command {help quit}
console_command {help si}
for {set i 0} {$i < 14} {incr i} {
# this doesn't seem to work reliably: event generate $text <Up>
$console test _previous
}
for {set i 0} {$i < 20} {incr i} {
# this doesn't seem to work reliably: event generate $text <Down>
$console test _next
}
get_cmd_line
} {(gdb) }
if {$test_ran} {
clear_command_line
}
#
# gdb - gdbtk Interface Tests
#
# Test: console-interface-1.1
# Desc: Verify that a "file" command in the console window causes
# gdb to invoke the pre-/post-add-symbol hooks
set file_loaded 0
gdbtk_test console-interface-1.1 {file command goes through hooks} {
global TEST1_RESULT TEST2_RESULT
# This is really ugly, but its the only way to do this...
rename gdbtk_tcl_pre_add_symbol pre_add
rename gdbtk_tcl_post_add_symbol post_add
proc gdbtk_tcl_pre_add_symbol {file} {
global TEST1_RESULT
set TEST1_RESULT $file
pre_add $file
}
proc gdbtk_tcl_post_add_symbol {} {
global TEST2_RESULT
set TEST2_RESULT ok
post_add
}
# load a file and make sure we went through the pre/post_add_symbol hooks
set TEST1_RESULT {}
set TEST2_RESULT {}
set file [file join $objdir simple]
console_command "file $file"
if {$TEST1_RESULT != $file} {
set result "did not go through gdbtk_tcl_pre_add_symbol ($TEST1_RESULT)"
} elseif {$TEST2_RESULT != "ok"} {
set result "did not go through gdbtk_tcl_post_add_symbol"
} else {
set result {}
set file_loaded 1
}
set result
} {}
if {$test_ran} {
rename gdbtk_tcl_pre_add_symbol {}
rename gdbtk_tcl_post_add_symbol {}
rename pre_add gdbtk_tcl_pre_add_symbol
rename post_add gdbtk_tcl_post_add_symbol
}
#
# Exit
#
gdbtk_test_done