diff options
Diffstat (limited to 'gdb/testsuite')
-rw-r--r-- | gdb/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-complete.cc | 40 | ||||
-rw-r--r-- | gdb/testsuite/gdb.mi/mi-complete.exp | 72 |
3 files changed, 117 insertions, 0 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 78289d6..bdabbc7 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2019-01-28 Jan Vrany <jan.vrany@fit.cvut.cz> + + * gdb.mi/mi-complete.exp: New file. + * gdb.mi/mi-complete.cc: Likewise. + 2019-05-15 Bernhard Heckel <bernhard.heckel@intel.com> * gdb.fortran/vla-sizeof.exp: Add tests of sizeof applied to diff --git a/gdb/testsuite/gdb.mi/mi-complete.cc b/gdb/testsuite/gdb.mi/mi-complete.cc new file mode 100644 index 0000000..3742152 --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi-complete.cc @@ -0,0 +1,40 @@ +/* Copyright 2018-2019 Free Software Foundation, Inc. + + This file is part of GDB. + + 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/>. */ + +#include <vector> + +class A +{ +public: + void push_back (void *value); +}; + +void +A::push_back (void *value) +{ + /* nothing */ +} + +int +main (int argc, char **argv) +{ + std::vector < int >v; + v.push_back (1); + A a; + a.push_back (&v); + return 0; +} diff --git a/gdb/testsuite/gdb.mi/mi-complete.exp b/gdb/testsuite/gdb.mi/mi-complete.exp new file mode 100644 index 0000000..692b004 --- /dev/null +++ b/gdb/testsuite/gdb.mi/mi-complete.exp @@ -0,0 +1,72 @@ +# Copyright 2018-2019 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/>. + +# Verify GDB/MI -complete in various scenarios. This test only tests +# -complete command, not the correctness of completions. + +load_lib mi-support.exp +set MIFLAGS "-i=mi" + +gdb_exit +if [mi_gdb_start] { + continue +} + +standard_testfile .cc + +if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug c++}] != "" } { + untested "failed to compile" + return -1 +} + +mi_run_to_main + +mi_gdb_test "1-complete br" \ + "1\\^done,completion=\"break\",matches=\\\[.*\"break\",.*\"break-range\".*\\\],max_completions_reached=\"0\"" \ + "-complete br" + +# Check empty completion list. +mi_gdb_test "5-complete bogus" \ + "5\\^done,matches=\\\[\\\],max_completions_reached=\"0\"" \ + "-complete bogus" + +# Check completions for commands with space. +mi_gdb_test "4-complete \"b mai\"" \ + "4\\^done,completion=\"b main\",matches=\\\[.*\"b main\".*\\\],max_completions_reached=\"0\"" \ + "-complete \"b mai\"" + +# Check wildmatching. +mi_gdb_test "5-complete \"b push_ba\"" \ + "5\\^done,completion=\"b push_back\\(\",matches=\\\[.*\"b A::push_back\\(void\\*\\)\".*\\\],max_completions_reached=\"0\"" \ + "-complete \"b push_ba\", wildmatching" + +mi_gdb_test "-info-gdb-mi-command complete" \ + "\\^done,command=\{exists=\"true\"\}" \ + "-info-gdb-mi-command complete" + +# Limit max completions and check that max_completions_reached=\"0\" is set +# to 1. +send_gdb "set max-completions 1\n" + +mi_gdb_test "2-complete br" \ + ".*2\\^done,completion=\"br\[A-Za-z0-9-\]+\",matches=\\\[\"br\[A-Za-z0-9-\]+\"\\\],max_completions_reached=\"1\"" \ + "-complete br, max-completions 1" + +# Disable completions and check an error is returned +send_gdb "set max-completions 0\n" + +mi_gdb_test "3-complete br" \ + ".*3\\^error,msg=\".*" \ + "-complete br, max-completions 0" |