gdb.base/watch-bitfields.exp: Improve test
authorSergio Durigan Junior <sergiodj@redhat.com>
Tue, 16 Sep 2014 16:55:20 +0000 (17:55 +0100)
committerPedro Alves <palves@redhat.com>
Tue, 16 Sep 2014 16:55:21 +0000 (17:55 +0100)
Make test messages unique and a couple other tweaks.

gdb/testsuite/
2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
    Pedro Alves  <palves@redhat.com>

* gdb.base/watch-bitfields.exp: Pass string other than test file
name to prepare_for_testing.
(watch): New procedure.
(expect_watchpoint): Use with_test_prefix.
(top level): Factor out tests to ...
(test_watch_location, test_regular_watch): ... these new
procedures, and use with_test_prefix and gdb_continue_to_end.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.base/watch-bitfields.exp

index 655301e..aa319e5 100644 (file)
@@ -1,3 +1,14 @@
+2014-09-16  Sergio Durigan Junior  <sergiodj@redhat.com>
+           Pedro Alves  <palves@redhat.com>
+
+       * gdb.base/watch-bitfields.exp: Pass string other than test file
+       name to prepare_for_testing.
+       (watch): New procedure.
+       (expect_watchpoint): Use with_test_prefix.
+       (top level): Factor out tests to ...
+       (test_watch_location, test_regular_watch): ... these new
+       procedures, and use with_test_prefix and gdb_continue_to_end.
+
 2014-09-16  Patrick Palka  <patrick@parcs.ath.cx>
 
        PR breakpoints/12526
index 3f25384..7b7fa22 100644 (file)
 
 standard_testfile
 
-if {[prepare_for_testing $testfile.exp $testfile $srcfile debug]} {
+if {[prepare_for_testing "failed to prepare" $testfile $srcfile debug]} {
     return -1
 }
 
-if {![runto_main]} {
-    return -1
+# Set a watchpoint watching EXPR.
+proc watch { expr } {
+    global decimal
+
+    set expr_re [string_to_regexp $expr]
+    gdb_test "watch $expr" \
+       "\(Hardware \)?\[Ww\]atchpoint $decimal: $expr_re"
 }
 
 # Continue inferior execution, expecting the watchpoint EXPR to be triggered
 # having old value OLD and new value NEW.
 proc expect_watchpoint { expr old new } {
-    set expr_re [string_to_regexp $expr]
-    gdb_test "print $expr" "\\$\\d+ = $old\\s"
-    gdb_test "cont" "$expr_re\\s.*Old value = $old\\s+New value = $new\\s.*"
-    gdb_test "print $expr" "\\$\\d+ = $new\\s"
+    with_test_prefix "$expr: $old->$new" {
+       set expr_re [string_to_regexp $expr]
+       gdb_test "print $expr" "\\$\\d+ = $old\\s" "print expression before"
+       gdb_test "continue" "$expr_re\\s.*Old value = $old\\s+New value = $new\\s.*"
+       gdb_test "print $expr" "\\$\\d+ = $new\\s" "print expression after"
+    }
 }
 
 # Check that -location watchpoints against bitfields trigger properly.
-gdb_test "watch -l q.a"
-gdb_test "watch -l q.e"
-expect_watchpoint "q.a" 0 1
-expect_watchpoint "q.e" 0 5
-expect_watchpoint "q.a" 1 0
-expect_watchpoint "q.e" 5 4
-gdb_test "cont" ".*exited normally.*"
-
-# Check that regular watchpoints against expressions involving bitfields
-# trigger properly.
-runto_main
-gdb_test "watch q.d + q.f + q.g"
-expect_watchpoint "q.d + q.f + q.g" 0 4
-expect_watchpoint "q.d + q.f + q.g" 4 10
-expect_watchpoint "q.d + q.f + q.g" 10 3
-expect_watchpoint "q.d + q.f + q.g" 3 2
-expect_watchpoint "q.d + q.f + q.g" 2 1
-expect_watchpoint "q.d + q.f + q.g" 1 0
-gdb_test "cont" ".*exited normally.*"
+proc test_watch_location {} {
+    with_test_prefix "-location watch against bitfields" {
+       if {![runto_main]} {
+           return -1
+       }
+
+       watch "-location q.a"
+       watch "-location q.e"
+       expect_watchpoint "q.a" 0 1
+       expect_watchpoint "q.e" 0 5
+       expect_watchpoint "q.a" 1 0
+       expect_watchpoint "q.e" 5 4
+       gdb_continue_to_end
+    }
+}
+
+# Check that regular watchpoints against expressions involving
+# bitfields trigger properly.
+proc test_regular_watch {} {
+    with_test_prefix "regular watch against bitfields" {
+       if {![runto_main]} {
+           return -1
+       }
+
+       watch "q.d + q.f + q.g"
+       expect_watchpoint "q.d + q.f + q.g" 0 4
+       expect_watchpoint "q.d + q.f + q.g" 4 10
+       expect_watchpoint "q.d + q.f + q.g" 10 3
+       expect_watchpoint "q.d + q.f + q.g" 3 2
+       expect_watchpoint "q.d + q.f + q.g" 2 1
+       expect_watchpoint "q.d + q.f + q.g" 1 0
+       gdb_continue_to_end
+    }
+}
+
+test_watch_location
+test_regular_watch