OpenCores
URL https://opencores.org/ocsvn/or1k/or1k/trunk

Subversion Repositories or1k

[/] [or1k/] [trunk/] [gdb-5.0/] [gdb/] [testsuite/] [gdb.base/] [completion.exp] - Rev 1774

Go to most recent revision | Compare with Previous | Blame | View Log

# Copyright (C) 1998 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 2 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, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.  

# 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.

#
# tests for command completion
#
# Here are some useful test cases for completion.  
# They should be tested with both M-? and TAB.
#
#   "show output-" "radix"
#   "show output" "-radix"
#   "p" ambiguous (commands starting with p--path, print, printf, etc.)
#   "p "  ambiguous (all symbols)
#   "info t foo" no completions
#   "info t " no completions
#   "info t" ambiguous ("info target", "info terminal", etc.)
#   "info ajksdlfk" no completions
#   "info ajksdlfk " no completions
#   "info" " "
#   "info " ambiguous (all info commands)
#   "p \"a" no completions (string constant)
#   "p 'a" ambiguous (all symbols starting with a)
#   "p b-a" ambiguous (all symbols starting with a)
#   "p b-" ambiguous (all symbols)
#   "file Make" "file" (word break hard to screw up here)
#   "file ../gdb.stabs/we" "ird" (needs to not break word at slash)
#


if $tracelevel then {
        strace $tracelevel
        }


if { ![istarget "hppa*-hp-hpux*"] } {
    #skip all these tests for now (FIXME)
    continue
}

global usestubs

#
# test running programs
#
set prms_id 0
set bug_id 0

set testfile "break"
set srcfile ${testfile}.c
set binfile ${objdir}/${subdir}/${testfile}
if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug additional_flags=-w}] != "" } {
    gdb_suppress_entire_file "Testcase compile failed, so all tests in this file will automatically fail."
}

if [get_compiler_info ${binfile}] {
    return -1;
}

gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load ${binfile}

if ![runto_main] then {
        perror "tests suppressed"
}

set oldtimeout1 $timeout
set timeout 30


send_gdb "hfgfh\t"
sleep 1
gdb_expect  {
        -re "^hfgfh\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Undefined command: \"hfgfh\"\\.  Try \"help\"\\..*$gdb_prompt $"\
                                        { pass "complete 'hfgfh'"}
                      -re ".*$gdb_prompt $" { fail "complete 'hfgfh'"}
                      timeout           {fail "(timeout) complete 'hfgfh'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'hfgfh'" }
        timeout         { fail "(timeout) complete 'hfgfh'" }
        }

#exp_internal 0

send_gdb "show output\t"
sleep 1
gdb_expect  {
        -re "^show output-radix $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { pass "complete 'show output'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output'"}
                      timeout           {fail "(timeout) complete 'show output'"}
                     }
            }
        -re "^show output$"\
            { send_gdb "\n"
               gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { fail "complete 'show output'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output'"}
                      timeout           { fail "(timeout) complete 'show output'"}
                     }

             }

        -re ".*$gdb_prompt $"       { fail "complete 'show output'" }
        timeout         { fail "(timeout) complete 'show output'" }
        }


send_gdb "show output-\t"
sleep 1
gdb_expect  {
        -re "^show output-radix $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { pass "complete 'show output-'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output-'"}
                      timeout           {fail "(timeout) complete 'show output-'"}
                     }
            }
        -re "^show output-$"\
            { send_gdb "\n"
               gdb_expect {
                      -re "Default output radix for printing of values is 10\\..*$gdb_prompt $"\
                                        { fail "complete 'show output-'"}
                      -re ".*$gdb_prompt $" { fail "complete 'show output-'"}
                      timeout           { fail "(timeout) complete 'show output-'"}
                     }

             }

        -re ".*$gdb_prompt $"       { fail "complete 'show output-'" }
        timeout         { fail "(timeout) complete 'show output-'" }
        }

send_gdb "p\t"
sleep 1
gdb_expect  {
        -re "^p\\\x07$"\
            { send_gdb "\n"
              sleep 1
              gdb_expect {
                      -re "The history is empty\\..*$gdb_prompt $"\
                                        { pass "complete 'p'"}
                      -re ".*$gdb_prompt $" { fail "complete 'p'"}
                      timeout           {fail "(timeout) complete 'p' 2"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p'" }
        timeout         { fail "(timeout) complete 'p' 1" }
        }

send_gdb "p \t"
sleep 3
gdb_expect  {
        -re "^p \\\x07$"\
            { send_gdb "\n"
              sleep 1
              gdb_expect {
                      -re "The history is empty\\..*$gdb_prompt $"\
                                        { pass "complete 'p '"}
                      -re ".*$gdb_prompt $" { fail "complete 'p '"}
                      timeout           {fail "(timeout) complete 'p ' 1"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p '" }
        timeout         { fail "(timeout) complete 'p ' 2" }
        }


send_gdb "info t foo\t"
sleep 1
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 $"\
                                        { pass "complete 'info t foo'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info t foo'"}
                      timeout           {fail "(timeout) complete 'info t foo'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info t foo'" }
        timeout         { fail "(timeout) complete 'info t foo'" }
        }

send_gdb "info t\t"
sleep 1
gdb_expect  {
        -re "^info t\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Ambiguous info command \"t\": target, terminal, threads, tp, tracepoints, types\\..
*$gdb_prompt $"\
                                        { pass "complete 'info t'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info t'"}
                      timeout           {fail "(timeout) complete 'info t'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info t'" }
        timeout         { fail "(timeout) complete 'info t'" }
        }


send_gdb "info t \t"
sleep 1
gdb_expect  {
        -re "^info t \\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Ambiguous info command \"t \": target, terminal, threads, tp, tracepoints, types\\..
*$gdb_prompt $"\
                                        { pass "complete 'info t '"}
                      -re ".*$gdb_prompt $" { fail "complete 'info t '"}
                      timeout           {fail "(timeout) complete 'info t '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info t '" }
        timeout         { fail "(timeout) complete 'info t '" }
        }


send_gdb "info asdfgh\t"
sleep 1
gdb_expect  {
        -re "^info asdfgh\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Undefined info command: \"asdfgh\".  Try \"help info\"\\..
*$gdb_prompt $"\
                                        { pass "complete 'info asdfgh'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info asdfgh'"}
                      timeout           {fail "(timeout) complete 'info asdfgh'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info asdfgh'" }
        timeout         { fail "(timeout) complete 'info asdfgh'" }
        }


send_gdb "info asdfgh \t"
sleep 1
gdb_expect  {
        -re "^info asdfgh \\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Undefined info command: \"asdfgh \".  Try \"help info\"\\..
*$gdb_prompt $"\
                                        { pass "complete 'info asdfgh '"}
                      -re ".*$gdb_prompt $" { fail "complete 'info asdfgh '"}
                      timeout           {fail "(timeout) complete 'info asdfgh '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info asdfgh '" }
        timeout         { fail "(timeout) complete 'info asdfgh '" }
        }

send_gdb "info\t"
sleep 1
gdb_expect  {
        -re "^info $"\
            { send_gdb "\n"
              gdb_expect {
                      -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 $"\
                                        { pass "complete 'info'"}
                      -re ".*$gdb_prompt $" { fail "complete 'info'"}
                      timeout           {fail "(timeout) complete 'info'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info'" }
        timeout         { fail "(timeout) complete 'info'" }
        }

send_gdb "info \t"
sleep 1
gdb_expect  {
        -re "^info \\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -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 $"\
                                        { pass "complete 'info '"}
                      -re ".*$gdb_prompt $" { fail "complete 'info '"}
                      timeout           {fail "(timeout) complete 'info '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info '" }
        timeout         { fail "(timeout) complete 'info '" }
        }


send_gdb "info \t"
sleep 1
gdb_expect  {
        -re "^info \\\x07$"\
            { send_gdb "\t"
              gdb_expect {
                      -re "address.*types.*$gdb_prompt info $"\
                          { send_gdb "\n"
                            gdb_expect {
                                     -re "\"info\".*unambiguous\\..*$gdb_prompt $"\
                                        { pass "complete (2) 'info '"}
                                     -re ".*$gdb_prompt $" { fail "complete (2) 'info '"}
                                     timeout           {fail "(timeout) complete (2) 'info '"}
                                    }
                           }
                      -re ".*$gdb_prompt $" { fail "complete (2) 'info '"}
                      timeout           {fail "(timeout) complete (2) 'info '"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete (2) 'info '" }
        timeout         { fail "(timeout) complete (2) 'info '" }
        }


send_gdb "p \"a\t"
sleep 1
gdb_expect  {
        -re "^p \"a\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Unterminated string in expression\\..*$gdb_prompt $"\
                                        { pass "complete 'p a'"}
                      -re ".*$gdb_prompt $" { fail "complete 'p a'"}
                      timeout           {fail "(timeout) complete 'p a'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p \"a'" }
        timeout         { fail "(timeout) complete 'p \"a'" }
        }

send_gdb "p 'a\t"
sleep 1
gdb_expect  {
        -re "^p 'a\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Invalid character constant\\..*$gdb_prompt $"\
                                        { pass "complete 'p \'a'"}
                      -re ".*$gdb_prompt $" { fail "complete 'p \'a'"}
                      timeout           {fail "(timeout) complete 'p \'a'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p \'a'" }
        timeout         { fail "(timeout) complete 'p \'a'" }
        }

send_gdb "p 'a\t"
sleep 1
gdb_expect {
    -re "^p 'a\\\x07$" {
        send_gdb "\t"
        gdb_expect {
            -re "a64l.*atol.*$gdb_prompt p .a$" {
                send_gdb "\n"
                gdb_expect {
                    -re "Invalid character constant\\..*$gdb_prompt $" {
                        pass "complete (2) 'p \'a'"
                    }
                    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
                    timeout { fail "(timeout) complete (2) 'p \'a'" }
                }
            }
            -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
                send_gdb "n"
                gdb_expect {
                    -re "\\(gdb\\) p 'a$" {
                        send_gdb "\n"
                        gdb_expect {
                            -re "Invalid character constant\\..*$gdb_prompt $" {
                                pass "complete (2) 'p \'a'"
                            }
                            -re ".*$gdb_prompt $" { 
                                fail "complete (2) 'p \'a'"
                            }
                            timeout { fail "(timeout) complete (2) 'p \'a'" }
                        }
                    }
                    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
                    timeout { fail "(timeout) complete (2) 'p \'a'" }
                }
            }
            -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
            timeout { fail "(timeout) complete (2) 'p \'a'" }
        }
    }
    -re ".*$gdb_prompt $" { fail "complete (2) 'p \'a'" }
    timeout { fail "(timeout) complete (2) 'p \'a'" }
}


send_gdb "p b-a\t"
sleep 1
gdb_expect  {
        -re "^p b-a\\\x07$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "No symbol \"b\" in current context\\..*$gdb_prompt $"\
                                        { pass "complete 'p b-a'"}
                      -re ".*$gdb_prompt $" { fail "complete 'p b-a'"}
                      timeout           {fail "(timeout) complete 'p b-a'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'p b-a'" }
        timeout         { fail "(timeout) complete 'p b-a'" }
        }

send_gdb "p b-a\t"
sleep 1
gdb_expect {
    -re "^p b-a\\\x07$" {
        send_gdb "\t"
        gdb_expect {
            -re "a64l.*atol.*$gdb_prompt p b-a$" {
                send_gdb "\n"
                gdb_expect {
                    -re "No symbol \"b\" in current context\\..*$gdb_prompt $" {
                        pass "complete (2) 'p b-a'"
                    }
                    -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
                    timeout { fail "(timeout) complete (2) 'p b-a'" }
                }
            }
            -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
                send_gdb "n"
                gdb_expect {
                    -re "\\(gdb\\) p b-a$" {
                        send_gdb "\n"
                        gdb_expect {
                            -re "No symbol \"b\" in current context\\..*$gdb_prompt $" {
                                pass "complete (2) 'p b-a'"
                            }
                            -re ".*$gdb_prompt $" {
                                fail "complete (2) 'p b-a'"
                            }
                            timeout { fail "(timeout) complete (2) 'p b-a'" }
                        }
                    }
                    -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
                    timeout { fail "(timeout) complete (2) 'p b-a'" }
                }
            }
            -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
            timeout { fail "(timeout) complete (2) 'p b-a'" }
        }
    }
    -re ".*$gdb_prompt $" { fail "complete (2) 'p b-a'" }
    timeout { fail "(timeout) complete (2) 'p b-a'" }
}

send_gdb "p b-\t"
sleep 1
gdb_expect  {
    -re "^p b-\\\x07$" {
        send_gdb "\t"
        gdb_expect {
            -re "(There are $decimal possibilities\\.  Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" {
                send_gdb "n"
                gdb_expect {
                    -re "\\(gdb\\) p b-$" {
                        send_gdb "\n"
                        gdb_expect {
                            -re "No symbol \"b\" in current context\\..*$gdb_prompt $" {
                                pass "complete (2) 'p b-'"
                            }
                            -re ".*$gdb_prompt $" {
                                fail "complete (2) 'p b-'"
                            }
                            timeout { fail "(timeout) complete (2) 'p b-'" }
                        }
                    }
                    -re ".*$gdb_prompt $" { fail "complete (2) 'p b-'" }
                    timeout { fail "(timeout) complete (2) 'p b-'" }
                }
            }
            -re ".*$gdb_prompt $" { fail "complete (2) 'p b-'" }
            timeout { fail "(timeout) complete (2) 'p b-'" }
        }
    }
    -re ".*$gdb_prompt $" { fail "complete (2) 'p b-'" }
    timeout { fail "(timeout) complete (2) 'p b-'" }
}

send_gdb "file ${objdir}/Make\t"
sleep 1
gdb_expect  {
        -re "file ${objdir}/Makefile.*$"\
            { send_gdb "\n"
              gdb_expect {
                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"\
                      { send_gdb "n\n"
                        gdb_expect {
                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
                                        { pass "complete 'file Make'"}
                                -re ".*$gdb_prompt $" { fail "complete 'file Make'"}
                                timeout           {fail "(timeout) complete 'file Make'"}
                               }
                      }
                      -re ".*$gdb_prompt $" { fail "complete 'file Make'"}
                      timeout           {fail "(timeout) complete 'file Make'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'file Make'" }
        timeout         { fail "(timeout) complete 'file Make'" }
        }


send_gdb "file ${srcdir}/gdb.base/self\t"
sleep 1
gdb_expect  {
        -re "^file ${srcdir}/gdb.base/.*'selftest\\.exp' $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "\r\nA program is being debugged already\\.  Kill it\\? \\(y or n\\) $"
\
                      { send_gdb "n\n"
                        gdb_expect {
                                -re "\r\nProgram not killed\\.\r\n$gdb_prompt $"\
                                        { pass "complete 'file gdb.base/self'"}
                                -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/self'"}
                                timeout           {fail "(timeout) complete 'file gdb.base/self'"}
                               }
                      }
                      -re ".*$gdb_prompt $" { fail "complete 'file gdb.base/self'"}
                      timeout           {fail "(timeout) complete 'file gdb.base/self'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'file gdb.base/self'" }
        timeout         { fail "(timeout) complete 'file gdb.base/self'" }
        }


send_gdb "info func mark\t"
sleep 1
gdb_expect  {
        -re "^info func mark.*er$"\
            {
              send_gdb "\t\t"
              sleep 3
              gdb_expect {
                      -re "marker1.*$gdb_prompt info func marker$"\
                      { send_gdb "\n"
                        gdb_expect {
                                -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\\);\r\n$gdb_prompt $"\
                                                  { pass "complete 'info func mar'"}
                                -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}
                                timeout           {fail "(timeout) complete 'info func mar'"}
                               }
                      }
                      -re ".*$gdb_prompt $" { fail "complete 'info func mar'"}
                      timeout           {fail "(timeout) complete 'info func mar'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'info func mar'" }
        timeout         { fail "(timeout) complete 'info func mar'" }
        }


send_gdb "set follow-fork-mode \t\t"
sleep 1
gdb_expect  {
        -re "ask.*child.*parent.*$gdb_prompt set follow-fork-mode $"\
            { send_gdb "\n"
              gdb_expect {
                      -re "Requires an argument.*parent.*child.*ask.*$gdb_prompt $"\
                                        { pass "complete 'set follow-fork-mode'"}
                      -re "Ambiguous item \"\"\\..*$gdb_prompt $"\
                                        { pass "complete 'set follow-fork-mode'"}
                      -re ".*$gdb_prompt $" { fail "complete 'set follow-fork-mode'"}
                      timeout           {fail "(timeout) complete 'set follow-fork-mode'"}
                     }
            }
        -re ".*$gdb_prompt $"       { fail "complete 'set follow-fork-mode'" }
        timeout         { fail "(timeout) complete 'set follow-fork-mode'" }
        }

set timeout $oldtimeout1
return 0














Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.