From c82f680a94399a0f1c9fdc53ed79a8cf333213a6 Mon Sep 17 00:00:00 2001 From: Tom de Vries Date: Tue, 19 Oct 2021 23:50:50 +0200 Subject: [gdb/testsuite] Reimplement gdb.gdb/python-interrupts.exp as unittest The test-case gdb.gdb/python-interrupts.exp: - runs to captured_command_loop - sets a breakpoint at set_active_ext_lang - calls a python command - verifies the command triggers the breakpoint - sends a signal and verifies the result The test-case is fragile, because (f.i. with -flto) it cannot be guaranteed that captured_command_loop and set_active_ext_lang are available for setting breakpoints. Reimplement the test-case as unittest, using: - execute_command_to_string to capture the output - try/catch to catch the "Error while executing Python code" exception - a new hook selftests::hook_set_active_ext_lang to raise the signal Tested on x86_64-linux. --- gdb/testsuite/gdb.gdb/python-interrupts.exp | 35 ----------------------------- 1 file changed, 35 deletions(-) delete mode 100644 gdb/testsuite/gdb.gdb/python-interrupts.exp (limited to 'gdb/testsuite') diff --git a/gdb/testsuite/gdb.gdb/python-interrupts.exp b/gdb/testsuite/gdb.gdb/python-interrupts.exp deleted file mode 100644 index 33cf1ef..0000000 --- a/gdb/testsuite/gdb.gdb/python-interrupts.exp +++ /dev/null @@ -1,35 +0,0 @@ -# Copyright 2014-2021 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 . - -# Test Python SIGINT handling. -# This is easiest if we can send SIGINT when gdb is at particular points. - -load_lib selftest-support.exp -load_lib gdb-python.exp - -proc test_python_interrupts {} { - if {[skip_python_tests]} { - return -1 - } - - gdb_breakpoint set_active_ext_lang temporary - gdb_test "call catch_command_errors(execute_command, \"python print(5)\", 0, true)" \ - "Temporary breakpoint.*silently stop." - gdb_test "signal SIGINT" \ - "KeyboardInterrupt.*Error while executing Python code." - return 0 -} - -do_self_tests captured_command_loop test_python_interrupts -- cgit v1.1