From a2c09bd0c7148be4ed1b9631905ebe891204be1a Mon Sep 17 00:00:00 2001 From: Doug Evans Date: Fri, 1 Oct 2010 17:03:50 +0000 Subject: [PATCH] * lib/gdb-python.exp: New file. * gdb.python/py-block.exp: Use it. * gdb.python/py-breakpoint.exp: Ditto. * gdb.python/py-frame.exp: Ditto. * gdb.python/py-inferior.exp: Ditto. * gdb.python/py-param.exp: Ditto. * gdb.python/py-prettyprint.exp: Ditto. * gdb.python/py-shared.exp: Ditto. * gdb.python/py-symbol.exp: Ditto. * gdb.python/py-symtab.exp: Ditto. * gdb.python/py-type.exp: Ditto. * gdb.python/py-value.exp: Ditto. * gdb.python/python.exp: Ditto. --- gdb/testsuite/ChangeLog | 16 ++++++++++ gdb/testsuite/gdb.python/py-block.exp | 13 ++------ gdb/testsuite/gdb.python/py-breakpoint.exp | 13 ++------ gdb/testsuite/gdb.python/py-frame.exp | 13 ++------ gdb/testsuite/gdb.python/py-inferior.exp | 11 +------ gdb/testsuite/gdb.python/py-param.exp | 29 +----------------- gdb/testsuite/gdb.python/py-prettyprint.exp | 13 ++------ gdb/testsuite/gdb.python/py-shared.exp | 13 ++------ gdb/testsuite/gdb.python/py-symbol.exp | 13 ++------ gdb/testsuite/gdb.python/py-symtab.exp | 13 ++------ gdb/testsuite/gdb.python/py-type.exp | 13 ++------ gdb/testsuite/gdb.python/py-value.exp | 31 ++----------------- gdb/testsuite/gdb.python/python.exp | 13 ++------ gdb/testsuite/lib/gdb-python.exp | 47 +++++++++++++++++++++++++++++ 14 files changed, 85 insertions(+), 166 deletions(-) create mode 100644 gdb/testsuite/lib/gdb-python.exp diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 6bd5a87..32e9edb 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,19 @@ +2010-10-01 Doug Evans + + * lib/gdb-python.exp: New file. + * gdb.python/py-block.exp: Use it. + * gdb.python/py-breakpoint.exp: Ditto. + * gdb.python/py-frame.exp: Ditto. + * gdb.python/py-inferior.exp: Ditto. + * gdb.python/py-param.exp: Ditto. + * gdb.python/py-prettyprint.exp: Ditto. + * gdb.python/py-shared.exp: Ditto. + * gdb.python/py-symbol.exp: Ditto. + * gdb.python/py-symtab.exp: Ditto. + * gdb.python/py-type.exp: Ditto. + * gdb.python/py-value.exp: Ditto. + * gdb.python/python.exp: Ditto. + 2010-09-30 Tom Tromey * gdb.base/anon.exp: New file. diff --git a/gdb/testsuite/gdb.python/py-block.exp b/gdb/testsuite/gdb.python/py-block.exp index f6e5d73..f7065ac 100644 --- a/gdb/testsuite/gdb.python/py-block.exp +++ b/gdb/testsuite/gdb.python/py-block.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-block" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -28,17 +30,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debu return -1 } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - # Start with a fresh gdb. gdb_exit gdb_start diff --git a/gdb/testsuite/gdb.python/py-breakpoint.exp b/gdb/testsuite/gdb.python/py-breakpoint.exp index 07a7362..7da94c4 100644 --- a/gdb/testsuite/gdb.python/py-breakpoint.exp +++ b/gdb/testsuite/gdb.python/py-breakpoint.exp @@ -20,23 +20,14 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-breakpoint" set srcfile ${testfile}.c if { [prepare_for_testing ${testfile}.exp ${testfile} ${srcfile}] } { return -1 } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - # Start with a fresh gdb. clean_restart ${testfile} diff --git a/gdb/testsuite/gdb.python/py-frame.exp b/gdb/testsuite/gdb.python/py-frame.exp index e1212d3..6c296b9 100644 --- a/gdb/testsuite/gdb.python/py-frame.exp +++ b/gdb/testsuite/gdb.python/py-frame.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-frame" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -28,17 +30,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debu return -1 } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - # Start with a fresh gdb. gdb_exit diff --git a/gdb/testsuite/gdb.python/py-inferior.exp b/gdb/testsuite/gdb.python/py-inferior.exp index 309ae8c..45f43a1 100644 --- a/gdb/testsuite/gdb.python/py-inferior.exp +++ b/gdb/testsuite/gdb.python/py-inferior.exp @@ -20,16 +20,7 @@ if $tracelevel then { strace $tracelevel } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} +load_lib gdb-python.exp set testfile "py-inferior" set srcfile ${testfile}.c diff --git a/gdb/testsuite/gdb.python/py-param.exp b/gdb/testsuite/gdb.python/py-param.exp index 6c0ff97..a82b4ca 100644 --- a/gdb/testsuite/gdb.python/py-param.exp +++ b/gdb/testsuite/gdb.python/py-param.exp @@ -20,34 +20,7 @@ if $tracelevel then { strace $tracelevel } -# Usage: gdb_py_test_multiple NAME INPUT RESULT {INPUT RESULT}... -# Run a test named NAME, consisting of multiple lines of input. -# After each input line INPUT, search for result line RESULT. -# Succeed if all results are seen; fail otherwise. -proc gdb_py_test_multiple {name args} { - global gdb_prompt - foreach {input result} $args { - if {[gdb_test_multiple $input "$name - $input" { - -re "\[\r\n\]*($result)\[\r\n\]+($gdb_prompt | *>)$" { - pass "$name - $input" - } - }]} { - return 1 - } - } - return 0 -} - -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} +load_lib gdb-python.exp # Start with a fresh gdb. gdb_exit diff --git a/gdb/testsuite/gdb.python/py-prettyprint.exp b/gdb/testsuite/gdb.python/py-prettyprint.exp index 3b2aadd..057443e 100644 --- a/gdb/testsuite/gdb.python/py-prettyprint.exp +++ b/gdb/testsuite/gdb.python/py-prettyprint.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-prettyprint" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -31,17 +33,6 @@ gdb_start # Skip all tests if Python scripting is not enabled. if { [skip_python_tests] } { continue } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - proc run_lang_tests {lang} { global srcdir subdir srcfile binfile testfile hex if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "debug $lang"] != "" } { diff --git a/gdb/testsuite/gdb.python/py-shared.exp b/gdb/testsuite/gdb.python/py-shared.exp index 41394b4..28b4270 100644 --- a/gdb/testsuite/gdb.python/py-shared.exp +++ b/gdb/testsuite/gdb.python/py-shared.exp @@ -15,6 +15,8 @@ # This file is part of the GDB testsuite. +load_lib gdb-python.exp + if {[skip_shlib_tests]} { return 0 } @@ -38,17 +40,6 @@ if { [gdb_compile ${srcdir}/${subdir}/${srcfile} ${binfile} executable $exec_opt return -1 } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - # Start with a fresh gdb. gdb_exit gdb_start diff --git a/gdb/testsuite/gdb.python/py-symbol.exp b/gdb/testsuite/gdb.python/py-symbol.exp index 3ad978b..b0e14bb 100644 --- a/gdb/testsuite/gdb.python/py-symbol.exp +++ b/gdb/testsuite/gdb.python/py-symbol.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-symbol" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -28,17 +30,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debu return -1 } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - # Start with a fresh gdb. gdb_exit gdb_start diff --git a/gdb/testsuite/gdb.python/py-symtab.exp b/gdb/testsuite/gdb.python/py-symtab.exp index 5c60ad3..d4b46b3 100644 --- a/gdb/testsuite/gdb.python/py-symtab.exp +++ b/gdb/testsuite/gdb.python/py-symtab.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-symbol" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -28,17 +30,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debu return -1 } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - # Start with a fresh gdb. gdb_exit gdb_start diff --git a/gdb/testsuite/gdb.python/py-type.exp b/gdb/testsuite/gdb.python/py-type.exp index 10bb652..8b378d4 100644 --- a/gdb/testsuite/gdb.python/py-type.exp +++ b/gdb/testsuite/gdb.python/py-type.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-type" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -59,17 +61,6 @@ proc runto_bp {bp} { gdb_continue_to_breakpoint $bp } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - proc test_fields {lang} { global gdb_prompt diff --git a/gdb/testsuite/gdb.python/py-value.exp b/gdb/testsuite/gdb.python/py-value.exp index 0ecb57c..895969b 100644 --- a/gdb/testsuite/gdb.python/py-value.exp +++ b/gdb/testsuite/gdb.python/py-value.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "py-value" set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} @@ -28,35 +30,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debu return -1 } -# Usage: gdb_py_test_multiple NAME INPUT RESULT {INPUT RESULT}... -# Run a test named NAME, consisting of multiple lines of input. -# After each input line INPUT, search for result line RESULT. -# Succeed if all results are seen; fail otherwise. -proc gdb_py_test_multiple {name args} { - global gdb_prompt - foreach {input result} $args { - if {[gdb_test_multiple $input "$name - $input" { - -re "\[\r\n\]*($result)\[\r\n\]+($gdb_prompt | *>)$" { - pass "$name - $input" - } - }]} { - return 1 - } - } - return 0 -} - -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - proc test_value_creation {} { global gdb_prompt diff --git a/gdb/testsuite/gdb.python/python.exp b/gdb/testsuite/gdb.python/python.exp index 2f6a9fe..301245b 100644 --- a/gdb/testsuite/gdb.python/python.exp +++ b/gdb/testsuite/gdb.python/python.exp @@ -20,6 +20,8 @@ if $tracelevel then { strace $tracelevel } +load_lib gdb-python.exp + set testfile "python" set srcfile ${testfile}.c set srcfile1 ${testfile}-1.c @@ -39,17 +41,6 @@ gdb_reinitialize_dir $srcdir/$subdir # Skip all tests if Python scripting is not enabled. if { [skip_python_tests] } { continue } -# Run a command in GDB, and report a failure if a Python exception is thrown. -# If report_pass is true, report a pass if no exception is thrown. -proc gdb_py_test_silent_cmd {cmd name report_pass} { - global gdb_prompt - - gdb_test_multiple $cmd $name { - -re "Traceback.*$gdb_prompt $" { fail $name } - -re "$gdb_prompt $" { if $report_pass { pass $name } } - } -} - gdb_test_multiple "python print 23" "verify python support" { -re "not supported.*$gdb_prompt $" { unsupported "python support is disabled" diff --git a/gdb/testsuite/lib/gdb-python.exp b/gdb/testsuite/lib/gdb-python.exp new file mode 100644 index 0000000..4a15d7a --- /dev/null +++ b/gdb/testsuite/lib/gdb-python.exp @@ -0,0 +1,47 @@ +# Copyright 2010 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 3 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, see . + +# Utilities for python-scripting related tests. + +# Run a command in GDB, and report a failure if a Python exception is thrown. +# If report_pass is true, report a pass if no exception is thrown. + +proc gdb_py_test_silent_cmd { cmd name report_pass } { + global gdb_prompt + + gdb_test_multiple $cmd $name { + -re "Traceback.*$gdb_prompt $" { fail $name } + -re "$gdb_prompt $" { if $report_pass { pass $name } } + } +} + +# Usage: gdb_py_test_multiple NAME INPUT RESULT {INPUT RESULT}... +# Run a test named NAME, consisting of multiple lines of input. +# After each input line INPUT, search for result line RESULT. +# Succeed if all results are seen; fail otherwise. + +proc gdb_py_test_multiple { name args } { + global gdb_prompt + foreach {input result} $args { + if {[gdb_test_multiple $input "$name - $input" { + -re "\[\r\n\]*($result)\[\r\n\]+($gdb_prompt | *>)$" { + pass "$name - $input" + } + }]} { + return 1 + } + } + return 0 +} -- 2.7.4