# 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 . # 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"