Use save_vars to replace existing manipulation of globals in tests

gdb/testsuite/ChangeLog:

	* gdb.base/gdbhistsize-history.exp
	(test_histsize_history_setting): Use save_vars.
	* gdb.base/gdbinit-history.exp (test_gdbinit_history_setting):
	Use save_vars.
	(test_no_truncation_of_unlimited_history_file): Use save_vars.
	* gdb.base/readline.exp: Use save_vars.
This commit is contained in:
Patrick Palka
2015-06-18 21:47:55 -04:00
parent 6bf45b2495
commit b6dafabfb1
4 changed files with 111 additions and 143 deletions

View File

@ -1,3 +1,12 @@
2015-08-12 Patrick Palka <patrick@parcs.ath.cx>
* gdb.base/gdbhistsize-history.exp
(test_histsize_history_setting): Use save_vars.
* gdb.base/gdbinit-history.exp (test_gdbinit_history_setting):
Use save_vars.
(test_no_truncation_of_unlimited_history_file): Use save_vars.
* gdb.base/readline.exp: Use save_vars.
2015-08-12 Patrick Palka <patrick@parcs.ath.cx> 2015-08-12 Patrick Palka <patrick@parcs.ath.cx>
* lib/gdb.exp (save_vars): New proc. * lib/gdb.exp (save_vars): New proc.

View File

@ -24,31 +24,22 @@
proc test_histsize_history_setting { histsize size { env_var "GDBHISTSIZE" } } { proc test_histsize_history_setting { histsize size { env_var "GDBHISTSIZE" } } {
global env global env
set have_old_gdbhistsize 0 save_vars { env($env_var) } {
if [info exists env($env_var)] { set env($env_var) $histsize
set have_old_gdbhistsize 1
set old_gdbhistsize $env($env_var)
}
set env($env_var) $histsize
with_test_prefix "histsize=$histsize" { with_test_prefix "histsize=$histsize" {
gdb_exit gdb_exit
gdb_start 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" } { if { $size == "0" } {
gdb_test_no_output "show commands" gdb_test_no_output "show commands"
} elseif { $size != "1" } { } elseif { $size != "1" } {
gdb_test "show commands" \ gdb_test "show commands" \
" . show history size\r\n . show commands" " . show history size\r\n . show commands"
} }
}
if { $have_old_gdbhistsize } {
set env($env_var) $old_gdbhistsize
} else {
unset env($env_var)
}
} }
} }

View File

@ -28,44 +28,38 @@ proc test_gdbinit_history_setting { home size { gdbhistsize_val "-" } } {
global srcdir global srcdir
global subdir 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 if { $gdbhistsize_val != "-" } {
# history size is set in .gdbinit. Make sure the former is not set env(GDBHISTSIZE) $gdbhistsize_val
# set. }
unset -nocomplain env(GDBHISTSIZE)
if { $gdbhistsize_val != "-" } { set INTERNAL_GDBFLAGS [string map {"-nx" ""} $INTERNAL_GDBFLAGS]
set env(GDBHISTSIZE) $gdbhistsize_val
}
set saved_internal_gdbflags $INTERNAL_GDBFLAGS set prefix "home=$home"
set INTERNAL_GDBFLAGS [string map {"-nx" ""} $INTERNAL_GDBFLAGS] if { $gdbhistsize_val != "-" } {
append prefix " gdbhistsize=$gdbhistsize_val"
}
set prefix "home=$home" with_test_prefix $prefix {
if { $gdbhistsize_val != "-" } { gdb_exit
append prefix " gdbhistsize=$gdbhistsize_val" gdb_start
}
with_test_prefix $prefix { gdb_test "show history size" "The size of the command history is $size."
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"
if { $size == "0" } { } elseif { $size != "1" } {
gdb_test_no_output "show commands" gdb_test "show commands" " . show history size\r\n . 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 # Check that the history file does not get truncated to zero when a gdbinit
@ -75,53 +69,47 @@ proc test_no_truncation_of_unlimited_history_file { } {
global env global env
global INTERNAL_GDBFLAGS global INTERNAL_GDBFLAGS
array set old_env [array get env] 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)
# The GDBHISTSIZE environment variable takes precedence over whatever set temp_gdbinit [standard_output_file "gdbinit-history.gdbinit"]
# history size is set in .gdbinit. Make sure the former is not set temp_histfile [standard_output_file "gdbinit-history.gdb_history"]
# set. file delete $temp_gdbinit
unset -nocomplain env(GDBHISTSIZE) file delete $temp_histfile
set saved_internal_gdbflags $INTERNAL_GDBFLAGS 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
set temp_gdbinit [standard_output_file "gdbinit-history.gdbinit"] append INTERNAL_GDBFLAGS " -x $temp_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"] # We have to start then exit GDB twice: the first time to test the creation
puts $fd "set history size unlimited\n" # of the initial history file, and the second time to test appending to it.
puts $fd "set history filename $temp_histfile\n" # In either case the initial "print 1" command should persist through the
puts $fd "set history save\n" # history file.
close $fd with_test_prefix "truncation" {
gdb_exit
gdb_start
gdb_test "print 1"
append INTERNAL_GDBFLAGS " -x $temp_gdbinit" with_test_prefix "creating" {
# 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_exit
gdb_start gdb_start
gdb_test "server show commands" " . print 1.*" gdb_test "server show commands" " . print 1.*"
} }
with_test_prefix "appending" { with_test_prefix "appending" {
gdb_exit gdb_exit
gdb_start gdb_start
gdb_test "server show commands" " . print 1.*" 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" test_gdbinit_history_setting "gdbinit-history/unlimited" "unlimited"

View File

@ -150,68 +150,48 @@ if { ![readline_is_used] } {
return -1 return -1
} }
set oldtimeout1 $timeout save_vars { timeout env(GDBHISTSIZE) env(GDBHISTFILE) } {
set timeout 30 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"
# A simple test of operate-and-get-next. # Test operate-and-get-next with a secondary prompt.
operate_and_get_next "Simple operate-and-get-next" \ operate_and_get_next "operate-and-get-next with secondary prompt" \
"p 1" ".* = 1" \ "if 1 > 0" "" \
"p 2" ".* = 2" \ "p 5" "" \
"p 3" ".* = 3" "end" ".* = 5"
# Test operate-and-get-next with a secondary prompt. # Verify that arrow keys work in secondary prompts. The control
operate_and_get_next "operate-and-get-next with secondary prompt" \ # sequence is a hard-coded VT100 up arrow.
"if 1 > 0" "" \ gdb_test "print 42" "\\\$\[0-9\]* = 42"
"p 5" "" \ set msg "arrow keys with secondary prompt"
"end" ".* = 5" gdb_test_multiple "if 1 > 0\n\033\[A\033\[A\nend" $msg {
-re ".*\\\$\[0-9\]* = 42\r\n$gdb_prompt $" {
# Verify that arrow keys work in secondary prompts. The control pass $msg
# sequence is a hard-coded VT100 up arrow. }
gdb_test "print 42" "\\\$\[0-9\]* = 42" -re ".*Undefined command:.*$gdb_prompt $" {
set msg "arrow keys with secondary prompt" fail $msg
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.
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"
} }
# 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"
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"
# 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)
}
set timeout $oldtimeout1
return 0 return 0