#   Copyright 1988, 1990, 1991, 1992, 1994, 1995, 1997, 1998, 1999, 2000,
#   2001, 2002, 2003, 2005, 2006, 2007, 2008 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/>.

# Please email any bugs, comments, and/or additions to this file to:
# bug-gdb@prep.ai.mit.edu

if $tracelevel then {
    strace $tracelevel
}

#
# test special commands (if, while, etc)
#
set prms_id 0
set bug_id 0

set testfile "run"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/commands
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DFAKEARGV}] != "" } {
     untested commands.exp
     return -1
}

gdb_exit
gdb_start
delete_breakpoints
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

proc gdbvar_simple_if_test {} {
    global gdb_prompt

    gdb_test "set \$foo = 0" "" "set foo in gdbvar_simple_if_test"
    # All this test should do is print 0xdeadbeef once.
    gdb_test "if \$foo == 1\np/x 0xfeedface\nelse\np/x 0xdeadbeef\nend" \
	    "\\\$\[0-9\]* = 0xdeadbeef" "gdbvar_simple_if_test #1"
    # All this test should do is print 0xfeedface once.
    gdb_test "if \$foo == 0\np/x 0xfeedface\nelse\np/x 0xdeadbeef\nend" \
	    "\\\$\[0-9\]* = 0xfeedface" "gdbvar_simple_if_test #2"
}

proc gdbvar_simple_while_test {} {
    global gdb_prompt

    gdb_test "set \$foo = 5" "" "set foo in gdbvar_simple_while_test"
    # This test should print 0xfeedface five times.
    gdb_test "while \$foo > 0\np/x 0xfeedface\nset \$foo -= 1\nend" \
	    "\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface" \
	    "gdbvar_simple_while_test #1"
}

proc gdbvar_complex_if_while_test {} {
    global gdb_prompt

    gdb_test "set \$foo = 4" "" "set foo in gdbvar complex_if_while_test"
    # This test should alternate between 0xdeadbeef and 0xfeedface two times.
    gdb_test "while \$foo > 0\nset \$foo -= 1\nif \(\$foo % 2\) == 1\np/x 0xdeadbeef\nelse\np/x 0xfeedface\nend\nend" \
	    "\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface" \
	    "gdbvar_complex_if_while_test #1"
}

proc progvar_simple_if_test {} {
    global gdb_prompt

    if [target_info exists noargs] { 
        verbose "Skipping progvar_simple_if_test because of noargs."
        return
    }

    if { ![runto factorial] } then { gdb_suppress_tests; }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    gdb_test "p value=5" "" "set value to 5 in progvar_simple_if_test #1"
    # All this test should do is print 0xdeadbeef once.
    gdb_test "if value == 1\np/x 0xfeedface\nelse\np/x 0xdeadbeef\nend" \
	    "\\\$\[0-9\]* = 0xdeadbeef" \
	    "progvar_simple_if_test #1"
    # All this test should do is print 0xfeedface once.
    gdb_test "if value == 5\np/x 0xfeedface\nelse\np/x 0xdeadbeef\nend" \
	    "\\\$\[0-9\]* = 0xfeedface" \
	    "progvar_simple_if_test #2"
    gdb_stop_suppressing_tests;
}

proc progvar_simple_while_test {} {
    global gdb_prompt

    if [target_info exists noargs] { 
        verbose "Skipping progvar_simple_while_test because of noargs."
        return
    }

    gdb_test "set args 5" "" "set args in progvar_simple_while_test"
    if { ![runto factorial] } then { gdb_suppress_tests }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    gdb_test "p value=5" "" "set value to 5 in progvar_simple_if_test #2"
    # This test should print 0xfeedface five times.
    gdb_test "while value > 0\np/x 0xfeedface\nset value -= 1\nend" \
	    "\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface" \
	    "progvar_simple_while_test #1"
    gdb_stop_suppressing_tests;
}

proc progvar_complex_if_while_test {} {
    global gdb_prompt

    if [target_info exists noargs] { 
        verbose "Skipping progvar_simple_if_while_test because of noargs."
        return
    }

    gdb_test "set args 4" "" "set args in progvar_complex_if_while_test"
    if { ![runto factorial] } then { gdb_suppress_tests }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    gdb_test "p value=4" "" "set value to 4 in progvar_simple_if_test"
    # This test should alternate between 0xdeadbeef and 0xfeedface two times.
    gdb_test "while value > 0\nset value -= 1\nif \(value % 2\) == 1\np/x 0xdeadbeef\nelse\np/x 0xfeedface\nend\nend" \
	    "\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface" \
	    "progvar_complex_if_while_test #1"
    gdb_stop_suppressing_tests;
}

proc if_while_breakpoint_command_test {} {
    if [target_info exists noargs] { 
        verbose "Skipping if_while_breakpoint_command_test because of noargs."
        return
    }

    gdb_test "set args 5" "" "set args in if_while_breakpoint_command_test"
    if { ![runto factorial] } then { gdb_suppress_tests }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    gdb_test "p value=5" "" "set value to 5 in progvar_simple_if_test"
    delete_breakpoints
    gdb_test "break factorial" "Breakpoint.*at.*" "break factorial #1"

    send_gdb "commands\n"
    gdb_expect {
	-re "End with" {
	    pass "commands in if_while_breakpoint_command_test"
	}
        default {
	    fail "(timeout or eof) commands in if_while_breakpoint_command_test"
	}
    }
    # This test should alternate between 0xdeadbeef and 0xfeedface two times.
    gdb_test "while value > 0\nset value -= 1\nif \(value % 2\) == 1\np/x 0xdeadbeef\nelse\np/x 0xfeedface\nend\nend\nend" \
	    "" \
	    "commands part 2 in if_while_breakpoint_command_test"
    gdb_test "continue" \
	    "\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface" \
	    "if_while_breakpoint_command_test #1"
   gdb_test "info break" \
	   "while.*set.*if.*p/x.*else.*p/x.*end.*" \
	   "info break in if_while_breakpoint_command_test"
    gdb_stop_suppressing_tests;
}

# Test that we can run the inferior from breakpoint commands.
#
# The expected behavior is that all commands after the first "step"
# shall be ignored.  See the gdb manual, "Break Commands",
# subsection "Breakpoint command lists".

proc infrun_breakpoint_command_test {} {
    if [target_info exists noargs] { 
        verbose "Skipping infrun_breakpoint_command_test because of noargs."
        return
    }

    gdb_test "set args 6" "" "set args in infrun_breakpoint_command_test"
    if { ![runto factorial] } then { gdb_suppress_tests }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    gdb_test "p value=6" "" "set value to 6 in progvar_simple_if_test #1"
    delete_breakpoints
    gdb_test "break factorial if value == 5" "Breakpoint.*at.*"

# infrun_breakpoint_command_test - This test was broken into two parts 
# to get around a synchronization problem in expect.
# part1: issue the gdb command "commands"
# part2: send the list of commands
    send_gdb "commands\n"
    gdb_expect {
	-re "End with" {
	    pass "commands in infrun_breakpoint_command_test #1"
	}
        default {
	    fail "(timeout or eof) commands in infrun_breakpoint_command_test"
	}
    }
    gdb_test "step\nstep\nstep\nstep\nend" "" \
	"commands in infrun_breakpoint_command_test #2"

	gdb_test "continue" \
		"Continuing.*.*.*Breakpoint \[0-9\]*, factorial \\(value=5\\).*at.*\[0-9\]*\[      \]*if \\(value > 1\\) \{.*\[0-9\]*\[      \]*value \\*= factorial \\(value - 1\\);.*" \
		"continue in infrun_breakpoint_command_test"

    gdb_stop_suppressing_tests;
}

proc breakpoint_command_test {} {
    if [target_info exists noargs] { 
        verbose "Skipping breakpoint_command_test because of noargs."
        return
    }

    gdb_test "set args 6" "" "set args in breakpoint_command_test"
    if { ![runto factorial] } then { gdb_suppress_tests; }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    gdb_test "p value=6" "" "set value to 6 in progvar_simple_if_test #2"
    delete_breakpoints
    gdb_test "break factorial" "Breakpoint.*at.*" "break factorial #2"
    gdb_test "commands\nprintf \"Now the value is %d\\n\", value\nend" \
	"End with.*" "commands in breakpoint_command_test"
    gdb_test "continue" \
	    "Breakpoint \[0-9\]*, factorial.*Now the value is 5" \
	"continue in breakpoint_command_test"
    gdb_test "print value" " = 5" "print value in breakpoint_command_test"
    gdb_stop_suppressing_tests;
}

# Test a simple user defined command (with arguments)
proc user_defined_command_test {} {
    global gdb_prompt

    gdb_test "set \$foo = 4" "" "set foo in user_defined_command_test"

    send_gdb "define mycommand\n"
    gdb_expect {
	-re "End with"  {
	    pass "define mycommand in user_defined_command_test"
	}
        default {
	    fail "(timeout or eof) define mycommand in user_defined_command_test"
	}
    }
    # This test should alternate between 0xdeadbeef and 0xfeedface two times.
    gdb_test "while \$arg0 > 0\nset \$arg0 -= 1\nif \(\$arg0 % 2\) == 1\np/x 0xdeadbeef\nelse\np/x 0xfeedface\nend\nend\nend" \
	    "" \
	    "enter commands in user_defined_command_test"

    gdb_test "mycommand \$foo" \
	    "\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface\[^\n\]*\n\\\$\[0-9\]* = 0xdeadbeef\[^\n\]*\n\\\$\[0-9\]* = 0xfeedface" \
	    "execute user defined command in user_defined_command_test"
   gdb_test "show user mycommand" \
	"  while \\\$arg0.*set.*    if \\\(\\\$arg0.*p/x.*    else\[^\n\].*p/x.*    end\[^\n\].*  end\[^\n\].*" \
	   "display user command in user_defined_command_test"
}

proc watchpoint_command_test {} {
    global noargs
    global gdb_prompt

    if [target_info exists noargs] { 
        verbose "Skipping watchpoint_command_test because of noargs."
        return
    }

    gdb_test "set args 6" "" "set args in watchpoint_command_test"
    if { ![runto factorial] } then { return }
    delete_breakpoints

    # Verify that we can create a watchpoint, and give it a commands
    # list that continues the inferior.  We set the watchpoint on a
    # local variable, too, so that it self-deletes when the watched
    # data goes out of scope.
    #
    # What should happen is: Each time the watchpoint triggers, it
    # continues the inferior.  Eventually, the watchpoint will self-
    # delete, when the watched variable is out of scope.  But by that
    # time, the inferior should have exited.  GDB shouldn't crash or
    # anything untoward as a result of this.
    #
    set wp_id -1

    send_gdb "watch local_var\n"
    gdb_expect {
        -re ".*\[Ww\]atchpoint (\[0-9\]*): local_var.*$gdb_prompt $" {
            set wp_id $expect_out(1,string)
            pass "watch local_var"
        }
        -re "$gdb_prompt $"\
            {fail "watch local_var"}
        timeout {fail "(timeout) watch local_var"}
    }

    if {$wp_id == -1} {return}

    send_gdb "commands $wp_id\n"
    gdb_expect {
      -re "Type commands for when breakpoint $wp_id is hit, one per line.*>" {
	  pass "begin commands on watch"
      }
      -re "$gdb_prompt $" {fail "begin commands on watch"}
      timeout             {fail "(timeout) begin commands on watch"}
    }
    send_gdb "print value\n"
    gdb_expect {
	-re ">"               {pass "add print command to watch"}
	-re "$gdb_prompt $"   {fail "add print command to watch"}
	timeout               {fail "(timeout) add print command to watch"}
    }
    send_gdb "continue\n"
    gdb_expect {
	-re ">"               {pass "add continue command to watch"}
	-re "$gdb_prompt $"   {fail "add continue command to watch"}
	timeout               {fail "(timeout) add continue command to watch"}
    }
    send_gdb "end\n"
    gdb_expect {
	-re "$gdb_prompt $"   {pass "end commands on watch"}
	timeout               {fail "(timeout) end commands on watch"}
    }
    send_gdb "continue\n"
    gdb_expect {
	-re "Continuing.*\[Ww\]atchpoint $wp_id deleted because the program has left the block in.*which its expression is valid.*run.c:(57|82).*$gdb_prompt $" {
	    pass "continue with watch"
	}
	-re "$gdb_prompt $"   {fail "continue with watch"}
	timeout               {fail "(timeout) continue with watch"}
    }
}

proc test_command_prompt_position {} {
    global gdb_prompt

    if [target_info exists noargs] { 
        verbose "Skipping test_command_prompt_position because of noargs."
        return
    }

    if { ![runto factorial] } then { gdb_suppress_tests; }
    # Don't depend upon argument passing, since most simulators don't
    # currently support it.  Bash value variable to be what we want.
    delete_breakpoints
    gdb_test "break factorial" "Breakpoint.*at.*" "break factorial #3"
    gdb_test "p value=5" "" "set value to 5 in test_command_prompt_position"
    # All this test should do is print 0xdeadbeef once.
    gdb_test "if value == 1\np/x 0xfeedface\nelse\np/x 0xdeadbeef\nend" \
	    "\\\$\[0-9\]* = 0xdeadbeef" \
	    "if test in test_command_prompt_position"
    
    # Now let's test for the correct position of the '>' in gdb's
    # prompt for commands.  It should be at the beginning of the line,
    # and not after one space.

    send_gdb "commands\n"
    gdb_expect {
	-re "Type commands.*End with.*\[\r\n\]>$" { 
	    send_gdb "printf \"Now the value is %d\\n\", value\n"
	    gdb_expect {
		-re "^printf.*value\r\n>$" {
		    send_gdb "end\n"
		    gdb_expect {
			-re "^end\r\n$gdb_prompt $" { 
			    pass "> OK in test_command_prompt_position" 
			}
			-re ".*$gdb_prompt $" { 
			    fail "some other message in test_command_prompt_position" 
			}
			timeout  { 
			    fail "(timeout) 1 in test_command_prompt_position"
			}
		    }
		}
		-re "^ >$" { fail "> not OK in test_command_prompt_position" }
		-re ".*$gdb_prompt $"   { 
		    fail "wrong message in test_command_prompt_position" 
		}
		timeout    { 
		    fail "(timeout) 2 in test_command_prompt_position " 
		}
	    }
	}
	-re "Type commands.*End with.*\[\r\n\] >$" { 
	    fail "prompt not OK in test_command_prompt_position" 
	}
	-re ".*$gdb_prompt $" { 
	    fail "commands in test_command_prompt_position" 
	}
	timeout { fail "(timeout) 3 commands in test_command_prompt_position" }
    }

    gdb_stop_suppressing_tests;
}



proc deprecated_command_test {} {
    gdb_test "maintenance deprecate blah" "Can't find command.*" \
          "tried to deprecate non-existing command"

    gdb_test "maintenance deprecate p \"new_p\"" "" "maintenance deprecate p \"new_p\" /1/"
    gdb_test "p 5" \
	    "Warning: 'p', an alias for the command 'print' is deprecated.*Use 'new_p'.*" \
	    "p deprecated warning, with replacement"
    gdb_test "p 5" ".\[0-9\]* = 5.*" "Deprecated warning goes away /1/"

    gdb_test "maintenance deprecate p \"new_p\"" "" "maintenance deprecate p \"new_p\" /2/"
    gdb_test "maintenance deprecate print \"new_print\"" ""
    gdb_test "p 5" \
	    "Warning: command 'print' \\(p\\) is deprecated.*Use 'new_print'.*" \
	    "both alias and command are deprecated"
    gdb_test "p 5" ".\[0-9\]* = 5.*" "Deprecated warning goes away /2/"

    gdb_test "maintenance deprecate set remote memory-read-packet-size \"srm\" " \
	    "" \
	    "deprecate long command /1/"
    gdb_test "set remote memory-read-packet-size" \
	    "Warning: command 'set remote memory-read-packet-size' is deprecated.*Use 'srm'.*" \
	    "long command deprecated /1/"

    gdb_test "maintenance deprecate set remote memory-read-packet-size" \
	    "" \
	    "deprecate long command /2/"
    gdb_test "set remote memory-read-packet-size" \
	    "Warning: command 'set remote memory-read-packet-size' is deprecated.*No alternative known.*" \
	    "long command deprecated with no alternative /2/"

    gdb_test "maintenance deprecate" \
	    "\"maintenance deprecate\".*" \
	    "deprecate with no arguments"
}

proc bp_deleted_in_command_test {} {
    global gdb_prompt
    
    if [target_info exists noargs] { 
        verbose "Skipping bp_deleted_in_command_test because of noargs."
        return
    }

    gdb_test "set args 1" "" "set args in bp_deleted_in_command_test"
    delete_breakpoints

    # Create a breakpoint, and associate a command-list to it, with
    # one command that deletes this breakpoint.
    gdb_test "break factorial" \
             "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\." \
             "breakpoint in bp_deleted_in_command_test"
    
    send_gdb "commands\n"
    gdb_expect {
      -re "Type commands for when breakpoint .* is hit, one per line.*>" {
          pass "begin commands in bp_deleted_in_command_test"
      }
      -re "$gdb_prompt $" {fail "begin commands in bp_deleted_in_command_test"}
      timeout             {fail "(timeout) begin commands bp_deleted_in_command_test"}
    }
    send_gdb "silent\n"
    gdb_expect {
        -re ">"               {pass "add silent command"}
        -re "$gdb_prompt $"   {fail "add silent command"}
        timeout               {fail "(timeout) add silent command"}
    }
    send_gdb "clear factorial\n"
    gdb_expect {
        -re ">"               {pass "add clear command"}
        -re "$gdb_prompt $"   {fail "add clear command"}
        timeout               {fail "(timeout) add clear command"} }
    send_gdb "printf \"factorial command-list executed\\n\"\n"
    gdb_expect {
        -re ">"               {pass "add printf command"}
        -re "$gdb_prompt $"   {fail "add printf command"}
        timeout               {fail "(timeout) add printf command"}
    }
    send_gdb "cont\n"
    gdb_expect {
        -re ">"               {pass "add cont command"}
        -re "$gdb_prompt $"   {fail "add cont command"}
        timeout               {fail "(timeout) add cont command"} }
    send_gdb "end\n"
    gdb_expect {
        -re "$gdb_prompt $"   {pass "end commands"}
        timeout               {fail "(timeout) end commands"}
    }

    gdb_run_cmd
    gdb_expect {
        -re ".*factorial command-list executed.*1.*$gdb_prompt $" {
	    pass "run factorial until breakpoint"
        }
	-re ".*$gdb_prompt $" {
	    fail "run factorial until breakpoint"
	}
	default { fail "(timeout) run factorial until breakpoint" }
	timeout { fail "(timeout) run factorial until breakpoint" }
    }
}

proc temporary_breakpoint_commands {} {
    global gdb_prompt
    
    if [target_info exists noargs] { 
        verbose "Skipping temporary_breakpoint_commands because of noargs."
        return
    }

    gdb_test "set args 1" "" "set args in temporary_breakpoint_commands"
    delete_breakpoints

    # Create a temporary breakpoint, and associate a commands list to it.
    # This test will verify that this commands list is executed when the
    # breakpoint is hit.
    gdb_test "tbreak factorial" \
	    "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\." \
	    "breakpoint in temporary_breakpoint_commands"
    
    send_gdb "commands\n"
    gdb_expect {
	-re "Type commands for when breakpoint .* is hit, one per line.*>" {
	    pass "begin commands in bp_deleted_in_command_test"
	}
	-re "$gdb_prompt $" {fail "begin commands in bp_deleted_in_command_test"}
	timeout             {fail "(timeout) begin commands bp_deleted_in_command_test"}
    }
    send_gdb "silent\n"
    gdb_expect {
	-re ">"               {pass "add silent tbreak command"}
	-re "$gdb_prompt $"   {fail "add silent tbreak command"}
	timeout               {fail "(timeout) add silent tbreak command"}
     }
    send_gdb "printf \"factorial tbreak commands executed\\n\"\n"
    gdb_expect {
	-re ">"               {pass "add printf tbreak command"}
	-re "$gdb_prompt $"   {fail "add printf tbreak command"}
	timeout               {fail "(timeout) add printf tbreak command"}
     }
    send_gdb "cont\n"
    gdb_expect {
	-re ">"               {pass "add cont tbreak command"}
	-re "$gdb_prompt $"   {fail "add cont tbreak command"}
	timeout               {fail "(timeout) add cont tbreak command"} }
    send_gdb "end\n"
    gdb_expect {
	-re "$gdb_prompt $"   {pass "end tbreak commands"}
	timeout               {fail "(timeout) end tbreak commands"}
     }

    gdb_run_cmd
    gdb_expect {
	-re ".*factorial tbreak commands executed.*1.*$gdb_prompt $" {
	    pass "run factorial until temporary breakpoint"
	}
	timeout { fail "(timeout) run factorial until temporary breakpoint" }
    }
}

# Test that GDB can handle $arg0 outside of user functions without
# crashing.
proc stray_arg0_test { } {
    gdb_test "print \$arg0" \
	"\\\$\[0-9\]* = void" \
	"stray_arg0_test #1"

    gdb_test "if 1 == 1\nprint \$arg0\nend" \
	"\\\$\[0-9\]* = void" \
	"stray_arg0_test #2"

    gdb_test "print \$arg0 = 1" \
	"\\\$\[0-9\]* = 1" \
	"stray_arg0_test #3"

    gdb_test "print \$arg0" \
	"\\\$\[0-9\]* = 1" \
	"stray_arg0_test #4"
}

# Test that GDB can handle arguments when sourcing files recursively.
# If the arguments are overwritten with ####### then the test has failed.
proc recursive_source_test {} {
    set fd [open "file1" w]
    puts $fd \
{source file2
abcdef qwerty}
    close $fd

    set fd [open "file2" w]
    puts $fd \
{define abcdef
  echo 1: <<<$arg0>>>\n
  source file3
  echo 2: <<<$arg0>>>\n
end}
    close $fd

    set fd [open "file3" w]
    puts $fd \
"echo in file3\\n
#################################################################"
    close $fd

    gdb_test "source file1" \
	"1: <<<qwerty>>>\[\r\n]+in file3\[\r\n]+2: <<<qwerty>>>" \
	"recursive source test"

    file delete file1
    file delete file2
    file delete file3
}

proc gdb_test_no_prompt { command result msg } {
    global gdb_prompt

    set msg "$command - $msg"
    set result "^[string_to_regexp $command]\r\n$result$"
    gdb_test_multiple $command $msg {
	-re "$result" {
	    pass $msg
	    return 1
	}
	-re "\r\n *>$" {
	    fail $msg
	    return 0
	}
    }
    return 0
}

proc if_commands_test {} {
    global gdb_prompt

    gdb_test "set \$tem = 1" "" "set \$tem in if_commands_test"

    set test "if_commands_test 1"
    gdb_test_no_prompt "if \$tem == 2" { >} $test
    gdb_test_no_prompt "break main" { >} $test
    gdb_test_no_prompt "else" { >} $test
    gdb_test_no_prompt "break factorial" { >} $test
    gdb_test_no_prompt "commands" {  >} $test
    gdb_test_no_prompt "silent" {  >} $test
    gdb_test_no_prompt "set \$tem = 3" {  >} $test
    gdb_test_no_prompt "continue" {  >} $test
    gdb_test_multiple "end" "first end - $test" {
	-re " >\$" {
	    pass "first end - $test"
	}
	-re "\r\n>\$" {
	    fail "first end - $test"
	}
    }
    gdb_test_multiple "end" "second end - $test" {
	-re "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\.\r\n$gdb_prompt $" {
	    pass "second end - $test"
	}
	-re "Undefined command: \"silent\".*$gdb_prompt $" {
	    fail "second end - $test"
	}
    }

    set test "if_commands_test 2"
    gdb_test_no_prompt "if \$tem == 1" { >} $test
    gdb_test_no_prompt "break main" { >} $test
    gdb_test_no_prompt "else" { >} $test
    gdb_test_no_prompt "break factorial" { >} $test
    gdb_test_no_prompt "commands" {  >} $test
    gdb_test_no_prompt "silent" {  >} $test
    gdb_test_no_prompt "set \$tem = 3" {  >} $test
    gdb_test_no_prompt "continue" {  >} $test
    gdb_test_multiple "end" "first end - $test" {
	-re " >\$" {
	    pass "first end - $test"
	}
	-re "\r\n>\$" {
	    fail "first end - $test"
	}
    }
    gdb_test_multiple "end" "second end - $test" {
	-re "Breakpoint \[0-9\]+ at .*: file .*/run.c, line \[0-9\]+\.\r\n$gdb_prompt $" {
	    pass "second end - $test"
	}
    }
}

gdbvar_simple_if_test
gdbvar_simple_while_test
gdbvar_complex_if_while_test
progvar_simple_if_test
progvar_simple_while_test
progvar_complex_if_while_test
if_while_breakpoint_command_test
infrun_breakpoint_command_test
breakpoint_command_test
user_defined_command_test
watchpoint_command_test
test_command_prompt_position
deprecated_command_test
bp_deleted_in_command_test
temporary_breakpoint_commands
stray_arg0_test
recursive_source_test
if_commands_test
