diff options
author | Gary Benson <gbenson@redhat.com> | 2018-08-29 16:11:50 +0100 |
---|---|---|
committer | Gary Benson <gbenson@redhat.com> | 2018-08-29 16:11:50 +0100 |
commit | b0f492b90f3d13da8ac80437e6ecb9a87db4a75b (patch) | |
tree | 1b77332c0e4f9f694b3a5b8702e2a8ceb17ebed0 /gdb/testsuite/gdb.base | |
parent | 2362e7f76adb395df19c867cd27c75f77a0ade6f (diff) | |
download | binutils-gdb-b0f492b90f3d13da8ac80437e6ecb9a87db4a75b.tar.gz |
Indicate batch mode failures by exiting with nonzero status
This commit causes GDB in batch mode to exit with nonzero status
if the last command to be executed fails.
gdb/ChangeLog:
PR gdb/13000:
* gdb/main.c (captured_main_1): Exit with nonzero status
in batch mode if the last command to be executed failed.
* NEWS: Mention the above.
gdb/testsuite/ChangeLog:
PR gdb/13000:
* gdb.base/batch-exit-status.exp: New file.
* gdb.base/batch-exit-status.good-commands: Likewise.
* gdb.base/batch-exit-status.bad-commands: Likewise.
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r-- | gdb/testsuite/gdb.base/batch-exit-status.bad-commands | 1 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/batch-exit-status.exp | 63 | ||||
-rw-r--r-- | gdb/testsuite/gdb.base/batch-exit-status.good-commands | 1 |
3 files changed, 65 insertions, 0 deletions
diff --git a/gdb/testsuite/gdb.base/batch-exit-status.bad-commands b/gdb/testsuite/gdb.base/batch-exit-status.bad-commands new file mode 100644 index 00000000000..4793acb2fad --- /dev/null +++ b/gdb/testsuite/gdb.base/batch-exit-status.bad-commands @@ -0,0 +1 @@ +bork diff --git a/gdb/testsuite/gdb.base/batch-exit-status.exp b/gdb/testsuite/gdb.base/batch-exit-status.exp new file mode 100644 index 00000000000..bee4d724e6d --- /dev/null +++ b/gdb/testsuite/gdb.base/batch-exit-status.exp @@ -0,0 +1,63 @@ +# Copyright (C) 2018 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/>. + +# Check that "gdb -batch" exits with appropriate status. + +standard_testfile + +set good_commands "$srcdir/$subdir/batch-exit-status.good-commands" +set bad_commands "$srcdir/$subdir/batch-exit-status.bad-commands" + +proc _test_exit_status {expect_status cmdline_opts} { + global gdb_spawn_id + + gdb_exit + if {[gdb_spawn_with_cmdline_opts $cmdline_opts] != 0} { + fail "spawn" + return + } + + set result [wait -i $gdb_spawn_id] + verbose $result + gdb_assert { [lindex $result 2] == 0 } + set actual_status [lindex $result 3] + gdb_assert { $actual_status == $expect_status } +} + +proc test_exit_status {expect_status cmdline_opts} { + with_test_prefix $cmdline_opts { + _test_exit_status $expect_status $cmdline_opts + } +} + +# gdb -batch with nothing to do should exit 0. +test_exit_status 0 "-batch" + +# Bad command-line options should cause exit 1. +test_exit_status 1 "-batch -jslkflsdjlkfjlksdjf" + +# gdb -batch with good commands should exit 0. +test_exit_status 0 "-batch -ex \"info source\"" +test_exit_status 0 "-batch -x $good_commands" + +# gdb -batch with bad commands should exit 1. +test_exit_status 1 "-batch -ex \"set not-a-thing 4\"" +test_exit_status 1 "-batch -x $bad_commands" + +# Success or failure of the last thing determines the exit code. +test_exit_status 0 "-batch -ex \"set not-a-thing 4\" -x $good_commands" +test_exit_status 0 "-batch -x $bad_commands -ex \"info source\"" +test_exit_status 1 "-batch -x $good_commands -x $bad_commands" +test_exit_status 1 "-batch -x $good_commands -ex \"set not-a-thing 4\"" diff --git a/gdb/testsuite/gdb.base/batch-exit-status.good-commands b/gdb/testsuite/gdb.base/batch-exit-status.good-commands new file mode 100644 index 00000000000..80708a96534 --- /dev/null +++ b/gdb/testsuite/gdb.base/batch-exit-status.good-commands @@ -0,0 +1 @@ +info mem |