| # Copyright 2015-2021 Free Software Foundation, 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 3 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, see <http://www.gnu.org/licenses/>. |
| |
| # This file is part of the gdb testsuite. |
| |
| # Test the setting of "history size" via the GDBHISTSIZE environment variable |
| |
| |
| # We cannot expect remote hosts to see environment variables set on the |
| # local machine. |
| |
| if { [is_remote host] } { |
| unsupported "can't set environment variables on remote host" |
| return -1 |
| } |
| |
| # Check that the history size is properly set to SIZE when the environment |
| # variable ENV_VAR is set to GDBHISTSIZE. |
| |
| proc test_histsize_history_setting { histsize size { env_var "GDBHISTSIZE" } } { |
| global env |
| |
| save_vars { env(GDBHISTFILE) env(GDBHISTSIZE) env($env_var) } { |
| # These environment variables take precedence over whatever |
| # history size is set in .gdbinit. Make sure the former is not |
| # set. |
| unset -nocomplain env(GDBHISTFILE) |
| unset -nocomplain env(GDBHISTSIZE) |
| |
| 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" |
| } |
| } |
| } |
| } |
| |
| test_histsize_history_setting "" "unlimited" |
| test_histsize_history_setting "0" "0" |
| test_histsize_history_setting "20" "20" |
| test_histsize_history_setting " 20 " "20" |
| test_histsize_history_setting "-5" "unlimited" |
| |
| # Test defaulting to 256 upon encountering a non-numeric GDBHISTSIZE. |
| test_histsize_history_setting "not_an_integer" "256" |
| test_histsize_history_setting "10zab" "256" |
| test_histsize_history_setting "-5ab" "256" |
| |
| # A huge number (hopefully larger than INT_MAX) |
| test_histsize_history_setting "99999999999999999999999999999999999" "unlimited" |
| |
| # We no longer read HISTSIZE |
| test_histsize_history_setting "50" "256" "HISTSIZE" |