public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
* [binutils-gdb] gdb/testsuite: fix "set temporary breakpoint" DUPLICATEs
@ 2022-04-21 19:05 Simon Marchi
  0 siblings, 0 replies; only message in thread
From: Simon Marchi @ 2022-04-21 19:05 UTC (permalink / raw)
  To: gdb-cvs

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=0b84fbd54ee44cc88fd95cf1993f0e704c4d78e2

commit 0b84fbd54ee44cc88fd95cf1993f0e704c4d78e2
Author: Simon Marchi <simon.marchi@efficios.com>
Date:   Thu Apr 21 15:05:32 2022 -0400

    gdb/testsuite: fix "set temporary breakpoint" DUPLICATEs
    
    Commit c67f4e538 ("gdb/testsuite: make gdb.ada/mi_prot.exp stop at
    expected location") introduced some DUPLICATEs in MI tests using
    mi_continue_to_line, for example:
    
        DUPLICATE: gdb.ada/mi_ref_changeable.exp: mi_continue_to_line: set temporary breakpoint
    
    These test names were previously differentiated by the location passed
    to mi_continue_to_line.  Since the location can contain a path, that
    commit removed the location from the test name, in favor of a hardcoded
    string "set temporary breakpoint", hence removing the differentiator.
    
    mi_continue_to_line receives a "test" parameter, containing a test
    name.  Add a "with_test_prefix" with that name, so that all tests
    recorded during mi_continue_to_line have this in their name.
    
    mi_continue_to_line passes that "test" string to mi_get_stop_line, that
    is a bit superfluous.  mi_get_stop_line only uses that string in case of
    failures (it doesn't record a pass if everything goes fine).  Since it's
    not crucial, just remove it, and adjust all callers.
    
    Adjust three gdb.mi/mi-var-*.exp tests to use prefixes to differentiate
    the multiple calls to mi_run_inline_test (which calls
    mi_continue_to_line).
    
    Change-Id: I511c6caa70499f8657b1cde37d71068d74d56a74

Diff:
---
 gdb/testsuite/gdb.mi/mi-var-cmd.exp            |  2 +-
 gdb/testsuite/gdb.mi/mi-var-cp.exp             |  2 +-
 gdb/testsuite/gdb.mi/mi-var-rtti.exp           |  2 +-
 gdb/testsuite/gdb.python/py-framefilter-mi.exp |  4 ++--
 gdb/testsuite/gdb.python/py-mi.exp             |  4 ++--
 gdb/testsuite/lib/mi-support.exp               | 19 ++++++++++---------
 6 files changed, 17 insertions(+), 16 deletions(-)

diff --git a/gdb/testsuite/gdb.mi/mi-var-cmd.exp b/gdb/testsuite/gdb.mi/mi-var-cmd.exp
index a33b0c42e30..6c89c798ef1 100644
--- a/gdb/testsuite/gdb.mi/mi-var-cmd.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-cmd.exp
@@ -596,7 +596,7 @@ set inline_tests {
 # Needs to be last, following tests rely on this.
 lappend inline_tests floating
 
-foreach inline_test $inline_tests {
+foreach_with_prefix inline_test $inline_tests {
     if { [mi_run_inline_test $inline_test] < 0 } {
 	return -1
     }
diff --git a/gdb/testsuite/gdb.mi/mi-var-cp.exp b/gdb/testsuite/gdb.mi/mi-var-cp.exp
index 38c5eb2dcb5..ba366daf2c3 100644
--- a/gdb/testsuite/gdb.mi/mi-var-cp.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-cp.exp
@@ -46,7 +46,7 @@ set inline_tests {
     path_expression
 }
 
-foreach inline_test $inline_tests {
+foreach_with_prefix inline_test $inline_tests {
     if { [mi_run_inline_test $inline_test] < 0 } {
 	return -1
     }
diff --git a/gdb/testsuite/gdb.mi/mi-var-rtti.exp b/gdb/testsuite/gdb.mi/mi-var-rtti.exp
index 84b1a42bff2..0015d23a4be 100644
--- a/gdb/testsuite/gdb.mi/mi-var-rtti.exp
+++ b/gdb/testsuite/gdb.mi/mi-var-rtti.exp
@@ -119,7 +119,7 @@ set inline_tests {
     skip_type_update_when_not_use_rtti
 }
 
-foreach inline_test $inline_tests {
+foreach_with_prefix inline_test $inline_tests {
     if { [mi_run_inline_test $inline_test] < 0 } {
        return -1
     }
diff --git a/gdb/testsuite/gdb.python/py-framefilter-mi.exp b/gdb/testsuite/gdb.python/py-framefilter-mi.exp
index 39431a301e1..08f9e17e9f9 100644
--- a/gdb/testsuite/gdb.python/py-framefilter-mi.exp
+++ b/gdb/testsuite/gdb.python/py-framefilter-mi.exp
@@ -50,7 +50,7 @@ mi_gdb_test "source ${remote_python_file}" ".*\\^done." "load python file"
 
 # Multiple blocks test
 mi_continue_to_line [gdb_get_line_number {Inner test breakpoint} ${srcfile}] \
-  "step to breakpoint"
+  "step to first breakpoint"
 
 mi_gdb_test "-stack-list-locals --all-values" \
     "\\^done,locals=\\\[{name=\"h\",value=\"9\"},{name=\"f\",value=\"42\"},{name=\"g\",value=\"19\"},{name=\"bar\",value=\"$hex \\\\\"Inside block x2\\\\\"\"},{name=\"d\",value=\"15\"},{name=\"e\",value=\"14\"},{name=\"foo\",value=\"$hex \\\\\"Inside block\\\\\"\"},{name=\"str\",value=\"$hex \\\\\"The End\\\\\"\"},{name=\"st2\",value=\"$hex \\\\\"Is Near\\\\\"\"},{name=\"b\",value=\"12\"},{name=\"c\",value=\"5\"}\\\]" \
@@ -62,7 +62,7 @@ mi_gdb_test "-stack-list-locals --all-values" \
     "stack-list-locals --all-values frame filters enabled"
 
 mi_continue_to_line [gdb_get_line_number {Backtrace end breakpoint} ${srcfile}] \
-  "step to breakpoint"
+  "step to second breakpoint"
 
 set any "\[^\"\]+"
 
diff --git a/gdb/testsuite/gdb.python/py-mi.exp b/gdb/testsuite/gdb.python/py-mi.exp
index 3704ce3b3d6..b832b2ccbd3 100644
--- a/gdb/testsuite/gdb.python/py-mi.exp
+++ b/gdb/testsuite/gdb.python/py-mi.exp
@@ -231,7 +231,7 @@ mi_varobj_update_dynamic container2 \
 
 mi_continue_to_line \
     [gdb_get_line_number {MI outer breakpoint here} ${srcfile}] \
-    "step to outer breakpoint"
+    "step to first outer breakpoint"
 
 mi_create_dynamic_varobj outer outer 1 \
   "create outer varobj"
@@ -261,7 +261,7 @@ mi_varobj_update_with_type_change container int 0 "update after type change"
 
 mi_continue_to_line \
     [gdb_get_line_number {break to inspect struct and union} ${srcfile}] \
-    "step to outer breakpoint"
+    "step to second outer breakpoint"
 
 with_test_prefix "varobj nscont" {
     mi_create_dynamic_varobj nscont nstype 1 \
diff --git a/gdb/testsuite/lib/mi-support.exp b/gdb/testsuite/lib/mi-support.exp
index 701c53f1321..a231b8311b9 100644
--- a/gdb/testsuite/lib/mi-support.exp
+++ b/gdb/testsuite/lib/mi-support.exp
@@ -1865,14 +1865,15 @@ proc mi_send_resuming_command {command test} {
 # Does not check that the line is the same as requested.
 # The caller can check itself if required.
 proc_with_prefix mi_continue_to_line {location test} {
-
-    mi_tbreak $location "set temporary breakpoint"
-    mi_send_resuming_command "exec-continue" "continue to breakpoint"
-    return [mi_get_stop_line $test]
+    with_test_prefix $test {
+	mi_tbreak $location "set temporary breakpoint"
+	mi_send_resuming_command "exec-continue" "continue to breakpoint"
+	return [mi_get_stop_line]
+    }
 }
 
 # Wait until gdb prints the current line.
-proc mi_get_stop_line {test} {
+proc mi_get_stop_line {} {
 
   global mi_gdb_prompt
   global async
@@ -1888,10 +1889,10 @@ proc mi_get_stop_line {test} {
 	  return $expect_out(1,string)
       }
       -re ".*$mi_gdb_prompt" {
-	  fail "wait for stop ($test)"
+	  fail "wait for stop (unexpected output)"
       }
       timeout {
-	  fail "wait for stop ($test)"
+	  fail "wait for stop (timeout)"
       }
   }
 }
@@ -1958,7 +1959,7 @@ proc mi_run_inline_test { testcase } {
 	    if { [mi_run_cmd] < 0 } {
 		return -1
 	    }
-	    set line_now [mi_get_stop_line "$testcase: step to $line"]
+	    set line_now [mi_get_stop_line]
 	    set first 0
 	} elseif {$line_now!=$line} {
 	    set line_now [mi_continue_to_line "$mi_autotest_source:$line" "continue to $line"]
@@ -1976,7 +1977,7 @@ proc mi_run_inline_test { testcase } {
 	if { [mi_send_resuming_command "exec-next" "$testcase: step over $line"] != 0 } {
 	    return -1
 	}
-	set line_now [mi_get_stop_line "$testcase: step over $line"]
+	set line_now [mi_get_stop_line]
 
 	# We probably want to use 'uplevel' so that statements
 	# have direct access to global variables that the


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2022-04-21 19:05 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2022-04-21 19:05 [binutils-gdb] gdb/testsuite: fix "set temporary breakpoint" DUPLICATEs Simon Marchi

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).