proc test_histsize_history_setting { histsize size { env_var "GDBHISTSIZE" } } {
global env
- set have_old_gdbhistsize 0
- if [info exists env($env_var)] {
- set have_old_gdbhistsize 1
- set old_gdbhistsize $env($env_var)
- }
- set env($env_var) $histsize
-
- with_test_prefix "histsize=$histsize" {
- gdb_exit
- gdb_start
-
- gdb_test "show history size" "The size of the command history is $size."
-
- if { $size == "0" } {
- gdb_test_no_output "show commands"
- } elseif { $size != "1" } {
- gdb_test "show commands" \
- " . show history size\r\n . show commands"
- }
-
- if { $have_old_gdbhistsize } {
- set env($env_var) $old_gdbhistsize
- } else {
- unset env($env_var)
- }
+ save_vars { env($env_var) } {
+ set env($env_var) $histsize
+
+ with_test_prefix "histsize=$histsize" {
+ gdb_exit
+ gdb_start
+
+ gdb_test "show history size" "The size of the command history is $size."
+
+ if { $size == "0" } {
+ gdb_test_no_output "show commands"
+ } elseif { $size != "1" } {
+ gdb_test "show commands" \
+ " . show history size\r\n . show commands"
+ }
+ }
}
}
global srcdir
global subdir
- array set old_env [array get env]
+ save_vars { INTERNAL_GDBFLAGS env(GDBHISTSIZE) env(HOME) } {
+ set env(HOME) "$srcdir/$subdir/$home"
- set env(HOME) "$srcdir/$subdir/$home"
+ # The GDBHISTSIZE environment variable takes precedence over whatever
+ # history size is set in .gdbinit. Make sure the former is not
+ # set.
+ unset -nocomplain env(GDBHISTSIZE)
- # The GDBHISTSIZE environment variable takes precedence over whatever
- # history size is set in .gdbinit. Make sure the former is not
- # set.
- unset -nocomplain env(GDBHISTSIZE)
-
- if { $gdbhistsize_val != "-" } {
- set env(GDBHISTSIZE) $gdbhistsize_val
- }
+ if { $gdbhistsize_val != "-" } {
+ set env(GDBHISTSIZE) $gdbhistsize_val
+ }
- set saved_internal_gdbflags $INTERNAL_GDBFLAGS
- set INTERNAL_GDBFLAGS [string map {"-nx" ""} $INTERNAL_GDBFLAGS]
+ set INTERNAL_GDBFLAGS [string map {"-nx" ""} $INTERNAL_GDBFLAGS]
- set prefix "home=$home"
- if { $gdbhistsize_val != "-" } {
- append prefix " gdbhistsize=$gdbhistsize_val"
- }
+ set prefix "home=$home"
+ if { $gdbhistsize_val != "-" } {
+ append prefix " gdbhistsize=$gdbhistsize_val"
+ }
- with_test_prefix $prefix {
- gdb_exit
- gdb_start
+ with_test_prefix $prefix {
+ gdb_exit
+ gdb_start
- gdb_test "show history size" "The size of the command history is $size."
+ gdb_test "show history size" "The size of the command history is $size."
- if { $size == "0" } {
- gdb_test_no_output "show commands"
- } elseif { $size != "1" } {
- gdb_test "show commands" " . show history size\r\n . show commands"
+ if { $size == "0" } {
+ gdb_test_no_output "show commands"
+ } elseif { $size != "1" } {
+ gdb_test "show commands" " . show history size\r\n . show commands"
+ }
}
}
-
- set INTERNAL_GDBFLAGS $saved_internal_gdbflags
-
- unset -nocomplain env(GDBHISTSIZE)
- array set env [array get old_env]
}
# Check that the history file does not get truncated to zero when a gdbinit
global env
global INTERNAL_GDBFLAGS
- array set old_env [array get env]
-
- # The GDBHISTSIZE environment variable takes precedence over whatever
- # history size is set in .gdbinit. Make sure the former is not
- # set.
- unset -nocomplain env(GDBHISTSIZE)
-
- set saved_internal_gdbflags $INTERNAL_GDBFLAGS
-
- set temp_gdbinit [standard_output_file "gdbinit-history.gdbinit"]
- set temp_histfile [standard_output_file "gdbinit-history.gdb_history"]
- file delete $temp_gdbinit
- file delete $temp_histfile
-
- set fd [open $temp_gdbinit "w"]
- puts $fd "set history size unlimited\n"
- puts $fd "set history filename $temp_histfile\n"
- puts $fd "set history save\n"
- close $fd
-
- append INTERNAL_GDBFLAGS " -x $temp_gdbinit"
-
- # We have to start then exit GDB twice: the first time to test the creation
- # of the initial history file, and the second time to test appending to it.
- # In either case the initial "print 1" command should persist through the
- # history file.
- with_test_prefix "truncation" {
- gdb_exit
- gdb_start
- gdb_test "print 1"
-
- with_test_prefix "creating" {
+ save_vars { INTERNAL_GDBFLAGS env(GDBHISTSIZE) } {
+ # The GDBHISTSIZE environment variable takes precedence over whatever
+ # history size is set in .gdbinit. Make sure the former is not
+ # set.
+ unset -nocomplain env(GDBHISTSIZE)
+
+ set temp_gdbinit [standard_output_file "gdbinit-history.gdbinit"]
+ set temp_histfile [standard_output_file "gdbinit-history.gdb_history"]
+ file delete $temp_gdbinit
+ file delete $temp_histfile
+
+ set fd [open $temp_gdbinit "w"]
+ puts $fd "set history size unlimited\n"
+ puts $fd "set history filename $temp_histfile\n"
+ puts $fd "set history save\n"
+ close $fd
+
+ append INTERNAL_GDBFLAGS " -x $temp_gdbinit"
+
+ # We have to start then exit GDB twice: the first time to test the creation
+ # of the initial history file, and the second time to test appending to it.
+ # In either case the initial "print 1" command should persist through the
+ # history file.
+ with_test_prefix "truncation" {
+ gdb_exit
+ gdb_start
+ gdb_test "print 1"
+
+ with_test_prefix "creating" {
gdb_exit
gdb_start
gdb_test "server show commands" " . print 1.*"
- }
+ }
- with_test_prefix "appending" {
+ with_test_prefix "appending" {
gdb_exit
gdb_start
gdb_test "server show commands" " . print 1.*"
- }
+ }
+ }
}
-
- set INTERNAL_GDBFLAGS $saved_internal_gdbflags
-
- array set env [array get old_env]
}
test_gdbinit_history_setting "gdbinit-history/unlimited" "unlimited"
return -1
}
-set oldtimeout1 $timeout
-set timeout 30
-
-
-# A simple test of operate-and-get-next.
-operate_and_get_next "Simple operate-and-get-next" \
- "p 1" ".* = 1" \
- "p 2" ".* = 2" \
- "p 3" ".* = 3"
-
-# Test operate-and-get-next with a secondary prompt.
-operate_and_get_next "operate-and-get-next with secondary prompt" \
- "if 1 > 0" "" \
- "p 5" "" \
- "end" ".* = 5"
-
-# Verify that arrow keys work in secondary prompts. The control
-# sequence is a hard-coded VT100 up arrow.
-gdb_test "print 42" "\\\$\[0-9\]* = 42"
-set msg "arrow keys with secondary prompt"
-gdb_test_multiple "if 1 > 0\n\033\[A\033\[A\nend" $msg {
- -re ".*\\\$\[0-9\]* = 42\r\n$gdb_prompt $" {
- pass $msg
- }
- -re ".*Undefined command:.*$gdb_prompt $" {
- fail $msg
+save_vars { timeout env(GDBHISTSIZE) env(GDBHISTFILE) } {
+ set timeout 30
+
+ # A simple test of operate-and-get-next.
+ operate_and_get_next "Simple operate-and-get-next" \
+ "p 1" ".* = 1" \
+ "p 2" ".* = 2" \
+ "p 3" ".* = 3"
+
+ # Test operate-and-get-next with a secondary prompt.
+ operate_and_get_next "operate-and-get-next with secondary prompt" \
+ "if 1 > 0" "" \
+ "p 5" "" \
+ "end" ".* = 5"
+
+ # Verify that arrow keys work in secondary prompts. The control
+ # sequence is a hard-coded VT100 up arrow.
+ gdb_test "print 42" "\\\$\[0-9\]* = 42"
+ set msg "arrow keys with secondary prompt"
+ gdb_test_multiple "if 1 > 0\n\033\[A\033\[A\nend" $msg {
+ -re ".*\\\$\[0-9\]* = 42\r\n$gdb_prompt $" {
+ pass $msg
+ }
+ -re ".*Undefined command:.*$gdb_prompt $" {
+ fail $msg
+ }
}
-}
-# Now repeat the first test with a history file that fills the entire
-# history list.
+ # Now repeat the first test with a history file that fills the entire
+ # history list.
-if [info exists env(GDBHISTFILE)] {
- set old_gdbhistfile $env(GDBHISTFILE)
-}
-if [info exists env(GDBHISTSIZE)] {
- set old_gdbhistsize $env(GDBHISTSIZE)
-}
-set env(GDBHISTFILE) "${srcdir}/${subdir}/gdb_history"
-set env(GDBHISTSIZE) "10"
+ set env(GDBHISTFILE) "${srcdir}/${subdir}/gdb_history"
+ set env(GDBHISTSIZE) "10"
-gdb_exit
-gdb_start
-gdb_reinitialize_dir $srcdir/$subdir
-
-operate_and_get_next "Simple operate-and-get-next" \
- "p 7" ".* = 7" \
- "p 8" ".* = 8" \
- "p 9" ".* = 9"
+ gdb_exit
+ gdb_start
+ gdb_reinitialize_dir $srcdir/$subdir
-
-# Restore globals modified in this test...
-if [info exists old_gdbhistfile] {
- set env(GDBHISTFILE) $old_gdbhistfile
-} else {
- unset env(GDBHISTFILE)
-}
-if [info exists old_gdbhistsize] {
- set env(GDBHISTSIZE) $old_gdbhistsize
-} else {
- unset env(GDBHISTSIZE)
+ operate_and_get_next "Simple operate-and-get-next" \
+ "p 7" ".* = 7" \
+ "p 8" ".* = 8" \
+ "p 9" ".* = 9"
}
-set timeout $oldtimeout1
return 0