# Copyright 2011-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/>.

# Create a GDB script that we can source.  The script needs to generate
# some output, to allow us to verify that it is executed properly.
set script [standard_output_file zzz-gdbscript]
set fd [open $script "w"]
puts $fd "print 1"
puts $fd "print 2"
close $fd

# The expected output from the script...
set script_output "\\$\[0-9\]+ = 1\[\r\n\]+\\$\[0-9\]+ = 2.*"

# Start a fresh GDB.  We don't need an executable for this test, so
# nothing else to do in terms of testcase setup.
gdb_exit
gdb_start

# Test sourcing of the script with interactive mode `auto'.
# Verify that evaluating the script does not cause an unexpected
# change of the interactive-mode setting.
gdb_test_no_output "set interactive-mode auto"
gdb_test "source $script" "$script_output" \
         "source script with interactive-mode auto"
gdb_test "print 3" "= 3" "sanity check with interactive-mode auto"
gdb_test "show interactive-mode" \
         "Debugger's interactive mode is auto \\(currently .*\\)\\." \
         "show interactive-mode (auto)"

# Test sourcing of the script with interactive mode `on'.
# Verify that evaluating the script does not cause an unexpected
# change of the interactive-mode setting.
gdb_test_no_output "set interactive-mode on"
gdb_test "source $script" "$script_output" \
         "source script with interactive-mode on"
gdb_test "print 4" "= 4" "sanity check with interactive-mode on"
gdb_test "show interactive-mode" \
         "Debugger's interactive mode is on\\." \
         "show interactive-mode (on)"

# Test sourcing of the script with interactive mode `off'.
# Verify that evaluating the script does not cause an unexpected
# change of the interactive-mode setting.
gdb_test_no_output "set interactive-mode off"
gdb_test "source $script" "$script_output" \
         "source script with interactive-mode off"
gdb_test "print 5" "= 5" "sanity check with interactive-mode off"
gdb_test "show interactive-mode" \
         "Debugger's interactive mode is off\\." \
         "show interactive-mode (off)"

