| # Copyright (C) 2023-2024 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/>. | |
| # Test custom MI notifications implemented in Python. | |
| load_lib gdb-python.exp | |
| load_lib mi-support.exp | |
| set MIFLAGS "-i=mi" | |
| gdb_exit | |
| if {[mi_gdb_start]} { | |
| return | |
| } | |
| if {[lsearch -exact [mi_get_features] python] < 0} { | |
| unsupported "python support is disabled" | |
| return -1 | |
| } | |
| standard_testfile | |
| mi_gdb_test "set python print-stack full" \ | |
| ".*\\^done" \ | |
| "set python print-stack full" | |
| mi_gdb_test "python gdb.notify_mi('-test-notification')" \ | |
| ".*=-test-notification\r\n\\^done" \ | |
| "python notification, no additional data parameter" | |
| mi_gdb_test "python gdb.notify_mi('-test-notification', None)" \ | |
| ".*=-test-notification\r\n\\^done" \ | |
| "python notification, no additional data" | |
| mi_gdb_test "python gdb.notify_mi('-test-notification', \{ 'data1' : 1 , 'data2' : 2 })" \ | |
| ".*=-test-notification,data1=\"1\",data2=\"2\"\r\n\\^done" \ | |
| "python notification, with additional data" | |
| mi_gdb_test "python gdb.notify_mi('-test-notification', 1)" \ | |
| ".*\\^error,msg=\".*\"" \ | |
| "python notification, invalid additional data" | |
| mi_gdb_test "python gdb.notify_mi('', None)" \ | |
| ".*\\^error,msg=\".*\"" \ | |
| "python notification, empty notification name" | |
| mi_gdb_test "python gdb.notify_mi('**invalid**', None)" \ | |
| ".*\\^error,msg=\".*\"" \ | |
| "python notification, invalid notification name" | |
| mi_gdb_test "python gdb.notify_mi(\[1,2,3\], None)" \ | |
| ".*\\^error,msg=\".*\"" \ | |
| "python notification, non-string notification name" | |
| mi_gdb_test "python gdb.notify_mi()" \ | |
| ".*\\^error,msg=\".*\"" \ | |
| "python notification, no arguments passed" | |
| mi_gdb_test "python gdb.notify_mi('thread-group-added', \{'id' : 'i2'\})" \ | |
| ".*=thread-group-added,id=\"i2\"\r\n\\^done" \ | |
| "python notification, using existing internal notification name" |