[binutils-gdb] Fixes to gdb.ada/fun_overload_menu.exp

Tom Tromey tromey@sourceware.org
Thu Mar 6 21:24:29 GMT 2025


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

commit 7253760b5a0116505a9b13c9f6cbaa457ec8b74f
Author: Tom Tromey <tromey@adacore.com>
Date:   Wed Aug 28 08:06:58 2024 -0600

    Fixes to gdb.ada/fun_overload_menu.exp
    
    This patch applies a few fixes to gdb.ada/fun_overload_menu.exp.
    
    It adds some comments to the source and uses this to extract line
    numbers.  This is used to ensure that two otherwise-equivalent results
    are in fact different, so that the test really checks that the result
    is correct.
    
    It also changes the test_menu proc to accept a list of possible
    results.  This lets the test work regardless of the order in which the
    menu items are presented by gdb.
    
    Finally, like an earlier patch, it changes the test to optionally
    accept unqualified names from gdb.

Diff:
---
 gdb/testsuite/gdb.ada/fun_overload_menu.exp     | 43 +++++++++++++++----------
 gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb |  4 +--
 2 files changed, 28 insertions(+), 19 deletions(-)

diff --git a/gdb/testsuite/gdb.ada/fun_overload_menu.exp b/gdb/testsuite/gdb.ada/fun_overload_menu.exp
index 8e7a3fbafa7..1130d84b6e6 100644
--- a/gdb/testsuite/gdb.ada/fun_overload_menu.exp
+++ b/gdb/testsuite/gdb.ada/fun_overload_menu.exp
@@ -28,18 +28,30 @@ clean_restart ${testfile}
 set bp_location [gdb_get_line_number "BREAK" ${testdir}/foo.adb]
 runto "foo.adb:$bp_location"
 
+set line1 [gdb_get_line_number "LINE 1" ${testdir}/foo.adb]
+set line2 [gdb_get_line_number "LINE 2" ${testdir}/foo.adb]
 
-proc test_menu {expr function menu_entries selection output} {
-    set menu [multi_line "Multiple matches for $function" \
-                         "\\\[0\\\] cancel" \
-                         "$menu_entries" \
-                         "> $"]
+proc test_menu {expr function first second selection output} {
+    set menu1 [multi_line "Multiple matches for $function" \
+		   "\\\[0\\\] cancel" \
+		   "\\\[1\\\] $first" \
+		   "\\\[2\\\] $second" \
+		   "> $"]
+    set menu2 [multi_line "Multiple matches for $function" \
+		   "\\\[0\\\] cancel" \
+		   "\\\[1\\\] $second" \
+		   "\\\[2\\\] $first" \
+		   "> $"]
     set test_name "multiple matches for $function {$expr}"
-    gdb_test_multiple "print $expr" "$test_name" \
-    {
-        -re "$menu" {
+    gdb_test_multiple "print $expr" "$test_name" {
+        -re "$menu1" {
             pass "$test_name"
         }
+        -re "$menu2" {
+            pass "$test_name"
+	    # Make sure we pick the correct one.
+	    set selection [expr {3 - $selection}]
+        }
         default {
             fail "$test_name"
         }
@@ -53,18 +65,16 @@ proc test_menu {expr function menu_entries selection output} {
 # 1. Test with overloaded functions
 with_test_prefix "func" {
     test_menu "f (1, null)" "f" \
-	[multi_line \
-	     "\\\[1\\\] foo\\.f \\(integer; foo\\.integer_access\\) return boolean at .*foo.adb:.*" \
-	     "\\\[2\\\] foo\\.f \\(foo\\.new_integer; foo\\.integer_access\\) return boolean at .*foo.adb:.*"] \
+	"foo\\.f \\(integer; (foo\\.)?integer_access\\) return boolean at .*foo.adb:.*" \
+	"foo\\.f \\((foo\\.)?new_integer; (foo\\.)?integer_access\\) return boolean at .*foo.adb:.*" \
 	"1" "= true"
 }
 
 # 2. Test with overloaded procedures
 with_test_prefix "proc" {
     test_menu "p (1, null)" "p" \
-	[multi_line \
-	     "\\\[1\\\] foo\\.p \\(integer; foo\\.integer_access\\) at .*foo.adb:.*" \
-	     "\\\[2\\\] foo\\.p \\(foo\\.new_integer; foo\\.integer_access\\) at .*foo.adb:.*" ] \
+	"foo\\.p \\(integer; (foo\\.)?integer_access\\) at .*foo.adb:.*" \
+	"foo\\.p \\((foo\\.)?new_integer; (foo\\.)?integer_access\\) at .*foo.adb:.*" \
 	"1" "= (void)"
 }
 
@@ -72,8 +82,7 @@ with_test_prefix "proc" {
 gdb_test "set ada print-signatures off" ""
 with_test_prefix "signatures disabled" {
     test_menu "f (1, null)" "f" \
-	[multi_line \
-	     "\\\[1\\\] foo\\.f at .*foo.adb:.*" \
-	     "\\\[2\\\] foo\\.f at .*foo.adb:.*"] \
+	"foo\\.f at .*foo.adb:$line1.*" \
+	"foo\\.f at .*foo.adb:$line2.*" \
 	"1" "= true"
 }
diff --git a/gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb b/gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb
index 0a2b21a9bde..d8662212d42 100644
--- a/gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb
+++ b/gdb/testsuite/gdb.ada/fun_overload_menu/foo.adb
@@ -20,12 +20,12 @@ procedure Foo is
 
    function F (I : Integer; A : Integer_Access) return Boolean is
    begin
-      return True;
+      return True; --  LINE 1
    end F;
 
    function F (I : New_Integer; A : Integer_Access) return Boolean is
    begin
-      return False;
+      return False; --  LINE 2
    end F;
 
    procedure P (I : Integer; A : Integer_Access) is


More information about the Gdb-cvs mailing list