| # 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 |