Fix gdb.base/gdbinit-history.exp when HISTSIZE is set in the environment
authorPedro Alves <palves@redhat.com>
Tue, 19 May 2015 09:47:27 +0000 (10:47 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 19 May 2015 09:47:27 +0000 (10:47 +0100)
Some buildslaves are showing that this test is failing.  E.g.,:

 https://sourceware.org/ml/gdb-testers/2015-q2/msg04164.html

The issue is that HISTSIZE is set to 1000 in the environment that runs
the tests (that's the default in Fedora, set in /etc/profile).

We can trivially reproduce it with:

 $ HISTSIZE=1000 make check RUNTESTFLAGS="gdbinit-history.exp"
 (...)
 Running /home/pedro/gdb/mygit/src/gdb/testsuite/gdb.base/gdbinit-history.exp ...
 FAIL: gdb.base/gdbinit-history.exp: show history size
 FAIL: gdb.base/gdbinit-history.exp: show history size
 FAIL: gdb.base/gdbinit-history.exp: show commands

gdb.log shows:
 ...
 (gdb) set height 0
 (gdb) set width 0
 (gdb) show history size
 The size of the command history is 1000.
 (gdb) FAIL: gdb.base/gdbinit-history.exp: show history size

gdb/testsuite/ChangeLog:
2015-05-19  Pedro Alves  <palves@redhat.com>

* gdb.base/gdbinit-history.exp (test_gdbinit_history_setting):
Save the whole env array instead of just HOME.  Unset HISTSIZE in
the environment while testing.  Restore whole environment
afterwards.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/gdbinit-history.exp

index 9b446af..a74ac52 100644 (file)
@@ -1,3 +1,10 @@
+2015-05-19  Pedro Alves  <palves@redhat.com>
+
+       * gdb.base/gdbinit-history.exp (test_gdbinit_history_setting):
+       Save the whole env array instead of just HOME.  Unset HISTSIZE in
+       the environment while testing.  Restore whole environment
+       afterwards.
+
 2015-05-16  Doug Evans  <xdje42@gmail.com>
 
        * gdb.guile/scm-ports.c: New file.
index 474680a..aba15b4 100644 (file)
@@ -27,8 +27,15 @@ proc test_gdbinit_history_setting { home size } {
     global srcdir
     global subdir
 
-    set old_home $env(HOME)
+    array set old_env [array get env]
+
     set env(HOME) "$srcdir/$subdir/$home"
+
+    # The HISTSIZE environment variable takes precedence over whatever
+    # history size is set in .gdbinit.  Make sure the former is not
+    # set.
+    unset -nocomplain env(HISTSIZE)
+
     set saved_internal_gdbflags $INTERNAL_GDBFLAGS
     set INTERNAL_GDBFLAGS [string map {"-nx" ""} $INTERNAL_GDBFLAGS]
 
@@ -44,7 +51,8 @@ proc test_gdbinit_history_setting { home size } {
     }
 
     set INTERNAL_GDBFLAGS $saved_internal_gdbflags
-    set $env(HOME) $old_home
+
+    array set env [array get old_env]
 }
 
 test_gdbinit_history_setting "gdbinit-history/unlimited" "unlimited"