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

