From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 3500 invoked by alias); 3 May 2011 15:33:51 -0000 Received: (qmail 3422 invoked by uid 22791); 3 May 2011 15:33:35 -0000 X-SWARE-Spam-Status: No, hits=-1.9 required=5.0 tests=AWL,BAYES_00,TW_DF,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from mail.codesourcery.com (HELO mail.codesourcery.com) (38.113.113.100) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 03 May 2011 15:33:18 +0000 Received: (qmail 9009 invoked from network); 3 May 2011 15:33:16 -0000 Received: from unknown (HELO scottsdale.localnet) (pedro@127.0.0.2) by mail.codesourcery.com with ESMTPA; 3 May 2011 15:33:16 -0000 From: Pedro Alves To: gdb-patches@sourceware.org Subject: gdb.base/completion.exp - simplify with gdb_test_multiple Date: Tue, 03 May 2011 15:33:00 -0000 User-Agent: KMail/1.13.5 (Linux/2.6.35-28-generic; KDE/4.6.2; x86_64; ; ) MIME-Version: 1.0 Content-Type: Text/Plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Message-Id: <201105031633.22925.pedro@codesourcery.com> X-IsSubscribed: yes Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org X-SW-Source: 2011-05/txt/msg00063.txt.bz2 Here's the finished patch that gets rid of all the ".*$gdb_prompt $" and timeout handling, by virtue of using gdb_test_multiple instead of gdb_expect directly, which makes the test much more readable, IMO, and brings in of course the usual gdb_test_multiple goodness, like erroring on internal errors and stuff instead of timing out. Anyone feel like taking a look at this? I tested this with and without Jan's read1 hack from PR testsuite/12649. Pedro Alves 2011-05-03 Pedro Alves gdb/testsuite/ * gdb.base/completion.exp: Use gdb_test_multiple instead of gdb_test and explicit $gdb_prompt/timeout matches. * lib/gdb.exp (gdb_test_multiple): Don't check for newlines on empty commands, and false positive. --- gdb/testsuite/gdb.base/completion.exp | 762 ++++++++++++++-------------------- gdb/testsuite/lib/gdb.exp | 2 2 files changed, 322 insertions(+), 442 deletions(-) Index: src/gdb/testsuite/gdb.base/completion.exp =================================================================== --- src.orig/gdb/testsuite/gdb.base/completion.exp 2011-05-02 18:48:17.719463000 +0100 +++ src/gdb/testsuite/gdb.base/completion.exp 2011-05-03 16:18:10.319462999 +0100 @@ -94,343 +94,279 @@ if ![runto_main] then { set oldtimeout1 $timeout set timeout 30 - +set test "complete 'hfgfh'" send_gdb "hfgfh\t" -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'" } - } +gdb_test_multiple "" "$test" { + -re "^hfgfh\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" $test { + -re "Undefined command: \"hfgfh\"\\. Try \"help\"\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} #exp_internal 0 +set test "complete 'show output'" send_gdb "show output\t" -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 ".*$gdb_prompt $" { fail "complete 'show output'" } - timeout { fail "(timeout) complete 'show output'" } - } - +gdb_test_multiple "" "$test" { + -re "^show output-radix $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Default output radix for printing of values is 10\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'show output-'" send_gdb "show output-\t" -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 ".*$gdb_prompt $" { fail "complete 'show output-'" } - timeout { fail "(timeout) complete 'show output-'" } +gdb_test_multiple "" "$test" { + -re "^show output-radix $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Default output radix for printing of values is 10\\..*$gdb_prompt $" { + pass "$test" + } } + } +} +set test "complete 'p'" send_gdb "p\t" -gdb_expect { - -re "^p\\\x07$"\ - { send_gdb "\n" - 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" } +gdb_test_multiple "" "$test" { + -re "^p\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "The history is empty\\..*$gdb_prompt $" { + pass "$test" + } } + } +} +set test "complete 'p '" send_gdb "p \t" -gdb_expect { - -re "^p \\\x07$"\ - { send_gdb "\n" - 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" } - } - +gdb_test_multiple "" "$test" { + -re "^p \\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "The history is empty\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info t foo'" send_gdb "info t foo\t" -gdb_expect { - -re "^info t foo\\\x07$"\ - { send_gdb "\n" - gdb_expect { - -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 ".*$gdb_prompt $" { fail "complete 'info t foo'" } - timeout { fail "(timeout) complete 'info t foo'" } - } +gdb_test_multiple "" "$test" { + -re "^info t foo\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Ambiguous info command \"t foo\": target, tasks, terminal, threads, tp, tracepoints, tvariables, types\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info t'" send_gdb "info t\t" -gdb_expect { - -re "^info t\\\x07$"\ - { send_gdb "\n" - gdb_expect { - -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'"} - timeout {fail "(timeout) complete 'info t'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'info t'" } - timeout { fail "(timeout) complete 'info t'" } - } - +gdb_test_multiple "" "$test" { + -re "^info t\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Ambiguous info command \"t\": target, tasks, terminal, threads, tp, tracepoints, tvariables, types\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info t '" send_gdb "info t \t" -gdb_expect { - -re "^info t \\\x07$"\ - { send_gdb "\n" - gdb_expect { - -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 '"} - timeout {fail "(timeout) complete 'info t '"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'info t '" } - timeout { fail "(timeout) complete 'info t '" } - } - +gdb_test_multiple "" "$test" { + -re "^info t \\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Ambiguous info command \"t \": target, tasks, terminal, threads, tp, tracepoints, tvariables, types\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info asdfgh'" send_gdb "info asdfgh\t" -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'" } - } - +gdb_test_multiple "" "$test" { + -re "^info asdfgh\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Undefined info command: \"asdfgh\". Try \"help info\"\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info asdfgh '" send_gdb "info asdfgh \t" -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 '" } - } +gdb_test_multiple "" "$test" { + -re "^info asdfgh \\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Undefined info command: \"asdfgh \". Try \"help info\"\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info'" send_gdb "info\t" -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.*$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'" } - } +gdb_test_multiple "" "$test" { + -re "^info $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands.*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info '" send_gdb "info \t" -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.*$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 '" } - } +gdb_test_multiple "" "$test" { + -re "^info \\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "\"info\" must be followed by the name of an info command\\.\r\nList of info subcommands:\r\n\r\n.*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete (2) 'info '" send_gdb "info \t" -gdb_expect { - -re "^info \\\x07$"\ - { send_gdb "\t" - gdb_expect { - -re "address.*types.*$gdb_prompt "\ - { 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 '" } - } - +gdb_test_multiple "" "$test" { + -re "^info \\\x07$" { + send_gdb "\t" + gdb_test_multiple "" "$test" { + -re "address.*types.*$gdb_prompt " { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "\"info\".*unambiguous\\..*$gdb_prompt $" { + pass "$test" + } + } + } + } + } +} +set test "complete help info wat" send_gdb "help info wat\t" -gdb_expect { - -re "^help info watchpoints $"\ - { send_gdb "\n" - gdb_expect { - -re "Status of specified 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" } - } - +gdb_test_multiple "" "$test" { + -re "^help info watchpoints $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Status of specified watchpoints.*\r\n.*$gdb_prompt $" { + pass "$test" + } + } + } + -re "^help info wat\\\x07$" { + fail "$test" + } +} +set test "complete 'p \"break1'" send_gdb "p \"break1\t" -gdb_expect { - -re "^p \"break1\\\x07$"\ - { send_gdb "\n" - gdb_expect { - -re ".*$gdb_prompt $" { fail "complete 'p \"break1'"} - timeout {fail "(timeout) complete 'p \"break1'"} - } - } - -re "^p \"break1\\.c\"$"\ - { send_gdb "\n" - gdb_expect { - -re ".*$gdb_prompt $" { pass "complete 'p \"break1'"} - timeout {fail "(timeout) complete 'p \"break1'"} - } +gdb_test_multiple "" "$test" { + -re "^p \"break1\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" {} + } + -re "^p \"break1\\.c\"$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re ".*$gdb_prompt $" { + pass "$test" } - -re ".*$gdb_prompt $" { fail "complete 'p \"break1'" } - timeout { fail "(timeout) complete 'p \"break1'" } - } + } + } +} setup_xfail "*-*-*" +set test "complete 'p \"break1.'" send_gdb "p \"break1.\t" -gdb_expect { - -re "^p \"break1\\.\\\x07$"\ - { send_gdb "\n" - gdb_expect { - -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'"} - timeout {fail "(timeout) complete 'p \"break1.'"} - } - } - -re "^p \"break1\\.c\"$"\ - { send_gdb "\n" - gdb_expect { - -re ".*$gdb_prompt $" { pass "complete 'p \"break1.'"} - timeout {fail "(timeout) complete 'p \"break1.'"} - } - } - -re "^p \"break1\\..*$" - { send_gdb "\n" - gdb_expect { - -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'"} - timeout {fail "(timeout) complete 'p \"break1.'"} - } +gdb_test_multiple "" "$test" { + -re "^p \"break1\\.\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" {} + } + -re "^p \"break1\\.c\"$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re ".*$gdb_prompt $" { + pass "$test" } - -re ".*$gdb_prompt $" { fail "complete 'p \"break1.'" } - timeout { fail "(timeout) complete 'p \"break1.'" } - } + } + } + -re "^p \"break1\\..*$" { + send_gdb "\n" + gdb_test_multiple "" "$test" {} + } +} +set test "complete 'p \'arg'" send_gdb "p 'arg\t" -gdb_expect { - -re "^p 'arg\\\x07$"\ - { send_gdb "\n" - gdb_expect { - -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $"\ - { pass "complete 'p \'arg'"} - -re ".*$gdb_prompt $" { fail "complete 'p \'arg'"} - timeout {fail "(timeout) complete 'p \'arg'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'p \'arg'" } - timeout { fail "(timeout) complete 'p \'arg'" } - } +gdb_test_multiple "" "$test" { + -re "^p 'arg\\\x07$" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete (2) 'p \'arg'" send_gdb "p 'arg\t" -gdb_expect { +gdb_test_multiple "" "$test" { -re "^p 'arg\\\x07$" { send_gdb "\t" - gdb_expect { + gdb_test_multiple "" "$test" { -re ".*argv.*$gdb_prompt " { send_gdb "\n" - gdb_expect { + gdb_test_multiple "" "$test" { -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" { - pass "complete (2) 'p \'arg'" + pass "$test" } - -re ".*$gdb_prompt $" { fail "complete (2) 'p \'arg'" } - timeout { fail "(timeout) complete (2) 'p \'arg'" } } } -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 { + gdb_test_multiple "" "$test" { -re "\\(gdb\\) p 'arg$" { send_gdb "\n" - gdb_expect { + gdb_test_multiple "" "$test" { -re "(Invalid character constant\\.|Unmatched single quote\\.).*$gdb_prompt $" { - pass "complete (2) 'p \'arg'" + pass "$test" } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p \'arg'" - } - timeout { fail "(timeout) complete (2) 'p \'arg'" } } } - -re ".*$gdb_prompt $" { fail "complete (2) 'p \'arg'" } - timeout { fail "(timeout) complete (2) 'p \'arg'" } } } - -re ".*$gdb_prompt $" { fail "complete (2) 'p \'arg'" } - timeout { fail "(timeout) complete (2) 'p \'arg'" } } } - -re ".*$gdb_prompt $" { fail "complete (2) 'p \'arg'" } - timeout { fail "(timeout) complete (2) 'p \'arg'" } } @@ -455,47 +391,32 @@ gdb_expect { # # So, I'm hoping that there is no system with a static library variable named # `no_var_by_this_name'. + +set test "complete 'p no_var_named_this-arg'" send_gdb "p no_var_named_this-arg\t" -gdb_expect { +gdb_test_multiple "" "$test" { -re "^p no_var_named_this-arg\\\x07$" { send_gdb "\n" - gdb_expect { + gdb_test_multiple "" "$test" { -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { - pass "complete 'p no_var_named_this-arg'" - } - -re ".*$gdb_prompt $" { - fail "complete 'p no_var_named_this-arg'" - } - timeout { - fail "(timeout) complete 'p no_var_named_this-arg'" + pass "$test" } } } - -re ".*$gdb_prompt $" { - fail "complete 'p no_var_named_this-arg'" - } - timeout { - fail "(timeout) complete 'p no_var_named_this-arg'" - } } +set test "complete (2) 'p no_var_named_this-arg'" send_gdb "p no_var_named_this-arg\t" -gdb_expect { +gdb_test_multiple "" "$test" { -re "^p no_var_named_this-arg\\\x07$" { send_gdb "\t" - gdb_expect { + gdb_test_multiple "" "$test" { -re ".*argv.*$gdb_prompt " { send_gdb "\n" - gdb_expect { + gdb_test_multiple "" "$test" { -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { - pass "complete (2) 'p no_var_named_this-arg'" + pass "$test" } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p no_var_named_this-arg'" - } - timeout { - fail "(timeout) complete (2) 'p no_var_named_this-arg'" - } } } -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" { @@ -504,133 +425,102 @@ gdb_expect { # Eat the prompt gdb_expect { -re "$gdb_prompt " { - pass "complete (2) 'p no_var_named_this-arg' (eat prompt)" + pass "$test (eat prompt)" + } + timeout { + fail "(timeout) $test (eat prompt)" } - timeout { fail "(timeout) complete (2) 'p no_var_named_this-' (eat prompt)" } } - gdb_expect { + gdb_test_multiple "" "$test" { -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { - pass "complete (2) 'p no_var_named_this-arg'" - } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p no_var_named_this-arg'" - } - timeout { - fail "(timeout) complete (2) 'p no_var_named_this-arg'" + pass "$test" } } } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p no_var_named_this-arg'" - } - timeout { fail "(timeout) complete (2) 'p no_var_named_this-arg'" } } } - -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-arg'" } - timeout { fail "(timeout) complete (2) 'p no_var_named_this-arg'" } } +set test "complete (2) 'p no_var_named_this-'" send_gdb "p no_var_named_this-\t" -gdb_expect { +gdb_test_multiple "" "$test" { -re "^p no_var_named_this-\\\x07$" { send_gdb "\t" - gdb_expect { + gdb_test_multiple "" "$test" { -re "(There are $decimal possibilities\\. Do you really\r\nwish to see them all.|Display all $decimal possibilities.) \\(y or n\\)$" { send_gdb "n\n" # Eat the prompt gdb_expect { -re "$gdb_prompt " { - pass "complete (2) 'p no_var_named_this-' (eat prompt)" + pass "$test (eat prompt)" + } + timeout { + fail "(timeout) $test (eat prompt)" } - timeout { fail "(timeout) complete (2) 'p no_var_named_this-' (eat prompt)" } } - gdb_expect { + gdb_test_multiple "" "$test" { -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { - pass "complete (2) 'p no_var_named_this-'" - } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p no_var_named_this-'" - } - timeout { - fail "(timeout) complete (2) 'p no_var_named_this-'" + pass "$test" } } } -re ".*argv.*$gdb_prompt $" { send_gdb "\n" - gdb_expect { + gdb_test_multiple "" "$test" { -re "No symbol \"no_var_named_this\" in current context\\..*$gdb_prompt $" { - pass "complete (2) 'p no_var_named_this-'" - } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p no_var_named_this-'" - } - timeout { - fail "(timeout) complete (2) 'p no_var_named_this-'" + pass "$test" } } } - -re ".*$gdb_prompt $" { - fail "complete (2) 'p no_var_named_this-'" - } - timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" } } } - -re ".*$gdb_prompt $" { fail "complete (2) 'p no_var_named_this-'" } - timeout { fail "(timeout) complete (2) 'p no_var_named_this-'" } } +set test "complete 'p values\[0\].a'" send_gdb "p values\[0\].a\t" -gdb_expect { - -re "^p values.0..a_field $"\ - { send_gdb "\n" - gdb_expect { - -re "^.* = 0.*$gdb_prompt $"\ - { pass "complete 'p values\[0\].a'"} - -re ".*$gdb_prompt $" { fail "complete 'p values\[0\].a'"} - timeout {fail "(timeout) complete 'p values\[0\].a'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'p values\[0\].a'" } - timeout { fail "(timeout) complete 'p values\[0\].a' 2" } - } +gdb_test_multiple "" "$test" { + -re "^p values.0..a_field $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "^.* = 0.*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'p values\[0\] . a'" send_gdb "p values\[0\] . a\t" -gdb_expect { - -re "^p values.0. . a_field $"\ - { send_gdb "\n" - gdb_expect { - -re "^.* = 0.*$gdb_prompt $"\ - { pass "complete 'p values\[0\] . a'"} - -re ".*$gdb_prompt $" { fail "complete 'p values\[0\] . a'"} - timeout {fail "(timeout) complete 'p values\[0\] . a'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'p values\[0\] . a'" } - timeout { fail "(timeout) complete 'p values\[0\] . a' 2" } - } +gdb_test_multiple "" "$test" { + -re "^p values.0. . a_field $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "^.* = 0.*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'p &values\[0\] -> a'" send_gdb "p &values\[0\] -> a\t" -gdb_expect { - -re "^p &values.0. -> a_field $"\ - { send_gdb "\n" - gdb_expect { - -re "^.* = .*0x\[0-9a-fA-F\]*.*$gdb_prompt $"\ - { pass "complete 'p &values\[0\] -> a'"} - -re ".*$gdb_prompt $" { fail "complete 'p &values\[0\] -> a'"} - timeout {fail "(timeout) complete 'p &values\[0\] -> a'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'p &values\[0\] -> a'" } - timeout { fail "(timeout) complete 'p &values\[0\] -> a' 2" } - } +gdb_test_multiple "" "$test" { + -re "^p &values.0. -> a_field $" { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "^.* = .*0x\[0-9a-fA-F\]*.*$gdb_prompt $" { + pass "$test" + } + } + } +} gdb_test "complete p &values\[0\]->z" \ "p &values.0.->z_field" \ - "copmletion of field in anonymous union" + "completion 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 @@ -703,72 +593,62 @@ gdb_expect { # Empty COMMAND sends no newline while " " sends the newline we need. gdb_test " " "Source directories searched: .*" "Glob remaining of directory test" +gdb_test "complete file ./gdb.base/compl" \ + "file ./gdb.base/completion\\.exp.*" \ + "complete-command 'file ./gdb.base/compl'" -send_gdb "complete file ./gdb.base/compl\n" -gdb_expect { - -re "file ./gdb.base/completion\\.exp.*$gdb_prompt $" - { pass "complete-command 'file ./gdb.base/compl'"} - -re ".*$gdb_prompt $" { fail "complete-command 'file ./gdb.base/compl'" } - timeout { fail "(timeout) complete-command 'file ./gdb.base/compl'" } -} - +set test "complete 'file ./gdb.base/complet'" send_gdb "file ./gdb.base/complet\t" -gdb_expect { - -re "^file ./gdb.base/completion\\.exp $"\ - { send_gdb "\n" - # Ignore the exact error message. - gdb_test_multiple "" "complete 'file ./gdb.base/complet'" { - -re "\r\nA program is being debugged already\\.\[\r\n\]+Are you sure you want to change the file\\? \\(y or n\\) $" { - send_gdb "n\n" - exp_continue - } - -re ".*$gdb_prompt $" { pass "complete 'file ./gdb.base/complet'" } - } - } - -re ".*$gdb_prompt $" { fail "complete 'file ./gdb.base/complet'" } - timeout { fail "(timeout) complete 'file ./gdb.base/complet'" } - } +gdb_test_multiple "" "$test" { + -re "^file ./gdb.base/completion\\.exp $" { + send_gdb "\n" + # Ignore the exact error message. + gdb_test_multiple "" "complete 'file ./gdb.base/complet'" { + -re "\r\nA program is being debugged already\\.\[\r\n\]+Are you sure you want to change the file\\? \\(y or n\\) $" { + send_gdb "n\n" + exp_continue + } + -re ".*$gdb_prompt $" { + pass "$test" + } + } + } +} +set test "complete 'info func marke'" send_gdb "info func marke\t" -gdb_expect { - -re "^info func marke.*r$"\ - { - send_gdb "\t\t" - gdb_expect { - -re "marker1.*$gdb_prompt "\ - { 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 $"\ - { pass "complete 'info func marke'"} - -re ".*$gdb_prompt $" { fail "complete 'info func marke'"} - timeout {fail "(timeout) complete 'info func marke'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'info func marke'"} - timeout {fail "(timeout) complete 'info func marke'"} - } - } - -re ".*$gdb_prompt $" { fail "complete 'info func marke'" } - timeout { fail "(timeout) complete 'info func marke'" } - } +gdb_test_multiple "" "$test" { + -re "^info func marke.*r$" { + send_gdb "\t\t" + gdb_test_multiple "" "$test" { + -re "marker1.*$gdb_prompt " { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -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 "$test" + } + } + } + } + } +} +set test "complete 'set follow-fork-mode'" send_gdb "set follow-fork-mode \t\t" -gdb_expect { - -re "child.*parent.*$gdb_prompt "\ - { send_gdb "\n" - gdb_expect { - -re "Requires an argument.*child.*parent.*$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'" } - } +gdb_test_multiple "" "$test" { + -re "child.*parent.*$gdb_prompt " { + send_gdb "\n" + gdb_test_multiple "" "$test" { + -re "Requires an argument.*child.*parent.*$gdb_prompt $" { + pass "$test" + } + -re "Ambiguous item \"\"\\..*$gdb_prompt $" { + pass "$test" + } + } + } +} gdb_test_no_output "complete print values\[0\].x." \ "field completion with invalid field" Index: src/gdb/testsuite/lib/gdb.exp =================================================================== --- src.orig/gdb/testsuite/lib/gdb.exp 2011-05-02 16:33:33.709463001 +0100 +++ src/gdb/testsuite/lib/gdb.exp 2011-05-03 00:20:33.159462999 +0100 @@ -593,7 +593,7 @@ proc gdb_test_multiple { command message set message $command } - if [string match "*\[\r\n\]" $command] { + if { $command != "" && [string match "*\[\r\n\]" $command] } { error "Invalid trailing newline in \"$message\" test" }