| # Copyright (C) 2023 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" |