# Copyright 2011-2025 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"

