forked from Imagelibrary/binutils-gdb
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.
This commit is contained in:
@@ -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"
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user