-# Copyright 1998, 1999, 2002, 2003, 2004, 2007, 2008
+# Copyright 1998, 1999, 2002, 2003, 2004, 2007, 2008, 2009, 2010
# Free Software Foundation, Inc.
# This program is free software; you can redistribute it and/or modify
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-# Please email any bugs, comments, and/or additions to this file to:
-# bug-gdb@prep.ai.mit.edu
-
# This file was written by Elena Zannoni (ezannoni@cygnus.com)
# This file is part of the gdb testsuite.
#
# test running programs
#
-set prms_id 0
-set bug_id 0
set testfile "break"
set srcfile ${testfile}.c
gdb_exit
-# Don't let a .inputrc file or an existing setting of INPUTRC mess up
-# the test results. Even if /dev/null doesn't exist on the particular
-# platform, the readline library will use the default setting just by
-# failing to open the file. OTOH, opening /dev/null successfully will
-# also result in the default settings being used since nothing will be
-# read from this file.
-global env
-if [info exists env(INPUTRC)] {
- set old_inputrc $env(INPUTRC)
-}
-set env(INPUTRC) "/dev/null"
-
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}
-re "^info t foo\\\x07$"\
{ send_gdb "\n"
gdb_expect {
- -re "Ambiguous info command \"t foo\": target, terminal, threads, tp, tracepoints, types\\..*$gdb_prompt $"\
+ -re "Ambiguous info command \"t foo\": target, tasks, terminal, threads, tp, tracepoints, tvariables, types\\..*$gdb_prompt $"\
{ pass "complete 'info t foo'"}
-re ".*$gdb_prompt $" { fail "complete 'info t foo'"}
timeout {fail "(timeout) complete 'info t foo'"}
-re "^info t\\\x07$"\
{ send_gdb "\n"
gdb_expect {
- -re "Ambiguous info command \"t\": target, terminal, threads, tp, tracepoints, types\\..
+ -re "Ambiguous info command \"t\": target, tasks, terminal, threads, tp, tracepoints, tvariables, types\\..
*$gdb_prompt $"\
{ pass "complete 'info t'"}
-re ".*$gdb_prompt $" { fail "complete 'info t'"}
-re "^info t \\\x07$"\
{ send_gdb "\n"
gdb_expect {
- -re "Ambiguous info command \"t \": target, terminal, threads, tp, tracepoints, types\\..
+ -re "Ambiguous info command \"t \": target, tasks, terminal, threads, tp, tracepoints, tvariables, types\\..
*$gdb_prompt $"\
{ pass "complete 'info t '"}
-re ".*$gdb_prompt $" { fail "complete 'info t '"}
}
+send_gdb "help info wat\t"
+gdb_expect {
+ -re "^help info watchpoints $"\
+ { send_gdb "\n"
+ gdb_expect {
+ -re "Status of watchpoints, .*\r\n.*$gdb_prompt $"\
+ { pass "complete help info wat" }
+ -re ".*$gdb_prompt $" { fail "complete help info wat"}
+ timeout {fail "(timeout) complete help info wat"}
+ }
+ }
+ -re "^help info wat\\\x07$" { fail "complete (2) help info wat" }
+ -re ".*$gdb_prompt $" { fail "complete (3) help info wat" }
+ timeout { fail "(timeout) complete (3) help info wat" }
+ }
+
+
send_gdb "p \"break1\t"
sleep 1
gdb_expect {
timeout { fail "(timeout) complete 'p &values\[0\] -> a' 2" }
}
+gdb_test "complete p &values\[0\]->z" \
+ "p &values.0.->z_field" \
+ "copmletion of field in anonymous union"
+
# The following tests used to simply try to complete `${objdir}/file',
# and so on. The problem is that ${objdir} can be very long; the
# completed filename may be more than eighty characters wide. When
"Working directory [string_to_regexp ${fullsrcdir}].*" \
"cd to \${srcdir}"
+
+# GDB used to fail adding / on directories, on the first try only.
+set uniquedir ../testsuite/gdb.base/comp-dir
+set escapeduniquedir [string_to_regexp ${uniquedir}]
+set uniquesu subdi
+set uniquesub ${uniquesu}r
+set escapeuniquesub [string_to_regexp ${uniquesub}]
+send_gdb "dir ${uniquedir}\t"
+gdb_expect {
+ -re "${escapeduniquedir}/" {
+ pass "directory completion"
+ send_gdb "${uniquesu}\t"
+ }
+ -re "${escapeduniquedir} $" {
+ fail "directory completion (old gdb bug)"
+ send_gdb "\b/${uniquesu}\t"
+ }
+ default {
+ fail "directory completion (timeout)"
+ send_gdb "\ndir ${uniquedir}/${uniquesu}\t"
+ }
+}
+
+gdb_expect {
+ -re "${escapeuniquesub}/$" {
+ pass "directory completion 2"
+ }
+ timeout {
+ fail "directory completion 2"
+ }
+}
+
+# Empty COMMAND sends no newline while " " sends the newline we need.
+gdb_test " " "Source directories searched: .*" "Glob remaining of directory test"
+
+
send_gdb "complete file ./gdb.base/compl\n"
sleep 1
gdb_expect {
-re "marker1.*$gdb_prompt info func marker$"\
{ send_gdb "\n"
gdb_expect {
- -re "All functions matching regular expression \"marker\":.*File.*break1.c:\r\nint marker1\\((void|)\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long int\\);.*$gdb_prompt $"\
+ -re "All functions matching regular expression \"marker\":.*File.*break1.c:\r\nint marker1\\((void|)\\);\r\nint marker2\\(int\\).*marker3\\(char.*char.*\\).*marker4\\(long( int)?\\);.*$gdb_prompt $"\
{ pass "complete 'info func marke'"}
-re ".*$gdb_prompt $" { fail "complete 'info func marke'"}
timeout {fail "(timeout) complete 'info func marke'"}
timeout { fail "(timeout) complete 'set follow-fork-mode'" }
}
+gdb_test_no_output "complete print values\[0\].x." \
+ "field completion with invalid field"
+
+# If there is a non-deprecated completion, it should be returned.
+gdb_test "complete sav" "save" "test non-deprecated completion"
+# If there is only a deprecated completion, then it should be returned.
+gdb_test "complete save-t" "save-tracepoints" "test deprecated completion"
+
+
# Restore globals modified in this test...
-if [info exists old_inputrc] {
- set env(INPUTRC) $old_inputrc
-} else {
- unset env(INPUTRC)
-}
set timeout $oldtimeout1
return 0