1 # Copyright 1998, 1999 Free Software Foundation, Inc.
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.
8 # This program is distributed in the hope that it will be useful,
9 # but WITHOUT ANY WARRANTY; without even the implied warranty of
10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11 # GNU General Public License for more details.
13 # You should have received a copy of the GNU General Public License
14 # along with this program; if not, write to the Free Software
15 # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 # Please email any bugs, comments, and/or additions to this file to:
18 # bug-gdb@prep.ai.mit.edu
20 # This file was written by Elena Zannoni (ezannoni@cygnus.com)
22 # This file is part of the gdb testsuite.
25 # tests for command completion
27 # Here are some useful test cases for completion.
28 # They should be tested with both M-? and TAB.
30 # "show output-" "radix"
31 # "show output" "-radix"
32 # "p" ambiguous (commands starting with p--path, print, printf, etc.)
33 # "p " ambiguous (all symbols)
34 # "info t foo" no completions
35 # "info t " no completions
36 # "info t" ambiguous ("info target", "info terminal", etc.)
37 # "info ajksdlfk" no completions
38 # "info ajksdlfk " no completions
40 # "info " ambiguous (all info commands)
41 # "p \"a" no completions (string constant)
42 # "p 'a" ambiguous (all symbols starting with a)
43 # "p b-a" ambiguous (all symbols starting with a)
44 # "p b-" ambiguous (all symbols)
45 # "file Make" "file" (word break hard to screw up here)
46 # "file ../gdb.stabs/we" "ird" (needs to not break word at slash)
58 # test running programs
64 set srcfile ${testfile}.c
65 set binfile ${objdir}/${subdir}/${testfile}
66 if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
67 gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
70 if [get_compiler_info ${binfile}] {
76 # Don't let a .inputrc file or an existing setting of INPUTRC mess up
77 # the test results. Even if /dev/null doesn't exist on the particular
78 # platform, the readline library will use the default setting just by
79 # failing to open the file. OTOH, opening /dev/null successfully will
80 # also result in the default settings being used since nothing will be
81 # read from this file.
83 if [info exists env(INPUTRC)] {
84 set old_inputrc $env(INPUTRC)
86 set env(INPUTRC) "/dev/null"
89 gdb_reinitialize_dir $srcdir/$subdir
92 if ![runto_main] then {
93 perror "tests suppressed"
96 set oldtimeout1 $timeout
106 -re "Undefined command: \"hfgfh\"\\. Try \"help\"\\..*$gdb_prompt $"\
107 { pass "complete 'hfgfh'"}
108 -re ".*$gdb_prompt $" { fail "complete 'hfgfh'"}
109 timeout {fail "(timeout) complete 'hfgfh'"}
112 -re ".*$gdb_prompt $" { fail "complete 'hfgfh'" }
113 timeout { fail "(timeout) complete 'hfgfh'" }
118 send_gdb "show output\t"
121 -re "^show output-radix $"\
124 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
125 { pass "complete 'show output'"}
126 -re ".*$gdb_prompt $" { fail "complete 'show output'"}
127 timeout {fail "(timeout) complete 'show output'"}
133 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
134 { fail "complete 'show output'"}
135 -re ".*$gdb_prompt $" { fail "complete 'show output'"}
136 timeout { fail "(timeout) complete 'show output'"}
141 -re ".*$gdb_prompt $" { fail "complete 'show output'" }
142 timeout { fail "(timeout) complete 'show output'" }
146 send_gdb "show output-\t"
149 -re "^show output-radix $"\
152 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
153 { pass "complete 'show output-'"}
154 -re ".*$gdb_prompt $" { fail "complete 'show output-'"}
155 timeout {fail "(timeout) complete 'show output-'"}
158 -re "^show output-$"\
161 -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
162 { fail "complete 'show output-'"}
163 -re ".*$gdb_prompt $" { fail "complete 'show output-'"}
164 timeout { fail "(timeout) complete 'show output-'"}
169 -re ".*$gdb_prompt $" { fail "complete 'show output-'" }
170 timeout { fail "(timeout) complete 'show output-'" }
180 -re "The history is empty\\..*$gdb_prompt $"\
181 { pass "complete 'p'"}
182 -re ".*$gdb_prompt $" { fail "complete 'p'"}
183 timeout {fail "(timeout) complete 'p' 2"}
186 -re ".*$gdb_prompt $" { fail "complete 'p'" }
187 timeout { fail "(timeout) complete 'p' 1" }
197 -re "The history is empty\\..*$gdb_prompt $"\
198 { pass "complete 'p '"}
199 -re ".*$gdb_prompt $" { fail "complete 'p '"}
200 timeout {fail "(timeout) complete 'p ' 1"}
203 -re ".*$gdb_prompt $" { fail "complete 'p '" }
204 timeout { fail "(timeout) complete 'p ' 2" }
208 send_gdb "info t foo\t"
211 -re "^info t foo\\\x07$"\
214 -re "Ambiguous info command \"t foo\": target, terminal, threads, tp, tracepoints, types\\..*$gdb_prompt $"\
215 { pass "complete 'info t foo'"}
216 -re ".*$gdb_prompt $" { fail "complete 'info t foo'"}
217 timeout {fail "(timeout) complete 'info t foo'"}
220 -re ".*$gdb_prompt $" { fail "complete 'info t foo'" }
221 timeout { fail "(timeout) complete 'info t foo'" }
227 -re "^info t\\\x07$"\
230 -re "Ambiguous info command \"t\": target, terminal, threads, tp, tracepoints, types\\..
232 { pass "complete 'info t'"}
233 -re ".*$gdb_prompt $" { fail "complete 'info t'"}
234 timeout {fail "(timeout) complete 'info t'"}
237 -re ".*$gdb_prompt $" { fail "complete 'info t'" }
238 timeout { fail "(timeout) complete 'info t'" }
245 -re "^info t \\\x07$"\
248 -re "Ambiguous info command \"t \": target, terminal, threads, tp, tracepoints, types\\..
250 { pass "complete 'info t '"}
251 -re ".*$gdb_prompt $" { fail "complete 'info t '"}
252 timeout {fail "(timeout) complete 'info t '"}
255 -re ".*$gdb_prompt $" { fail "complete 'info t '" }
256 timeout { fail "(timeout) complete 'info t '" }
260 send_gdb "info asdfgh\t"
263 -re "^info asdfgh\\\x07$"\
266 -re "Undefined info command: \"asdfgh\". Try \"help info\"\\..
268 { pass "complete 'info asdfgh'"}
269 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh'"}
270 timeout {fail "(timeout) complete 'info asdfgh'"}
273 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh'" }
274 timeout { fail "(timeout) complete 'info asdfgh'" }
278 send_gdb "info asdfgh \t"
281 -re "^info asdfgh \\\x07$"\
284 -re "Undefined info command: \"asdfgh \". Try \"help info\"\\..
286 { pass "complete 'info asdfgh '"}
287 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh '"}
288 timeout {fail "(timeout) complete 'info asdfgh '"}
291 -re ".*$gdb_prompt $" { fail "complete 'info asdfgh '" }
292 timeout { fail "(timeout) complete 'info asdfgh '" }
301 -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*info address.*info watchpoints.*\r\n\r\nType \"help info\" followed by info subcommand name for full documentation.\r\nCommand name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
302 { pass "complete 'info'"}
303 -re ".*$gdb_prompt $" { fail "complete 'info'"}
304 timeout {fail "(timeout) complete 'info'"}
307 -re ".*$gdb_prompt $" { fail "complete 'info'" }
308 timeout { fail "(timeout) complete 'info'" }
317 -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*info address.*Type \"help info\" followed by info subcommand name for full documentation.\r\nCommand name abbreviations are allowed if unambiguous\\..*$gdb_prompt $"\
318 { pass "complete 'info '"}
319 -re ".*$gdb_prompt $" { fail "complete 'info '"}
320 timeout {fail "(timeout) complete 'info '"}
323 -re ".*$gdb_prompt $" { fail "complete 'info '" }
324 timeout { fail "(timeout) complete 'info '" }
334 -re "address.*types.*$gdb_prompt info $"\
337 -re "\"info\".*unambiguous\\..*$gdb_prompt $"\
338 { pass "complete (2) 'info '"}
339 -re ".*$gdb_prompt $" { fail "complete (2) 'info '"}
340 timeout {fail "(timeout) complete (2) 'info '"}
343 -re ".*$gdb_prompt $" { fail "complete (2) 'info '"}
344 timeout {fail "(timeout) complete (2) 'info '"}
347 -re ".*$gdb_prompt $" { fail "complete (2) 'info '" }
348 timeout { fail "(timeout) complete (2) 'info '" }
358 -re "Unterminated string in expression\\..*$gdb_prompt $"\
359 { pass "complete 'p a'"}
360 -re ".*$gdb_prompt $" { fail "complete 'p a'"}
361 timeout {fail "(timeout) complete 'p a'"}
364 -re ".*$gdb_prompt $" { fail "complete 'p \"a'" }
365 timeout { fail "(timeout) complete 'p \"a'" }
374 -re "Invalid character constant\\..*$gdb_prompt $"\
375 { pass "complete 'p \'a'"}
376 -re ".*$gdb_prompt $" { fail "complete 'p \'a'"}
377 timeout {fail "(timeout) complete 'p \'a'"}
380 -re ".*$gdb_prompt $" { fail "complete 'p \'a'" }
381 timeout { fail "(timeout) complete 'p \'a'" }
390 -re "a64l.*argv.*$gdb_prompt p .a$" {
393 -re "Invalid character constant\\..*$gdb_prompt $" {
394 pass "complete (2) 'p \'a'"
396 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
397 timeout { fail "(timeout) complete (2) 'p \'a'" }
400 -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
403 -re "\\(gdb\\) p 'a$" {
406 -re "Invalid character constant\\..*$gdb_prompt $" {
407 pass "complete (2) 'p \'a'"
409 -re ".*$gdb_prompt $" {
410 fail "complete (2) 'p \'a'"
412 timeout { fail "(timeout) complete (2) 'p \'a'" }
415 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
416 timeout { fail "(timeout) complete (2) 'p \'a'" }
419 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
420 timeout { fail "(timeout) complete (2) 'p \'a'" }
423 -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
424 timeout { fail "(timeout) complete (2) 'p \'a'" }
434 -re "No symbol \"b\" in current context\\..*$gdb_prompt $"\
435 { pass "complete 'p b-a'"}
436 -re ".*$gdb_prompt $" { fail "complete 'p b-a'"}
437 timeout {fail "(timeout) complete 'p b-a'"}
440 -re ".*$gdb_prompt $" { fail "complete 'p b-a'" }
441 timeout { fail "(timeout) complete 'p b-a'" }
447 -re "^p b-a\\\x07$" {
450 -re "a64l.*argv.*$gdb_prompt p b-a$" {
453 -re "No symbol \"b\" in current context\\..*$gdb_prompt $" {
454 pass "complete (2) 'p b-a'"
456 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
457 timeout { fail "(timeout) complete (2) 'p b-a'" }
460 -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
463 -re "\\(gdb\\) p b-a$" {
466 -re "No symbol \"b\" in current context\\..*$gdb_prompt $" {
467 pass "complete (2) 'p b-a'"
469 -re ".*$gdb_prompt $" {
470 fail "complete (2) 'p b-a'"
472 timeout { fail "(timeout) complete (2) 'p b-a'" }
475 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
476 timeout { fail "(timeout) complete (2) 'p b-a'" }
479 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
480 timeout { fail "(timeout) complete (2) 'p b-a'" }
483 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
484 timeout { fail "(timeout) complete (2) 'p b-a'" }
493 -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
496 -re "\\(gdb\\) p b-$" {
499 -re "No symbol \"b\" in current context\\..*$gdb_prompt $" {
500 pass "complete (2) 'p b-'"
502 -re ".*$gdb_prompt $" {
503 fail "complete (2) 'p b-'"
505 timeout { fail "(timeout) complete (2) 'p b-'" }
508 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-'" }
509 timeout { fail "(timeout) complete (2) 'p b-'" }
512 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-'" }
513 timeout { fail "(timeout) complete (2) 'p b-'" }
516 -re ".*$gdb_prompt $" { fail "complete (2) 'p b-'" }
517 timeout { fail "(timeout) complete (2) 'p b-'" }
520 send_gdb "file ${objdir}/Make\t"
523 -re "file ${objdir}/Makefile.*$"\
526 -re "\r\nA program is being debugged already\\. Kill it\\? \\(y or n\\) $"\
529 -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
530 { pass "complete 'file Make'"}
531 -re ".*$gdb_prompt $" { fail "complete 'file Make'"}
532 timeout {fail "(timeout) complete 'file Make'"}
535 -re ".*$gdb_prompt $" { fail "complete 'file Make'"}
536 timeout {fail "(timeout) complete 'file Make'"}
539 -re ".*$gdb_prompt $" { fail "complete 'file Make'" }
540 timeout { fail "(timeout) complete 'file Make'" }
544 send_gdb "file ${srcdir}/gdb.base/compl\t"
547 -re "^file ${srcdir}/gdb.base/completion\\.exp $"\
550 -re "\r\nA program is being debugged already\\. Kill it\\? \\(y or n\\) $"
554 -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
555 { pass "complete 'file gdb.base/compl'"}
556 -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/compl'"}
557 timeout {fail "(timeout) complete 'file gdb.base/compl'"}
560 -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/compl'"}
561 timeout {fail "(timeout) complete 'file gdb.base/compl'"}
564 -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/compl'" }
565 timeout { fail "(timeout) complete 'file gdb.base/compl'" }
568 send_gdb "info func mark\t"
571 -re "^info func mark.*er$"\
576 -re "marker1.*$gdb_prompt info func marker$"\
579 -re "All functions matching regular expression \"marker\":\r\n\r\nFile.*break.c:\r\nint marker1\\(\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long int\\);\r\n$gdb_prompt $"\
580 { pass "complete 'info func mar'"}
581 -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}
582 timeout {fail "(timeout) complete 'info func mar'"}
585 -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}
586 timeout {fail "(timeout) complete 'info func mar'"}
589 -re ".*$gdb_prompt $" { fail "complete 'info func mar'" }
590 timeout { fail "(timeout) complete 'info func mar'" }
594 send_gdb "set follow-fork-mode \t\t"
597 -re "ask.*child.*parent.*$gdb_prompt set follow-fork-mode $"\
600 -re "Requires an argument.*ask.*child.*parent.*$gdb_prompt $"\
601 { pass "complete 'set follow-fork-mode'"}
602 -re "Ambiguous item \"\"\\..*$gdb_prompt $"\
603 { pass "complete 'set follow-fork-mode'"}
604 -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'"}
605 timeout {fail "(timeout) complete 'set follow-fork-mode'"}
608 -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'" }
609 timeout { fail "(timeout) complete 'set follow-fork-mode'" }
612 # Restore globals modified in this test...
613 if [info exists old_inputrc] {
614 set env(INPUTRC) $old_inputrc
618 set timeout $oldtimeout1