summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.tui/compact-source.exp
blob: f972d961d722cda2a0eb661868d8f5398e37b781 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Copyright 2023 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/>.

# Check that "set tui compact-source on" has the intended effect.

require allow_tui_tests

tuiterm_env

standard_testfile

# Let's generate the source file.  We want a short file, with less than 10
# lines, and the copyright notice by itself is already more that that.
set src_list \
    [list \
	 "int" \
	 "main (void)" \
	 "{" \
	 "  return 0;" \
	 "}"]
set re_line_four [string_to_regexp [lindex $src_list 3]]
set src_txt [join $src_list "\n"]
set srcfile [standard_output_file $srcfile]
set fd [open $srcfile w]
puts $fd $src_txt
close $fd

if {[build_executable "failed to prepare" ${testfile} ${srcfile}] == -1} {
    return -1
}

Term::clean_restart 24 80 $binfile

gdb_test_no_output "maint set tui-left-margin-verbose on"
gdb_test_no_output "set tui compact-source on"

if {![Term::enter_tui]} {
    unsupported "TUI not supported"
    return
}

set re_border "\\|"

foreach_with_prefix src_window_size {7 8} {
    set src_window_lines [expr $src_window_size - 2]
    set max_line_nr_in_source_file [llength $src_list]
    set max_line_nr_in_source_window \
	[expr $max_line_nr_in_source_file + $src_window_lines - 1]

    Term::command "wh src $src_window_size"

    if { $max_line_nr_in_source_window == 9 } {
	set re_left_margin "___4_"
    } elseif { $max_line_nr_in_source_window == 10 }  {
	set re_left_margin "___04_"
    } else {
	error "unhandled max_line_nr_in_source_window"
    }

    Term::check_contents "compact source format" \
	"$re_border$re_left_margin$re_line_four *$re_border"
}