require allow_tui_tests
+tuiterm_env
+
standard_testfile
if {[prepare_for_testing "failed to prepare" ${testfile} ${srcfile}]} {
return -1
}
-# Test one layout command. EXECUTION indicates whether to activate
-# the layout with or without execution.
+# Run one test of the 'layout' command, selecting LAYOUT_NAME.
+#
+# TERMINAL should be either 'dumb' or 'ansi'. When TERMINAL is 'dumb'
+# then GDB is started in a terminal that does not support tui mode, in
+# this case the layout command is expected to fail.
+#
+# When TERMINAL is 'ansi' then GDB is started using our emulated ANSI
+# terminal, and the layout command is expected to succeed.
+#
+# When EXECUTION is true then a call to runto_main is used, otherwise
+# this call is skipped and the inferior is left in whatever state it
+# happens to be in after a call to clean_restart.
-proc test_layout {layout execution} {
+proc test_layout_or_focus {layout_name terminal execution} {
global binfile gdb_prompt
- clean_restart $binfile
+ set dumb_terminal [string equal $terminal "dumb"]
+
+ if {$dumb_terminal} {
+ clean_restart $binfile
+ } else {
+ Term::clean_restart 24 80 $binfile
+ if {![Term::prepare_for_tui]} {
+ unsupported "TUI not supported"
+ return
+ }
+ }
if {$execution} {
if {![runto_main]} {
}
}
- set test "layout command"
- gdb_test_multiple "layout $layout" $test {
- -re "$gdb_prompt $" {
- pass $test
+ if {$dumb_terminal} {
+ gdb_test "layout $layout_name" \
+ "Cannot enable the TUI: terminal doesn't support cursor addressing \\\[TERM=dumb\\\]"
+ } else {
+ Term::command_no_prompt_prefix "layout $layout_name"
+ if {$layout_name == "asm"} {
+ Term::check_box "asm box" 0 0 80 15
+ } elseif {$layout_name == "reg"} {
+ Term::check_box "reg box" 0 0 80 8
+ Term::check_box "src box" 0 7 80 8
+ } elseif {$layout_name == "src"} {
+ Term::check_box "src box" 0 0 80 15
+ } elseif {$layout_name == "split"} {
+ Term::check_box "src box" 0 0 80 8
+ Term::check_box "asm box" 0 7 80 8
}
}
}
-foreach_with_prefix execution {0 1} {
- foreach_with_prefix layout {"asm" "reg" "src" "split"} {
- test_layout $layout $execution
+foreach_with_prefix terminal {ansi dumb} {
+ foreach_with_prefix execution {false true} {
+ foreach_with_prefix layout {"asm" "reg" "src" "split"} {
+ test_layout_or_focus $layout $terminal $execution
+ }
}
}