# This testcase is part of GDB, the GNU debugger.
-# Copyright 2005, 2007, 2008 Free Software Foundation, Inc.
+# Copyright 2005-2020 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
# Test GDB's "source" command - reads in a GDB script.
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-if $tracelevel then {
- strace $tracelevel
+standard_testfile structs.c
+
+gdb_start
+
+gdb_test "source -v ${srcdir}/${subdir}/source-test.gdb" \
+ "echo test source options.*" \
+ "source -v"
+
+# There was a bug where -v got stuck in the "on" position.
+# Verify "source script", without the -v, is not verbose.
+set test "source after -v"
+gdb_test_multiple "source ${srcdir}/${subdir}/source-test.gdb" $test {
+ -re "echo test source options.*$gdb_prompt $" {
+ fail "$test"
+ }
+ -re "test source options.*$gdb_prompt $" {
+ pass "$test"
+ }
}
-set prms_id 0
-set bug_id 0
+gdb_test "dir ${srcdir}/${subdir}" "Source directories searched: .*" \
+ "set search directories"
+gdb_test "source -s ./source-test.gdb" \
+ "test source options" \
+ "source -s"
-set testfile "structs"
-set srcfile ${testfile}.c
-set binfile ${objdir}/${subdir}/${testfile}
+# Test -v and -s in either order.
+gdb_test "source -s -v ./source-test.gdb" \
+ "echo test source options.*" \
+ "source -s -v"
+gdb_test "source -v -s ./source-test.gdb" \
+ "echo test source options.*" \
+ "source -v -s"
-gdb_start
+# Test sourcing a non-existant file, both when the source command
+# comes from the a command entered at the GDB prompt, and when
+# it comes from a script being sourced.
+gdb_test "source for-sure-nonexistant-file" \
+ "for-sure-nonexistant-file: No such file or directory\."
+
+gdb_test "source source-nofile.gdb" \
+ "warning: for-sure-nonexistant-file: No such file or directory\.\[\r\n\]*source error not fatal"
+
+# Test commands that error out in sourced files, including in nested sourced
+# files.
+#
+# This needs to come after the "dir" command tested above for source-error.gdb
+# to find source-error-1.gdb.
gdb_test "source ${srcdir}/${subdir}/source-error.gdb" \
- "source-error.gdb:22: Error in sourced command file:\[\r\n\]*Cannot access memory at address 0x0.*" \
+ [multi_line ".*source-error.gdb:20: Error in sourced command file:" \
+ "source-error-1.gdb:21: Error in sourced command file:" \
+ "Cannot access memory at address 0x0" ] \
"script contains error"
-
-gdb_exit