| # 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 <http://www.gnu.org/licenses/>. |
| |
| # 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 "python-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" |