# Copyright 2011 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 fd [open "zzz-gdbscript" "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 zzz-gdbscript" "$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 zzz-gdbscript" "$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 zzz-gdbscript" "$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)"

