Index: gdb/testsuite/gdb.python/py-cmd.exp |
diff --git a/gdb/testsuite/gdb.python/py-cmd.exp b/gdb/testsuite/gdb.python/py-cmd.exp |
index 36fa343d891c207c2568ef457e11d63e01b54d93..6d129506cbbf34678c282816236b55ecae382b6b 100644 |
--- a/gdb/testsuite/gdb.python/py-cmd.exp |
+++ b/gdb/testsuite/gdb.python/py-cmd.exp |
@@ -1,4 +1,4 @@ |
-# Copyright (C) 2009-2012 Free Software Foundation, Inc. |
+# Copyright (C) 2009-2013 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 |
@@ -18,15 +18,20 @@ |
load_lib gdb-python.exp |
-# Start with a fresh gdb. |
+standard_testfile |
-gdb_exit |
-gdb_start |
-gdb_reinitialize_dir $srcdir/$subdir |
+if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { |
+ return -1 |
+} |
# Skip all tests if Python scripting is not enabled. |
if { [skip_python_tests] } { continue } |
+if ![runto_main] then { |
+ fail "Cannot run to main." |
+ return 0 |
+} |
+ |
# Test a simple command. |
gdb_py_test_multiple "input simple command" \ |
@@ -35,7 +40,7 @@ gdb_py_test_multiple "input simple command" \ |
" def __init__ (self):" "" \ |
" super (test_cmd, self).__init__ (\"test_cmd\", gdb.COMMAND_OBSCURE)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"test_cmd output, arg = %s\" % arg" "" \ |
+ " print (\"test_cmd output, arg = %s\" % arg)" "" \ |
"test_cmd ()" "" \ |
"end" "" |
@@ -49,7 +54,7 @@ gdb_py_test_multiple "input prefix command" \ |
" def __init__ (self):" "" \ |
" super (prefix_cmd, self).__init__ (\"prefix_cmd\", gdb.COMMAND_OBSCURE, gdb.COMPLETE_NONE, True)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"prefix_cmd output, arg = %s\" % arg" "" \ |
+ " print (\"prefix_cmd output, arg = %s\" % arg)" "" \ |
"prefix_cmd ()" "" \ |
"end" "" |
@@ -61,7 +66,7 @@ gdb_py_test_multiple "input subcommand" \ |
" def __init__ (self):" "" \ |
" super (subcmd, self).__init__ (\"prefix_cmd subcmd\", gdb.COMMAND_OBSCURE)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"subcmd output, arg = %s\" % arg" "" \ |
+ " print (\"subcmd output, arg = %s\" % arg)" "" \ |
"subcmd ()" "" \ |
"end" "" |
@@ -75,7 +80,7 @@ gdb_py_test_multiple "input prefix command, keyword arguments" \ |
" def __init__ (self):" "" \ |
" super (prefix_cmd2, self).__init__ (\"prefix_cmd2\", gdb.COMMAND_OBSCURE, prefix = True, completer_class = gdb.COMPLETE_FILENAME)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"prefix_cmd2 output, arg = %s\" % arg" "" \ |
+ " print (\"prefix_cmd2 output, arg = %s\" % arg)" "" \ |
"prefix_cmd2 ()" "" \ |
"end" "" |
@@ -87,7 +92,7 @@ gdb_py_test_multiple "input subcommand under prefix_cmd2" \ |
" def __init__ (self):" "" \ |
" super (subcmd, self).__init__ (\"prefix_cmd2 subcmd\", gdb.COMMAND_OBSCURE)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"subcmd output, arg = %s\" % arg" "" \ |
+ " print (\"subcmd output, arg = %s\" % arg)" "" \ |
"subcmd ()" "" \ |
"end" "" |
@@ -101,7 +106,7 @@ gdb_py_test_multiple "input new subcommand" \ |
" def __init__ (self):" "" \ |
" super (newsubcmd, self).__init__ (\"info newsubcmd\", gdb.COMMAND_OBSCURE)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"newsubcmd output, arg = %s\" % arg" "" \ |
+ " print (\"newsubcmd output, arg = %s\" % arg)" "" \ |
"newsubcmd ()" "" \ |
"end" "" |
@@ -123,19 +128,19 @@ gdb_test "test_error_cmd ugh" "you lose!" "call error command" |
# Test gdb.string_to_argv. |
-gdb_test "python print gdb.string_to_argv (\"1 2 3\")" \ |
+gdb_test "python print (gdb.string_to_argv (\"1 2 3\"))" \ |
{\['1', '2', '3'\]} \ |
"string_to_argv (\"1 2 3\")" |
-gdb_test "python print gdb.string_to_argv (\"'1 2' 3\")" \ |
+gdb_test "python print (gdb.string_to_argv (\"'1 2' 3\"))" \ |
{\['1 2', '3'\]} \ |
"string_to_argv (\"'1 2' 3\")" |
-gdb_test "python print gdb.string_to_argv ('\"1 2\" 3')" \ |
+gdb_test "python print (gdb.string_to_argv ('\"1 2\" 3'))" \ |
{\['1 2', '3'\]} \ |
"string_to_argv ('\"1 2\" 3')" |
-gdb_test "python print gdb.string_to_argv ('1\\ 2 3')" \ |
+gdb_test "python print (gdb.string_to_argv ('1\\ 2 3'))" \ |
{\['1 2', '3'\]} \ |
"string_to_argv ('1\\ 2 3')" |
@@ -147,7 +152,7 @@ gdb_py_test_multiple "input simple user-defined command" \ |
" def __init__ (self):" "" \ |
" super (test_help, self).__init__ (\"test_help\", gdb.COMMAND_USER)" "" \ |
" def invoke (self, arg, from_tty):" "" \ |
- " print \"test_cmd output, arg = %s\" % arg" "" \ |
+ " print (\"test_cmd output, arg = %s\" % arg)" "" \ |
"test_help ()" "" \ |
"end" "" |
@@ -155,3 +160,32 @@ gdb_test "test_help ugh" "test_cmd output, arg = ugh" "call simple user-defined |
# Make sure the command shows up in `help user-defined`. |
gdb_test "help user-defined" "User-defined commands.\[\r\n\]+The commands in this class are those defined by the user.\[\r\n\]+Use the \"define\" command to define a command.\[\r\n\]+\[\r\n\]+List of commands:\[\r\n\]+\[\r\n\]+test_help -- Docstring\[\r\n\]+\[\r\n\]+Type \"help\" followed by command name for full documentation.\[\r\n\]+Type \"apropos word\" to search for commands related to \"word\".\[\r\n\]+Command name abbreviations are allowed if unambiguous.\[\r\n\]+" "see user-defined command in `help user-defined`" |
+ |
+# Test expression completion on fields |
+gdb_py_test_multiple "expression completion command" \ |
+ "python" "" \ |
+ "class expr_test (gdb.Command):" "" \ |
+ " def __init__ (self):" "" \ |
+ " super (expr_test, self).__init__ (\"expr_test\", gdb.COMMAND_USER, gdb.COMPLETE_EXPRESSION)" "" \ |
+ " def invoke (self, arg, from_tty):" "" \ |
+ " print (\"invoked on = %s\" % arg)" "" \ |
+ "expr_test ()" "" \ |
+ "end" "" |
+ |
+ |
+gdb_test "complete expr_test bar\." \ |
+ "expr_test bar\.bc.*expr_test bar\.ij.*" \ |
+ "Test completion through complete command" |
+ |
+set test "complete 'expr_test bar.i'" |
+send_gdb "expr_test bar\.i\t\t" |
+gdb_test_multiple "" "$test" { |
+ -re "expr_test bar\.ij \\\x07$" { |
+ send_gdb "\n" |
+ gdb_test_multiple "" $test { |
+ -re "invoked on = bar.ij.*$gdb_prompt $" { |
+ pass "$test" |
+ } |
+ } |
+ } |
+} |