
This commit is the result of the following actions: - Running gdb/copyright.py to update all of the copyright headers to include 2024, - Manually updating a few files the copyright.py script told me to update, these files had copyright headers embedded within the file, - Regenerating gdbsupport/Makefile.in to refresh it's copyright date, - Using grep to find other files that still mentioned 2023. If these files were updated last year from 2022 to 2023 then I've updated them this year to 2024. I'm sure I've probably missed some dates. Feel free to fix them up as you spot them.
153 lines
4.8 KiB
Text
153 lines
4.8 KiB
Text
# Copyright 2020-2024 Free Software Foundation, Inc.
|
|
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation; either version 3 of the License, or
|
|
# (at your option) any later version.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
# Test "tui new-layout".
|
|
|
|
tuiterm_env
|
|
|
|
standard_testfile tui-layout.c
|
|
|
|
if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
|
|
return -1
|
|
}
|
|
|
|
# Make sure TUI is supported before continuing.
|
|
with_test_prefix "initial check" {
|
|
Term::clean_restart 24 80 $testfile
|
|
if {![Term::enter_tui]} {
|
|
unsupported "TUI not supported"
|
|
return
|
|
}
|
|
}
|
|
|
|
Term::clean_restart 24 80 $testfile
|
|
|
|
gdb_test "tui new-layout" \
|
|
"No layout name specified"
|
|
gdb_test "tui new-layout example" \
|
|
"New layout does not contain any windows"
|
|
gdb_test "tui new-layout example zzq" \
|
|
"Unknown window \"zzq\""
|
|
gdb_test "tui new-layout example src 1 src 1" \
|
|
"Window \"src\" seen twice in layout"
|
|
gdb_test "tui new-layout example src 1" \
|
|
"New layout does not contain the \"cmd\" window"
|
|
|
|
# Avoid unbalanced curly braces problems with tcl 8.5.
|
|
if { [tcl_version_at_least 8 6] } {
|
|
gdb_test "tui new-layout example src 1\}" \
|
|
"Extra '\}' in layout specification"
|
|
gdb_test "tui new-layout example {src 1} 1\}" \
|
|
"Extra '\}' in layout specification"
|
|
gdb_test "tui new-layout example \{src 1" \
|
|
"Missing '\}' in layout specification"
|
|
}
|
|
|
|
# Each entry of this list describes a layout, and some associated
|
|
# tests. The items within each entry are:
|
|
# 1. layout name,
|
|
# 2. a string used to create the layout,
|
|
# 3. a list of boxes to check for once the layout is selected,
|
|
# 4. a regexp to match against the whole screen contents, this
|
|
# can be empty to skip this check.
|
|
set layouts \
|
|
[list \
|
|
[list example "asm 1 status 0 cmd 1" \
|
|
{{0 0 80 15}} "$hex <main>"] \
|
|
[list example2 "{asm 1 status 0} 1 cmd 1" \
|
|
{{0 0 80 15}} ""] \
|
|
[list h "{-horizontal asm 1 src 1} 1 status 0 cmd 1" \
|
|
{{0 0 40 15} {39 0 41 15}} \
|
|
"$hex <main>.*21.*return 0"] \
|
|
[list example3 "{-horizontal src 1 cmd 1} 1 status 0 asm 1" \
|
|
{{0 0 40 11} {0 12 80 12}} \
|
|
"21.*return 0.*$hex <main>"] \
|
|
[list example4 "src 1 status 0 {-horizontal cmd 1 regs 1} 1" \
|
|
{{0 0 80 11} {40 12 40 12}} ""] \
|
|
[list example5 "{-horizontal src 1 cmd 1} 1 status 0" \
|
|
{{0 0 40 23}} ""] \
|
|
[list cmd_only "cmd 1" {} ""]]
|
|
|
|
# Helper function to verify a list of boxes.
|
|
proc check_boxes {boxes} {
|
|
set boxno 1
|
|
foreach box $boxes {
|
|
eval Term::check_box [list "box $boxno"] $box
|
|
incr boxno
|
|
}
|
|
}
|
|
|
|
# Now create the layouts.
|
|
foreach layout $layouts {
|
|
lassign $layout name desc
|
|
gdb_test_no_output "tui new-layout $name $desc"
|
|
gdb_test "help layout $name" \
|
|
"Apply the \"$name\" layout.*tui new-layout $name $desc"
|
|
}
|
|
|
|
if {![Term::enter_tui]} {
|
|
unsupported "TUI not supported"
|
|
return
|
|
}
|
|
|
|
set text [Term::get_all_lines]
|
|
gdb_assert {![string match "No Source Available" $text]} \
|
|
"initial source listing"
|
|
|
|
foreach_with_prefix layout $layouts {
|
|
lassign $layout name desc boxes content_pattern
|
|
|
|
# Reset the layout to a known starting configuration.
|
|
Term::command "layout src"
|
|
Term::command "winheight cmd 8"
|
|
|
|
# Apply our test layout.
|
|
Term::command "layout $name"
|
|
check_boxes $boxes
|
|
|
|
if {$content_pattern != ""} {
|
|
Term::check_contents "contents in layout $name" \
|
|
"${content_pattern}"
|
|
}
|
|
|
|
# Some additional tests for the 'h' layout.
|
|
if {$name == "h"} {
|
|
Term::command "winheight src - 5"
|
|
Term::check_box "left window box after shrink" 0 0 40 10
|
|
Term::check_box "right window box after shrink" 39 0 41 10
|
|
|
|
Term::command "winheight src + 5"
|
|
Term::check_box "left window box after grow" 0 0 40 15
|
|
Term::check_box "right window box after grow" 39 0 41 15
|
|
} elseif {$name == "cmd_only"} {
|
|
Term::check_region_contents "bottom of cmd window is blank" \
|
|
0 14 80 10 "^\\s+$"
|
|
Term::command "info win"
|
|
Term::check_region_contents "info win output" \
|
|
0 0 80 24 [multi_line "info win\\s+" \
|
|
"Name\\s+Lines\\s+Columns\\s+Focus\\s+" \
|
|
"cmd\\s+24\\s+80\\s+\\(has focus\\)\\s+" \
|
|
"$gdb_prompt\\s+"]
|
|
}
|
|
}
|
|
|
|
Term::command "layout src"
|
|
Term::command "winheight cmd 8"
|
|
Term::check_box "before cmd_only: src box in src layout" 0 0 80 15
|
|
|
|
Term::command "layout cmd_only"
|
|
|
|
Term::command "layout src"
|
|
Term::check_box "after cmd_only: src box in src layout" 0 0 80 15
|