# Copyright (C) 2008, 2009 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 . # This file is part of the GDB testsuite. It tests Python-based # pretty-printing for MI. load_lib mi-support.exp set MIFLAGS "-i=mi2" gdb_exit if [mi_gdb_start] { continue } set testfile "py-prettyprint" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-DMI}] != "" } { untested mi2-var-child.exp return -1 } mi_delete_breakpoints mi_gdb_reinitialize_dir $srcdir/$subdir mi_gdb_load ${binfile} if {[lsearch -exact [mi_get_features] python] < 0} { unsupported "python support is disabled" return -1 } mi_runto main mi_gdb_test "python execfile ('${srcdir}/${subdir}/${testfile}.py')" "" mi_continue_to_line [gdb_get_line_number {MI breakpoint here} ${testfile}.c] \ "step to breakpoint" mi_create_floating_varobj container c "create container varobj" mi_list_varobj_children container { } "examine container children=0" mi_next "next over update 1" mi_varobj_update_dynamic container { { {container.\[0\]} {\[0\]} 0 int } } "varobj update 1" mi_next "next over update 2" mi_varobj_update_dynamic container { { {container.\[0\]} {\[0\]} 0 int } { {container.\[1\]} {\[1\]} 0 int } } "varobj update 2" mi_gdb_test "-var-set-visualizer container None" \ "\\^done" \ "clear visualizer" mi_gdb_test "-var-update container" \ "\\^done,changelist=\\\[\\\]" \ "varobj update after clearing" mi_gdb_test "-var-set-visualizer container gdb.default_visualizer" \ "\\^done" \ "choose default visualizer" mi_varobj_update_dynamic container { { {container.\[0\]} {\[0\]} 0 int } { {container.\[1\]} {\[1\]} 0 int } } "varobj update after choosing default" mi_gdb_test "-var-set-visualizer container ContainerPrinter" \ "\\^done" \ "choose visualizer using expression" mi_varobj_update_dynamic container { { {container.\[0\]} {\[0\]} 0 int } { {container.\[1\]} {\[1\]} 0 int } } "varobj update after choosing via expression" mi_continue_to_line \ [gdb_get_line_number {Another MI breakpoint} ${testfile}.c] \ "step to second breakpoint" mi_varobj_update_with_type_change container int 0 "update after type change"