Fix non-stop Python event tests. 2011-02-14 Sami Wagiaalla * gdb.python/py-evsignal.exp: New file. * gdb.python/py-evthreads.cc: Initialize bad pointer to NULL. * gdb.python/py-events.exp: Remove pretty printing comment. * gdb.python/py-evthreads.exp: Ditto. Use gdb_test_multiple. diff --git a/gdb/testsuite/gdb.python/py-events.exp b/gdb/testsuite/gdb.python/py-events.exp index e5d6daf..8493809 100644 --- a/gdb/testsuite/gdb.python/py-events.exp +++ b/gdb/testsuite/gdb.python/py-events.exp @@ -13,11 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# This file is part of the GDB testsuite. It tests Python-based -# pretty-printing for the CLI. - -# Skip all tests if Python scripting is not enabled. - if $tracelevel then { strace $tracelevel } diff --git a/gdb/testsuite/gdb.python/py-evsignal.exp b/gdb/testsuite/gdb.python/py-evsignal.exp new file mode 100644 index 0000000..ae67a12 --- /dev/null +++ b/gdb/testsuite/gdb.python/py-evsignal.exp @@ -0,0 +1,49 @@ +# Copyright (C) 2010, 2011 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 . + +if $tracelevel then { + strace $tracelevel +} + +load_lib gdb-python.exp + +set testfile "py-evthreads" +set srcfile ${testfile}.c +set binfile ${objdir}/${subdir}/${testfile} +set pyfile ${srcdir}/${subdir}/py-events.py + +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + return -1 +} +clean_restart $testfile + +if { [skip_python_tests] } { continue } + +gdb_test_no_output "python execfile ('${pyfile}')" "" + +gdb_test "Test_Events" "Event testers registered." +gdb_test_no_output "set non-stop on" +gdb_test_no_output "set target-async on" + +gdb_breakpoint [gdb_get_line_number "end of main"] + +gdb_test_multiple "run" "Signal Thread 3" { + -re ".*stop reason: signal.*stop signal: SIGSEGV.*thread num: 3.*" { + pass "thread 3 was signaled" + } + -re "The target does not support running in non-stop mode" { + unsupported "non-stop mode is unsupported" + } +} diff --git a/gdb/testsuite/gdb.python/py-evthreads.c b/gdb/testsuite/gdb.python/py-evthreads.c index 1464ce6..55414ed 100644 --- a/gdb/testsuite/gdb.python/py-evthreads.c +++ b/gdb/testsuite/gdb.python/py-evthreads.c @@ -28,7 +28,7 @@ void* thread3 (void* d) int count3 = 0; count3++; - int *bad; + int *bad = NULL; *bad = 1; return NULL; @@ -46,10 +46,10 @@ int main (){ pthread_create (&thread2_id, NULL, thread2, NULL); pthread_create (&thread3_id, NULL, thread3, NULL); - int count1 = 0; // stop1 + int count1 = 0; count1++; pthread_join (thread2_id, NULL); pthread_join (thread3_id, NULL); - return 12; + return 12; // end of main } diff --git a/gdb/testsuite/gdb.python/py-evthreads.exp b/gdb/testsuite/gdb.python/py-evthreads.exp index 6ea7eb4..aadacd0 100644 --- a/gdb/testsuite/gdb.python/py-evthreads.exp +++ b/gdb/testsuite/gdb.python/py-evthreads.exp @@ -13,11 +13,6 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . -# This file is part of the GDB testsuite. It tests Python-based -# pretty-printing for the CLI. - -# Skip all tests if Python scripting is not enabled. - if $tracelevel then { strace $tracelevel } @@ -29,7 +24,9 @@ set srcfile ${testfile}.c set binfile ${objdir}/${subdir}/${testfile} set pyfile ${srcdir}/${subdir}/py-events.py -gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug nowarnings} +if {[gdb_compile_pthreads "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable {debug}] != "" } { + return -1 +} clean_restart $testfile if { [skip_python_tests] } { continue } @@ -44,76 +41,38 @@ gdb_breakpoint "main" gdb_breakpoint "thread2" gdb_breakpoint "thread3" -send_gdb "run\n" -gdb_expect { - -re "event type: stop.* -.*stop reason: breakpoint.* -.*breakpoint number: 1.* -.*thread num: 1.*" { +gdb_test_multiple "run" "Run to breakpoint 1" { + -re "event type: stop.*stop reason: breakpoint.*breakpoint number: 1.*thread num: 1.*" { pass "reached breakpoint 1" } - timeout { - fail "did not reach breakpoint 1" - } + -re "The target does not support running in non-stop mode" { + unsupported "non-stop mode is unsupported" + return + } } -send_gdb "next\n" -gdb_expect { - -re "event type: stop.* -.*stop reason: breakpoint.* -.*breakpoint number: 2.* -.*thread num: 2.*" { +gdb_test_multiple "next" "Run to breakpoint 2" { + -re "event type: stop.*stop reason: breakpoint.*breakpoint number: 2.*thread num: 2.*" { pass "reached breakpoint 2" } - timeout { - fail "did not reach breakpoint 2" - } } -send_gdb "next\n" -gdb_expect { - -re "event type: stop.* -.*stop reason: breakpoint.* -.*breakpoint number: 3.* -.*thread num: 3.*" { +gdb_test_multiple "next" "Run to breakpoint 3" { + -re "event type: stop.*stop reason: breakpoint.*breakpoint number: 3.*thread num: 3.*" { pass "reached breakpoint 3" } - timeout { - fail "did not reach breakpoint 3" - } } -send_gdb "continue&\n" -gdb_expect { - -re ".*event type: continue.* -.*thread num: 1.*" { +gdb_test_multiple "continue&" "Continue thread 1" { + -re ".*event type: continue.*thread num: 1.*" { pass "continue thread 1" } - timeout { - fail "continue thread 1 failed" - } } gdb_test "thread 2" ".*Switching to thread 2.*" -send_gdb "continue&\n" -gdb_expect { - -re ".*event type: continue.* -.*thread num: 2.*" { - pass "continue thread 2" - } - timeout { - fail "continue thread 2 failed" - } -} -send_gdb "continue -a\n" -gdb_expect { - -re ".*stop reason: signal.* -.*stop signal: SIGSEGV.* -.*thread num: 3.*" { - pass "thread 3 was signalled" +gdb_test_multiple "continue&" "Continue thread 2" { + -re ".*event type: continue.*thread num: 2.*" { + pass "continue thread 1" } - timeout { - fail "thread 3 was not signalled" - } }