[gdb/testsuite] Add regression test for PR30325

Message ID 20230414054944.892-1-tdevries@suse.de
State Committed
Headers
Series [gdb/testsuite] Add regression test for PR30325 |

Commit Message

Tom de Vries April 14, 2023, 5:49 a.m. UTC
  Add regression tests for PR30325, one for the asm window and one for the
source window.

Use maint set tui-left-margin verbose to make the extend of the left margin
clear.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.tui/main.exp                      |  9 ++++++++-
 gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp | 11 +++++++++--
 2 files changed, 17 insertions(+), 3 deletions(-)


base-commit: f96328accde1e6302b62aa880675594618079cb3
  

Comments

Andrew Burgess April 14, 2023, 10:11 a.m. UTC | #1
Tom de Vries <tdevries@suse.de> writes:

> Add regression tests for PR30325, one for the asm window and one for the
> source window.
>
> Use maint set tui-left-margin verbose to make the extend of the left margin
> clear.
>
> Tested on x86_64-linux.

LGTM.  Thanks for doing this.

Approved-By: Andrew Burgess <aburgess@redhat.com>

Thanks,
Andrew


> ---
>  gdb/testsuite/gdb.tui/main.exp                      |  9 ++++++++-
>  gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp | 11 +++++++++--
>  2 files changed, 17 insertions(+), 3 deletions(-)
>
> diff --git a/gdb/testsuite/gdb.tui/main.exp b/gdb/testsuite/gdb.tui/main.exp
> index e5f26c7aac3..7fc9969044f 100644
> --- a/gdb/testsuite/gdb.tui/main.exp
> +++ b/gdb/testsuite/gdb.tui/main.exp
> @@ -26,16 +26,23 @@ if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
>  # Note: don't pass the executable here
>  Term::clean_restart 24 80
>  
> +set line "  return 0;"
> +set nr [gdb_get_line_number $line]
> +
>  # Later on we'd like to avoid having to answer a question.
>  gdb_test_no_output "set interactive-mode off"
>  
> +# Show the left margin using tui-left-margin-verbose.
> +gdb_test_no_output "maint set tui-left-margin-verbose on"
> +
>  if {![Term::enter_tui]} {
>      unsupported "TUI not supported"
>      return
>  }
>  
>  Term::command "file [standard_output_file $testfile]"
> -Term::check_contents "show main after file" "\\|.*21 *return 0"
> +Term::check_contents "show main after file" \
> +    [string_to_regexp "|___[format %06d $nr]_$line"]
>  
>  # Ensure that "file" clears the source window.
>  Term::command "file"
> diff --git a/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp b/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
> index d32310fffcc..9014622d35c 100644
> --- a/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
> +++ b/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
> @@ -37,6 +37,9 @@ if { $gdb_file_cmd_debug_info == "nodebug" } {
>      return
>  }
>  
> +# Show the left margin using tui-left-margin-verbose.
> +gdb_test_no_output "maint set tui-left-margin-verbose on"
> +
>  # This puts us into TUI mode, and should display the ASM window.
>  Term::command_no_prompt_prefix "layout asm"
>  Term::check_box_contents "check asm box contents" 0 0 80 15 "<_start>"
> @@ -44,13 +47,17 @@ Term::check_box_contents "check asm box contents" 0 0 80 15 "<_start>"
>  # Record the first line of output, we'll need this later.
>  set first_line [Term::get_line 1]
>  
> +# Check that the left margin contains three underscores.
> +gdb_assert { [string match "|___0x*" $first_line] } \
> +    "check verbose left margin"
> +
>  # Scroll forward a large amount, this should take us to the last
>  # instruction in the program.
>  Term::command "+ 13"
>  Term::check_box_contents "check asm box contents again" 0 0 80 15 \
>      [multi_line \
> -	 "^ *$hex\[^\r\n\]+" \
> -	 "\\s+"]
> +	 "^___$hex\[^\r\n\]+" \
> +	 "___\\s+"]
>  
>  # Now scroll backward again, we should return to the start of the
>  # program.
>
> base-commit: f96328accde1e6302b62aa880675594618079cb3
> -- 
> 2.35.3
  

Patch

diff --git a/gdb/testsuite/gdb.tui/main.exp b/gdb/testsuite/gdb.tui/main.exp
index e5f26c7aac3..7fc9969044f 100644
--- a/gdb/testsuite/gdb.tui/main.exp
+++ b/gdb/testsuite/gdb.tui/main.exp
@@ -26,16 +26,23 @@  if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
 # Note: don't pass the executable here
 Term::clean_restart 24 80
 
+set line "  return 0;"
+set nr [gdb_get_line_number $line]
+
 # Later on we'd like to avoid having to answer a question.
 gdb_test_no_output "set interactive-mode off"
 
+# Show the left margin using tui-left-margin-verbose.
+gdb_test_no_output "maint set tui-left-margin-verbose on"
+
 if {![Term::enter_tui]} {
     unsupported "TUI not supported"
     return
 }
 
 Term::command "file [standard_output_file $testfile]"
-Term::check_contents "show main after file" "\\|.*21 *return 0"
+Term::check_contents "show main after file" \
+    [string_to_regexp "|___[format %06d $nr]_$line"]
 
 # Ensure that "file" clears the source window.
 Term::command "file"
diff --git a/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp b/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
index d32310fffcc..9014622d35c 100644
--- a/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
+++ b/gdb/testsuite/gdb.tui/tui-layout-asm-short-prog.exp
@@ -37,6 +37,9 @@  if { $gdb_file_cmd_debug_info == "nodebug" } {
     return
 }
 
+# Show the left margin using tui-left-margin-verbose.
+gdb_test_no_output "maint set tui-left-margin-verbose on"
+
 # This puts us into TUI mode, and should display the ASM window.
 Term::command_no_prompt_prefix "layout asm"
 Term::check_box_contents "check asm box contents" 0 0 80 15 "<_start>"
@@ -44,13 +47,17 @@  Term::check_box_contents "check asm box contents" 0 0 80 15 "<_start>"
 # Record the first line of output, we'll need this later.
 set first_line [Term::get_line 1]
 
+# Check that the left margin contains three underscores.
+gdb_assert { [string match "|___0x*" $first_line] } \
+    "check verbose left margin"
+
 # Scroll forward a large amount, this should take us to the last
 # instruction in the program.
 Term::command "+ 13"
 Term::check_box_contents "check asm box contents again" 0 0 80 15 \
     [multi_line \
-	 "^ *$hex\[^\r\n\]+" \
-	 "\\s+"]
+	 "^___$hex\[^\r\n\]+" \
+	 "___\\s+"]
 
 # Now scroll backward again, we should return to the start of the
 # program.