testsuite: Introduce gdb_assert
authorPedro Alves <palves@redhat.com>
Mon, 14 Jul 2014 18:55:31 +0000 (19:55 +0100)
committerPedro Alves <palves@redhat.com>
Mon, 14 Jul 2014 19:30:41 +0000 (20:30 +0100)
Often we'll do something like:

    if {$ok} {
fail "whatever"
    } else {
pass "whatever"
    }

This adds a helper procedure for that, and converts one random place
to use it, as an example.

2014-07-14  Pedro Alves  <palves@redhat.com>

* lib/gdb.exp (gdb_assert): New procedure.
* gdb.trace/backtrace.exp (gdb_backtrace_tdp_4): Use it.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.trace/backtrace.exp
gdb/testsuite/lib/gdb.exp

index 658892e5f26762e55b4c42122d20528bc0bae708..f504db65003a60a3b7558bfc105bfe039d1df267 100644 (file)
@@ -1,3 +1,8 @@
+2014-07-14  Pedro Alves  <palves@redhat.com>
+
+       * lib/gdb.exp (gdb_assert): New procedure.
+       * gdb.trace/backtrace.exp (gdb_backtrace_tdp_4): Use it.
+
 2014-07-14  Pedro Alves  <palves@redhat.com>
 
        * gdb.base/execution-termios.c: New file.
index a74fc3f456fb51941e0bcdead876c694b720f935..cb50f0697a7f918b57e96349ae6d8d98e04098db 100644 (file)
@@ -256,11 +256,8 @@ proc gdb_backtrace_tdp_4 { msg depth traceframe } {
 
        # Output of 'tdump' on frame 0 and frame 1 should be
        # identical.
-       if ![string compare $output_string0 $output_string1]  {
-           pass "tdump output"
-       } else {
-           fail "tdump output"
-       }
+       gdb_assert ![string compare $output_string0 $output_string1] \
+           "tdump output"
     }
 }
 
index 3388e1f140726c0b2467d454383694fbe8a37c33..50f2481fcc4b094c015da18820b498efa12c10d9 100644 (file)
@@ -1205,6 +1205,27 @@ proc gdb_test_list_exact { cmd name elm_find_regexp elm_extract_regexp result_ma
     }
 }
 \f
+
+# Issue a PASS and return true if evaluating CONDITION in the caller's
+# frame returns true, and issue a FAIL and return false otherwise.
+# MESSAGE is the pass/fail message to be printed.  If MESSAGE is
+# omitted or is empty, then the pass/fail messages use the condition
+# string as the message.
+
+proc gdb_assert { condition {message ""} } {
+    if { $message == ""} {
+       set message $condition
+    }
+
+    set res [uplevel 1 expr $condition]
+    if {!$res} {
+       fail $message
+    } else {
+       pass $message
+    }
+    return $res
+}
+
 proc gdb_reinitialize_dir { subdir } {
     global gdb_prompt