X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=gdb%2Ftestsuite%2Fgdb.base%2Fcompletion.exp;h=fbd859986674297562bea6cdf7adbae573caf4b2;hb=d77f58beee3dbdfc260b5cf672a565f686b996f7;hp=4100db330455501b0b381fc8bb94558f48734c0b;hpb=14032a66f195a775441d5c9ec66fe36a8e54d635;p=deliverable%2Fbinutils-gdb.git diff --git a/gdb/testsuite/gdb.base/completion.exp b/gdb/testsuite/gdb.base/completion.exp index 4100db3304..fbd8599866 100644 --- a/gdb/testsuite/gdb.base/completion.exp +++ b/gdb/testsuite/gdb.base/completion.exp @@ -1,4 +1,4 @@ -# 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 @@ -14,9 +14,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# 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. @@ -88,18 +85,6 @@ if [get_compiler_info ${binfile}] { 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} @@ -226,7 +211,7 @@ gdb_expect { -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'"} @@ -242,7 +227,7 @@ gdb_expect { -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'"} @@ -260,7 +245,7 @@ gdb_expect { -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 '"} @@ -369,7 +354,7 @@ gdb_expect { -re "^help info watchpoints $"\ { send_gdb "\n" gdb_expect { - -re "Synonym for .*\r\n.*$gdb_prompt $"\ + -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"} @@ -737,6 +722,42 @@ gdb_test "cd ${fullsrcdir}" \ "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 { @@ -775,7 +796,7 @@ 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'"} @@ -808,12 +829,25 @@ gdb_expect { timeout { fail "(timeout) complete 'set follow-fork-mode'" } } +send_gdb "p values\[0\].nonex.\t" +gdb_expect { + -re "Type struct some_struct has no component named nonex.\r\n$gdb_prompt $"\ + { pass "Completing non-existing component" } + -re ".*$gdb_prompt $" { fail "Completing non-existing component" } + timeout { fail "(timeout) Completing non-existing component" } + eof { fail "(eof) Completing non-existing component #2" } + } +# Double memory freeing gets found only on the second run: +send_gdb "p values\[0\].nonex.\t" +gdb_expect { + -re "Type struct some_struct has no component named nonex.\r\n$gdb_prompt $"\ + { pass "Completing non-existing component #2" } + -re ".*$gdb_prompt $" { fail "Completing non-existing component #2" } + timeout { fail "(timeout) Completing non-existing component #2" } + eof { fail "(eof) Completing non-existing component #2" } + } + # 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