mirror of
https://github.com/tmux/tmux.git
synced 2026-06-22 08:06:55 +00:00
Add screen redraw regression tests.
This commit is contained in:
79
regress/screen-redraw-bidi.sh
Normal file
79
regress/screen-redraw-bidi.sh
Normal file
@@ -0,0 +1,79 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise screen-redraw.c bidirectional-isolate handling. When the client is
|
||||||
|
# UTF-8 and its terminal has the Bidi capability, each drawn span is wrapped in
|
||||||
|
# directional isolate characters (U+2066 .. U+2069) so a bidi terminal does not
|
||||||
|
# reorder pane contents across borders (the REDRAW_ISOLATES path).
|
||||||
|
#
|
||||||
|
# The Bidi capability is added with terminal-overrides before the client
|
||||||
|
# attaches, so the attached client picks it up. The isolate characters appear in
|
||||||
|
# the captured output around each span.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y12 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y12 "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
# Add the Bidi capability before the client attaches.
|
||||||
|
$TMUX2 set -ag terminal-overrides ",*:Bidi=\\E[8h" || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y12 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Single pane: content is wrapped in isolates.
|
||||||
|
new_scene
|
||||||
|
compare bidi-single
|
||||||
|
|
||||||
|
# Two panes: borders and both panes are isolated.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
compare bidi-split
|
||||||
|
|
||||||
|
exit 0
|
||||||
167
regress/screen-redraw-floating.sh
Normal file
167
regress/screen-redraw-floating.sh
Normal file
@@ -0,0 +1,167 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise screen-redraw.c drawing of floating panes: their borders and titles,
|
||||||
|
# clipping at the window edge, and the interaction with the area outside the
|
||||||
|
# window (when the window is smaller than the attached client).
|
||||||
|
#
|
||||||
|
# Each scene is rendered in an inner tmux attached inside an outer tmux pane.
|
||||||
|
# The outer pane is captured (the full client scene drawn by screen-redraw.c)
|
||||||
|
# and compared with a golden file in screen_redraw_results/.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p $2 >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# new_scene <width> <height>: fresh inner window of the given window size.
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'printf base; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x$1 -y$2 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# tile_2x2: split the current window into a 2x2 grid of tiled panes.
|
||||||
|
tile_2x2() {
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 select-layout tiled || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y12 "sh -c 'printf base; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
$TMUX2 set -g pane-border-format " #{pane_title} " || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y12 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Basic floating pane, well inside the window.
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 new-pane -x20 -y6 -X8 -Y3 "sh -c 'printf FLOAT; exec sleep 100'" || exit 1
|
||||||
|
compare floating-basic
|
||||||
|
|
||||||
|
# Floating pane with a title on its border. pane-border-status also draws the
|
||||||
|
# base pane's title, so set it explicitly (the default is the hostname, which is
|
||||||
|
# not stable).
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 setw pane-border-status top || exit 1
|
||||||
|
$TMUX2 selectp -t:.0 -T base || exit 1
|
||||||
|
$TMUX2 new-pane -x20 -y6 -X8 -Y2 -T title \
|
||||||
|
"sh -c 'printf FLOAT; exec sleep 100'" || exit 1
|
||||||
|
compare floating-title
|
||||||
|
|
||||||
|
# Larger floating pane with double border lines.
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 new-pane -x28 -y8 -X4 -Y1 -B double \
|
||||||
|
"sh -c 'printf FLOAT; exec sleep 100'" || exit 1
|
||||||
|
compare floating-border-double
|
||||||
|
|
||||||
|
# Floating pane positioned past the right and bottom edges: must clip.
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 new-pane -x20 -y6 -X30 -Y8 "sh -c 'printf CLIP; exec sleep 100'" || exit 1
|
||||||
|
compare floating-clip-edge
|
||||||
|
|
||||||
|
# Window smaller than the client (outside area filled), with a floating pane
|
||||||
|
# that overlaps the boundary into the outside region.
|
||||||
|
new_scene 28 8
|
||||||
|
$TMUX2 new-pane -x16 -y5 -X18 -Y4 "sh -c 'printf OUT; exec sleep 100'" || exit 1
|
||||||
|
compare floating-outside
|
||||||
|
|
||||||
|
# Floating pane clipped at the top-left corner (negative offsets).
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 new-pane -x18 -y6 -X-4 -Y-2 "sh -c 'printf TL; exec sleep 100'" || exit 1
|
||||||
|
compare floating-clip-topleft
|
||||||
|
|
||||||
|
# Floating pane over a tiled 2x2 grid: the float draws a complete box and must
|
||||||
|
# NOT merge its borders with the tiled pane borders underneath.
|
||||||
|
new_scene 40 12
|
||||||
|
tile_2x2
|
||||||
|
$TMUX2 new-pane -x16 -y6 -X11 -Y3 "sh -c 'printf FLT; exec sleep 100'" || exit 1
|
||||||
|
compare floating-over-tiled
|
||||||
|
|
||||||
|
# Same, but the float uses double border lines while the tiled panes use single:
|
||||||
|
# the two border styles must coexist without merging.
|
||||||
|
new_scene 40 12
|
||||||
|
tile_2x2
|
||||||
|
$TMUX2 new-pane -x16 -y6 -X11 -Y3 -B double \
|
||||||
|
"sh -c 'printf FLT; exec sleep 100'" || exit 1
|
||||||
|
compare floating-over-tiled-double
|
||||||
|
|
||||||
|
# Two overlapping floating panes: the later (top) float draws over the earlier.
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 new-pane -x16 -y6 -X4 -Y2 "sh -c 'printf AAA; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 new-pane -x16 -y6 -X14 -Y6 "sh -c 'printf BBB; exec sleep 100'" || exit 1
|
||||||
|
compare floating-overlap
|
||||||
|
|
||||||
|
# Two floating panes with different per-pane configuration: one has its status on
|
||||||
|
# top with single borders, the other has its status on the bottom with heavy
|
||||||
|
# borders (pane-border-status and pane-border-lines are per-pane options).
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_title} " || exit 1
|
||||||
|
$TMUX2 new-pane -x16 -y4 -X3 -Y1 -T one \
|
||||||
|
"sh -c 'printf ONE; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -p pane-border-status top || exit 1
|
||||||
|
$TMUX2 set -p pane-border-lines single || exit 1
|
||||||
|
$TMUX2 new-pane -x16 -y4 -X18 -Y6 -T two \
|
||||||
|
"sh -c 'printf TWO; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -p pane-border-status bottom || exit 1
|
||||||
|
$TMUX2 set -p pane-border-lines heavy || exit 1
|
||||||
|
compare floating-mixed-config
|
||||||
|
|
||||||
|
# Floating pane over a pane that has a scrollbar: the float must draw over the
|
||||||
|
# scrollbar. Captured with -e since the scrollbar is drawn with styles.
|
||||||
|
new_scene 40 12
|
||||||
|
$TMUX2 setw pane-scrollbars on || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=0" || exit 1
|
||||||
|
$TMUX2 new-pane -x16 -y6 -X22 -Y3 "sh -c 'printf OVERSB; exec sleep 100'" || exit 1
|
||||||
|
compare floating-over-scrollbar -e
|
||||||
|
|
||||||
|
# Floating pane overlapping the client status line: the status line is not part
|
||||||
|
# of the window scene, so the float is clipped at the window's bottom edge.
|
||||||
|
new_scene 40 11
|
||||||
|
$TMUX2 set status on || exit 1
|
||||||
|
$TMUX2 set status-position bottom || exit 1
|
||||||
|
$TMUX2 set status-format[0] "" || exit 1
|
||||||
|
$TMUX2 new-pane -x20 -y6 -X8 -Y7 "sh -c 'printf OVERST; exec sleep 100'" || exit 1
|
||||||
|
compare floating-over-status
|
||||||
|
|
||||||
|
exit 0
|
||||||
176
regress/screen-redraw-indicators.sh
Normal file
176
regress/screen-redraw-indicators.sh
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise screen-redraw.c pane-border-indicators: the arrow indicators that
|
||||||
|
# point at the active pane, and the two-pane border colour split.
|
||||||
|
#
|
||||||
|
# Arrows are drawn as glyphs (captured plain). The two-pane colour split is
|
||||||
|
# drawn with styles, so that scene is captured with escapes (-e) and uses
|
||||||
|
# distinct active/inactive border styles so the split is visible.
|
||||||
|
#
|
||||||
|
# Each scene is rendered in an inner tmux attached inside an outer tmux pane.
|
||||||
|
# The outer pane is captured and compared with a golden in screen-redraw-results/.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# compare <name> [-e]: capture the outer pane and compare (or generate).
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p $2 >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y12 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y12 "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y12 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# --- Arrows: must appear for whichever pane is active (GitHub #4780). ---
|
||||||
|
|
||||||
|
$TMUX2 set -g pane-border-indicators arrows || exit 1
|
||||||
|
|
||||||
|
# Two panes, left active: arrow points left.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
compare arrows-2pane-left
|
||||||
|
|
||||||
|
# Two panes, right active: arrow points right (the case that regressed).
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t1 || exit 1
|
||||||
|
compare arrows-2pane-right
|
||||||
|
|
||||||
|
# Three columns, middle active.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t1 || exit 1
|
||||||
|
compare arrows-3pane
|
||||||
|
|
||||||
|
# Four panes (2x2), one active.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 select-layout tiled || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
compare arrows-4pane
|
||||||
|
|
||||||
|
# --- Two-pane border colour split. ---
|
||||||
|
|
||||||
|
# Distinct active/inactive styles so the coloured halves are visible; captured
|
||||||
|
# with -e to record the SGR.
|
||||||
|
$TMUX2 set -g pane-border-indicators colour || exit 1
|
||||||
|
|
||||||
|
# Left/right split: the border is vertical and is split into a top half (active
|
||||||
|
# pane colour) and a bottom half (the LAYOUT_LEFTRIGHT case).
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-active-border-style fg=red || exit 1
|
||||||
|
$TMUX2 setw pane-border-style fg=green || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
compare two-pane-colour-vertical -e
|
||||||
|
|
||||||
|
# Top/bottom split: the border is horizontal and is split into a left half and a
|
||||||
|
# right half instead (the LAYOUT_TOPBOTTOM case).
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-active-border-style fg=red || exit 1
|
||||||
|
$TMUX2 setw pane-border-style fg=green || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
compare two-pane-colour-horizontal -e
|
||||||
|
|
||||||
|
# --- Marked pane. ---
|
||||||
|
|
||||||
|
# A marked pane (select-pane -m) has its border drawn reversed. Captured with -e
|
||||||
|
# to record the reverse attribute. The marked pane is made non-active so its
|
||||||
|
# reversed border is distinct from the active pane.
|
||||||
|
$TMUX2 set -g pane-border-indicators off || exit 1
|
||||||
|
|
||||||
|
# Left/right split, right pane marked.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 selectp -t1 -m || exit 1
|
||||||
|
compare marked-pane-lr -e
|
||||||
|
|
||||||
|
# Top/bottom split, bottom pane marked.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 selectp -t1 -m || exit 1
|
||||||
|
compare marked-pane-tb -e
|
||||||
|
|
||||||
|
# Three columns, middle pane marked (reversed border on both sides).
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 selectp -t1 -m || exit 1
|
||||||
|
compare marked-pane-three -e
|
||||||
|
|
||||||
|
# Floating pane marked: the whole floating box border is reversed.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 new-pane -x20 -y6 -X8 -Y3 "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 selectp -t1 -m || exit 1
|
||||||
|
compare marked-pane-float -e
|
||||||
|
|
||||||
|
# Marked pane together with a pane status line: the title border is reversed too.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_index}:#{pane_title} " || exit 1
|
||||||
|
$TMUX2 setw pane-border-status top || exit 1
|
||||||
|
$TMUX2 selectp -t:.0 -T left || exit 1
|
||||||
|
$TMUX2 selectp -t:.1 -T right || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 selectp -t1 -m || exit 1
|
||||||
|
compare marked-pane-status -e
|
||||||
|
|
||||||
|
exit 0
|
||||||
116
regress/screen-redraw-outside.sh
Normal file
116
regress/screen-redraw-outside.sh
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise screen-redraw.c when the window is smaller than the attached client,
|
||||||
|
# so part of the client is outside the window. screen-redraw.c fills the outside
|
||||||
|
# area and draws a real border along the window's right and/or bottom edge (not
|
||||||
|
# just where panes meet). This checks redraw_get_window_offset and the OUTSIDE
|
||||||
|
# span handling, including how the window-edge border joins the pane borders.
|
||||||
|
#
|
||||||
|
# Each scene is rendered in an inner tmux attached inside an outer tmux pane.
|
||||||
|
# The outer client is 40x14; the inner window is made smaller with resizew. The
|
||||||
|
# outer pane is captured and compared with a golden in screen-redraw-results/.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# new_scene <width> <height>: fresh inner window smaller than the 40x14 client.
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'printf base; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x$1 -y$2 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y14 "sh -c 'printf base; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y14 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Single pane, narrower than the client: a border along the right edge.
|
||||||
|
new_scene 28 14
|
||||||
|
compare outside-right-single
|
||||||
|
|
||||||
|
# Narrower than the client with a left/right split: the inter-pane border plus a
|
||||||
|
# real border on the window's right edge, then the outside area.
|
||||||
|
new_scene 28 14
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
compare outside-right-split
|
||||||
|
|
||||||
|
# Shorter than the client with a top/bottom split: a real border on the window's
|
||||||
|
# bottom edge.
|
||||||
|
new_scene 40 9
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
compare outside-bottom-split
|
||||||
|
|
||||||
|
# Smaller in both dimensions with a 2x2 grid: borders on the right and bottom
|
||||||
|
# edges meeting the internal pane borders at the corner.
|
||||||
|
new_scene 28 9
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 select-layout tiled || exit 1
|
||||||
|
compare outside-both-2x2
|
||||||
|
|
||||||
|
# Window BIGGER than the client: only part of the window is viewed and the view
|
||||||
|
# can be panned (refresh-client). This exercises a non-zero scene offset.
|
||||||
|
# A 2x2 grid in a 60x20 window viewed through the 40x14 client.
|
||||||
|
new_scene 60 20
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 select-layout tiled || exit 1
|
||||||
|
|
||||||
|
# Default view: the top-left of the window.
|
||||||
|
$TMUX2 refresh-client -U 100 || exit 1
|
||||||
|
$TMUX2 refresh-client -L 100 || exit 1
|
||||||
|
compare bigger-topleft
|
||||||
|
|
||||||
|
# Panned to the bottom-right of the window (down and right to the limit).
|
||||||
|
$TMUX2 refresh-client -D 100 || exit 1
|
||||||
|
$TMUX2 refresh-client -R 100 || exit 1
|
||||||
|
compare bigger-bottomright
|
||||||
|
|
||||||
|
exit 0
|
||||||
92
regress/screen-redraw-popups.sh
Normal file
92
regress/screen-redraw-popups.sh
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise drawing of popups (display-popup) over the window scene. A popup is an
|
||||||
|
# overlay drawn on top of the redraw scene (the overlay_draw path in
|
||||||
|
# screen-redraw.c), so this guards against regressions in how popups appear.
|
||||||
|
#
|
||||||
|
# A popup is modal and stays open until its command exits, so each scene fully
|
||||||
|
# re-creates the servers and re-attaches; the popup is opened in the background
|
||||||
|
# (display-popup blocks the client that runs it) and the outer pane is captured
|
||||||
|
# while it is open.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
|
||||||
|
# setup: fresh inner window attached inside a fresh outer pane, 40x14.
|
||||||
|
setup() {
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
$TMUX2 new -d -x40 -y14 "$C" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y14 || exit 1
|
||||||
|
$TMUX new -d -x40 -y14 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# popup <args>: open a popup running a fixed command, in the background (it stays
|
||||||
|
# open because the command sleeps; the servers are killed at the next setup).
|
||||||
|
popup() {
|
||||||
|
$TMUX2 display-popup "$@" -E "sh -c 'printf POPUP; exec sleep 100'" &
|
||||||
|
sleep 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Basic popup over a single pane.
|
||||||
|
setup
|
||||||
|
popup -w20 -h6 -x6 -y3
|
||||||
|
compare popup-basic
|
||||||
|
|
||||||
|
# Popup over a split: drawn on top of the pane border.
|
||||||
|
setup
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
popup -w24 -h8 -x8 -y3
|
||||||
|
compare popup-over-split
|
||||||
|
|
||||||
|
# Popup with no border lines (-B).
|
||||||
|
setup
|
||||||
|
popup -B -w20 -h6 -x6 -y3
|
||||||
|
compare popup-noborder
|
||||||
|
|
||||||
|
# Popup with double border lines.
|
||||||
|
setup
|
||||||
|
popup -b double -w20 -h6 -x6 -y3
|
||||||
|
compare popup-double
|
||||||
|
|
||||||
|
exit 0
|
||||||
12
regress/screen-redraw-results/arrows-2pane-left.result
Normal file
12
regress/screen-redraw-results/arrows-2pane-left.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
│
|
||||||
|
←
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/arrows-2pane-right.result
Normal file
12
regress/screen-redraw-results/arrows-2pane-right.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
│
|
||||||
|
→
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/arrows-3pane.result
Normal file
12
regress/screen-redraw-results/arrows-3pane.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
│ │
|
||||||
|
→ ←
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
12
regress/screen-redraw-results/arrows-4pane.result
Normal file
12
regress/screen-redraw-results/arrows-4pane.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
│
|
||||||
|
←
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
─↑─────────────────┼────────────────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/bidi-isolates.result
Normal file
14
regress/screen-redraw-results/bidi-isolates.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/bidi-single.result
Normal file
12
regress/screen-redraw-results/bidi-single.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/bidi-split.result
Normal file
12
regress/screen-redraw-results/bidi-split.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/bigger-bottomright.result
Normal file
14
regress/screen-redraw-results/bigger-bottomright.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
─────────┼──────────────────────────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/bigger-topleft.result
Normal file
14
regress/screen-redraw-results/bigger-topleft.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
base │
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
─────────────────────────────┼──────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/cross-double.result
Normal file
14
regress/screen-redraw-results/cross-double.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
═══════════════════╬════════════════════
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
14
regress/screen-redraw-results/cross-heavy.result
Normal file
14
regress/screen-redraw-results/cross-heavy.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
━━━━━━━━━━━━━━━━━━━╋━━━━━━━━━━━━━━━━━━━━
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
14
regress/screen-redraw-results/cross-none.result
Normal file
14
regress/screen-redraw-results/cross-none.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/cross-number.result
Normal file
14
regress/screen-redraw-results/cross-number.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
0000000000000000000011111111111111111111
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
14
regress/screen-redraw-results/cross-simple.result
Normal file
14
regress/screen-redraw-results/cross-simple.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
-------------------+--------------------
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
14
regress/screen-redraw-results/cross-single.result
Normal file
14
regress/screen-redraw-results/cross-single.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
───────────────────┼────────────────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/cross-spaces.result
Normal file
14
regress/screen-redraw-results/cross-spaces.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/floating-basic.result
Normal file
12
regress/screen-redraw-results/floating-basic.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base
|
||||||
|
|
||||||
|
┌────────────────────┐
|
||||||
|
│FLOAT │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
└────────────────────┘
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/floating-border-double.result
Normal file
12
regress/screen-redraw-results/floating-border-double.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
bas╔════════════════════════════╗
|
||||||
|
║FLOAT ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
╚════════════════════════════╝
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/floating-clip-edge.result
Normal file
12
regress/screen-redraw-results/floating-clip-edge.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
┌──────────
|
||||||
|
│CLIP
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/floating-clip-topleft.result
Normal file
12
regress/screen-redraw-results/floating-clip-topleft.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
─────────────┘
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/floating-mixed-config.result
Normal file
12
regress/screen-redraw-results/floating-mixed-config.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
ba┌── one ─────────┐
|
||||||
|
│ONE │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
└──────────────┏━━━━━━━━━━━━━━━━┓
|
||||||
|
┃TWO ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┗━━ two ━━━━━━━━━┛
|
||||||
|
|
||||||
12
regress/screen-redraw-results/floating-outside.result
Normal file
12
regress/screen-redraw-results/floating-outside.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base │···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
┌──────────│···········
|
||||||
|
│OUT │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
────────────────────────────┘···········
|
||||||
|
········································
|
||||||
|
········································
|
||||||
|
········································
|
||||||
12
regress/screen-redraw-results/floating-over-scrollbar.result
Normal file
12
regress/screen-redraw-results/floating-over-scrollbar.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [32m┌────────────────┐[30m[47m
|
||||||
|
[39m[49m [32m│[39mOVERSB [30m[47m [32m[49m│[30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[30m[47m
|
||||||
|
[39m[49m [32m└────────────────┘[30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
12
regress/screen-redraw-results/floating-over-status.result
Normal file
12
regress/screen-redraw-results/floating-over-status.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
┌────────────────────┐
|
||||||
|
│OVERST │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
base │
|
||||||
|
│
|
||||||
|
╔════════════════╗
|
||||||
|
║FLT ║
|
||||||
|
║ ║
|
||||||
|
──────────║ ║────────────
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
╚════════════════╝
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/floating-over-tiled.result
Normal file
12
regress/screen-redraw-results/floating-over-tiled.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base │
|
||||||
|
│
|
||||||
|
┌────────────────┐
|
||||||
|
│FLT │
|
||||||
|
│ │
|
||||||
|
──────────│ │────────────
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
└────────────────┘
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/floating-overlap.result
Normal file
12
regress/screen-redraw-results/floating-overlap.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base
|
||||||
|
┌────────────────┐
|
||||||
|
│AAA │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ ┌────────────────┐
|
||||||
|
│ │BBB │
|
||||||
|
│ │ │
|
||||||
|
└─────────│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
12
regress/screen-redraw-results/floating-title.result
Normal file
12
regress/screen-redraw-results/floating-title.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
── base ────────────────────────────────
|
||||||
|
base ┌── title ───────────┐
|
||||||
|
│FLOAT │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
└────────────────────┘
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/marked-pane-float.result
Normal file
12
regress/screen-redraw-results/marked-pane-float.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
[7m[32m┌────────────────────┐[0m
|
||||||
|
[7m[32m│[0m [7m[32m│[0m
|
||||||
|
[7m[32m│[0m [7m[32m│[0m
|
||||||
|
[7m[32m│[0m [7m[32m│[0m
|
||||||
|
[7m[32m│[0m [7m[32m│[0m
|
||||||
|
[7m[32m│[0m [7m[32m│[0m
|
||||||
|
[7m[32m│[0m [7m[32m│[0m
|
||||||
|
[7m[32m└────────────────────┘[0m
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/marked-pane-lr.result
Normal file
12
regress/screen-redraw-results/marked-pane-lr.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
12
regress/screen-redraw-results/marked-pane-status.result
Normal file
12
regress/screen-redraw-results/marked-pane-status.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[32m── 0:left ──────────[7m┬[39m──[0m 1:right ────────
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
|
[7m[32m│[0m
|
||||||
12
regress/screen-redraw-results/marked-pane-tb.result
Normal file
12
regress/screen-redraw-results/marked-pane-tb.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[7m[32m────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/marked-pane-three.result
Normal file
12
regress/screen-redraw-results/marked-pane-three.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
|
[7m[32m│[0m [7m│[0m
|
||||||
14
regress/screen-redraw-results/outside-both-2x2.result
Normal file
14
regress/screen-redraw-results/outside-both-2x2.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
base │ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
─────────────┼──────────────┤···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
─────────────┴──────────────┘···········
|
||||||
|
········································
|
||||||
|
········································
|
||||||
|
········································
|
||||||
|
········································
|
||||||
14
regress/screen-redraw-results/outside-bottom-split.result
Normal file
14
regress/screen-redraw-results/outside-bottom-split.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
base
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
────────────────────────────────────────
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
────────────────────────────────────────
|
||||||
|
········································
|
||||||
|
········································
|
||||||
|
········································
|
||||||
|
········································
|
||||||
14
regress/screen-redraw-results/outside-right-single.result
Normal file
14
regress/screen-redraw-results/outside-right-single.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
base │···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
|
│···········
|
||||||
14
regress/screen-redraw-results/outside-right-split.result
Normal file
14
regress/screen-redraw-results/outside-right-split.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
base │ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
|
│ │···········
|
||||||
14
regress/screen-redraw-results/pane-status-2x2-top.result
Normal file
14
regress/screen-redraw-results/pane-status-2x2-top.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
── p0 ─────────────┬── p1 ──────────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
── p2 ─────────────┼── p3 ──────────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/pane-status-3-bottom.result
Normal file
14
regress/screen-redraw-results/pane-status-3-bottom.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
── p0 ────┴── p1 ───┴── p2 ─────────────
|
||||||
14
regress/screen-redraw-results/pane-status-3-top.result
Normal file
14
regress/screen-redraw-results/pane-status-3-top.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
── p0 ────┬── p1 ───┬── p2 ─────────────
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
14
regress/screen-redraw-results/pane-status-bottom.result
Normal file
14
regress/screen-redraw-results/pane-status-bottom.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
── 0:left ──────────┴── 1:right ────────
|
||||||
14
regress/screen-redraw-results/pane-status-mixed.result
Normal file
14
regress/screen-redraw-results/pane-status-mixed.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/pane-status-top.result
Normal file
14
regress/screen-redraw-results/pane-status-top.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
── 0:left ──────────┬── 1:right ────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/popup-basic.result
Normal file
14
regress/screen-redraw-results/popup-basic.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
┌──────────────────┐
|
||||||
|
│POPUP │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
└──────────────────┘
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/popup-double.result
Normal file
14
regress/screen-redraw-results/popup-double.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
╔══════════════════╗
|
||||||
|
║POPUP ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
╚══════════════════╝
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/popup-noborder.result
Normal file
14
regress/screen-redraw-results/popup-noborder.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
POPUP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/popup-over-split.result
Normal file
14
regress/screen-redraw-results/popup-over-split.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
┌──────────────────────┐
|
||||||
|
│POPUP │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
└──────────────────────┘
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
12
regress/screen-redraw-results/scrollbar-copy-mode.result
Normal file
12
regress/screen-redraw-results/scrollbar-copy-mode.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
1 [30m[47m
|
||||||
|
[39m[49m2 [30m[47m
|
||||||
|
[39m[49m3 [30m[47m
|
||||||
|
[39m[49m4 [37m[40m
|
||||||
|
[39m[49m5 [37m[40m
|
||||||
|
[39m[49m6 [37m[40m
|
||||||
|
[39m[49m7 [37m[40m
|
||||||
|
[39m[49m8 [37m[40m
|
||||||
|
[39m[49m9 [37m[40m
|
||||||
|
[39m[49m10 [37m[40m
|
||||||
|
[39m[49m11 [37m[40m
|
||||||
|
[39m[49m12 [37m[40m
|
||||||
12
regress/screen-redraw-results/scrollbar-floating.result
Normal file
12
regress/screen-redraw-results/scrollbar-floating.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [32m┌────────────────────┐[39m [30m[47m
|
||||||
|
[39m[49m [32m│[39mFLOAT [30m[47m [32m[49m│[39m [30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[39m [30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[39m [30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[39m [30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[39m [30m[47m
|
||||||
|
[39m[49m [32m│[39m [30m[47m [32m[49m│[39m [30m[47m
|
||||||
|
[39m[49m [32m└────────────────────┘[39m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
12
regress/screen-redraw-results/scrollbar-left-pad.result
Normal file
12
regress/screen-redraw-results/scrollbar-left-pad.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[30m[47m [39m[49m base
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
12
regress/screen-redraw-results/scrollbar-left-w1.result
Normal file
12
regress/screen-redraw-results/scrollbar-left-w1.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
[30m[47m [39m[49mbase
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
|
[30m[47m [39m[49m
|
||||||
12
regress/screen-redraw-results/scrollbar-right-pad.result
Normal file
12
regress/screen-redraw-results/scrollbar-right-pad.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
12
regress/screen-redraw-results/scrollbar-right-w1.result
Normal file
12
regress/screen-redraw-results/scrollbar-right-w1.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
12
regress/screen-redraw-results/scrollbar-right-w2.result
Normal file
12
regress/screen-redraw-results/scrollbar-right-w2.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
base [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
|
[39m[49m [30m[47m
|
||||||
12
regress/screen-redraw-results/status-3-bottom.result
Normal file
12
regress/screen-redraw-results/status-3-bottom.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
TOP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
──────────────────────────────
|
||||||
|
BOT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/status-3-top.result
Normal file
12
regress/screen-redraw-results/status-3-top.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
TOP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
──────────────────────────────
|
||||||
|
BOT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/status-bottom.result
Normal file
12
regress/screen-redraw-results/status-bottom.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
TOP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
──────────────────────────────
|
||||||
|
BOT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/status-off.result
Normal file
12
regress/screen-redraw-results/status-off.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
TOP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
──────────────────────────────
|
||||||
|
BOT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
12
regress/screen-redraw-results/status-top.result
Normal file
12
regress/screen-redraw-results/status-top.result
Normal file
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
TOP
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
──────────────────────────────
|
||||||
|
BOT
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-down-double.result
Normal file
14
regress/screen-redraw-results/tee-down-double.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
════════════════════╦═══════════════════
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
14
regress/screen-redraw-results/tee-down-heavy.result
Normal file
14
regress/screen-redraw-results/tee-down-heavy.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
━━━━━━━━━━━━━━━━━━━━┳━━━━━━━━━━━━━━━━━━━
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
14
regress/screen-redraw-results/tee-down-none.result
Normal file
14
regress/screen-redraw-results/tee-down-none.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-down-number.result
Normal file
14
regress/screen-redraw-results/tee-down-number.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
0000000000000000000022222222222222222222
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
|
2
|
||||||
14
regress/screen-redraw-results/tee-down-simple.result
Normal file
14
regress/screen-redraw-results/tee-down-simple.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
--------------------+-------------------
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
14
regress/screen-redraw-results/tee-down-single.result
Normal file
14
regress/screen-redraw-results/tee-down-single.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
────────────────────┬───────────────────
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
14
regress/screen-redraw-results/tee-down-spaces.result
Normal file
14
regress/screen-redraw-results/tee-down-spaces.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-lr-double.result
Normal file
14
regress/screen-redraw-results/tee-lr-double.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
╠═════════╣
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
|
║ ║
|
||||||
14
regress/screen-redraw-results/tee-lr-heavy.result
Normal file
14
regress/screen-redraw-results/tee-lr-heavy.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┣━━━━━━━━━┫
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
|
┃ ┃
|
||||||
14
regress/screen-redraw-results/tee-lr-none.result
Normal file
14
regress/screen-redraw-results/tee-lr-none.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-lr-number.result
Normal file
14
regress/screen-redraw-results/tee-lr-number.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
0 1
|
||||||
|
22222222222
|
||||||
|
2 2
|
||||||
|
2 2
|
||||||
|
2 2
|
||||||
|
2 2
|
||||||
|
2 2
|
||||||
|
2 2
|
||||||
14
regress/screen-redraw-results/tee-lr-simple.result
Normal file
14
regress/screen-redraw-results/tee-lr-simple.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
+---------+
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
|
| |
|
||||||
14
regress/screen-redraw-results/tee-lr-single.result
Normal file
14
regress/screen-redraw-results/tee-lr-single.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
├─────────┤
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
|
│ │
|
||||||
14
regress/screen-redraw-results/tee-lr-spaces.result
Normal file
14
regress/screen-redraw-results/tee-lr-spaces.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-double.result
Normal file
14
regress/screen-redraw-results/tee-up-double.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
║
|
||||||
|
════════════════════╩═══════════════════
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-heavy.result
Normal file
14
regress/screen-redraw-results/tee-up-heavy.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
┃
|
||||||
|
━━━━━━━━━━━━━━━━━━━━┻━━━━━━━━━━━━━━━━━━━
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-none.result
Normal file
14
regress/screen-redraw-results/tee-up-none.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-number.result
Normal file
14
regress/screen-redraw-results/tee-up-number.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
1
|
||||||
|
0000000000000000000011111111111111111111
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-simple.result
Normal file
14
regress/screen-redraw-results/tee-up-simple.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
|
|
||||||
|
--------------------+-------------------
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-single.result
Normal file
14
regress/screen-redraw-results/tee-up-single.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
│
|
||||||
|
────────────────────┴───────────────────
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
14
regress/screen-redraw-results/tee-up-spaces.result
Normal file
14
regress/screen-redraw-results/tee-up-spaces.result
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
[31m─────────────────────[32m───────────────────
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
[31m│[39m
|
||||||
|
[31m│[39m
|
||||||
|
[31m│[39m
|
||||||
|
[31m│[39m
|
||||||
|
[31m│[39m
|
||||||
|
[31m│[39m
|
||||||
|
[31m│[39m
|
||||||
|
[32m│[39m
|
||||||
|
[32m│[39m
|
||||||
|
[32m│[39m
|
||||||
|
[32m│[39m
|
||||||
|
[32m│[39m
|
||||||
8
regress/screen-redraw-results/window-style-active.result
Normal file
8
regress/screen-redraw-results/window-style-active.result
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[41m [32m[49m│[39m[44m
|
||||||
|
[41m [32m[49m│[39m[44m
|
||||||
|
[41m [32m[49m│[39m[44m
|
||||||
|
[41m [32m[49m│[39m[44m
|
||||||
|
[41m [32m[49m│[39m[44m
|
||||||
|
[41m [49m│[44m
|
||||||
|
[41m [49m│[44m
|
||||||
|
[41m [49m│[44m
|
||||||
8
regress/screen-redraw-results/window-style-single.result
Normal file
8
regress/screen-redraw-results/window-style-single.result
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
[44m
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
121
regress/screen-redraw-scrollbars.sh
Normal file
121
regress/screen-redraw-scrollbars.sh
Normal file
@@ -0,0 +1,121 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise screen-redraw.c drawing of pane scrollbars: position (right/left),
|
||||||
|
# width, and pad (which is handled separately from width). Scrollbars are drawn
|
||||||
|
# as styled (coloured) cells rather than glyphs, so these scenes are captured
|
||||||
|
# with escape sequences (-e); without that the scrollbar is invisible.
|
||||||
|
#
|
||||||
|
# Each scene is rendered in an inner tmux attached inside an outer tmux pane.
|
||||||
|
# The outer pane is captured and compared with a golden in screen_redraw_results/.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# compare <name>: capture the outer pane with escapes and compare (or generate).
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -pe >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# new_scene: fresh inner window, single full-size pane.
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'printf base; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y12 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y12 "sh -c 'printf base; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
$TMUX2 set -g pane-scrollbars on || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y12 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Right, width 1, no pad.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-scrollbars-position right || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=0" || exit 1
|
||||||
|
compare scrollbar-right-w1
|
||||||
|
|
||||||
|
# Left, width 1, no pad.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-scrollbars-position left || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=0" || exit 1
|
||||||
|
compare scrollbar-left-w1
|
||||||
|
|
||||||
|
# Right, width 2, no pad.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-scrollbars-position right || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=2,pad=0" || exit 1
|
||||||
|
compare scrollbar-right-w2
|
||||||
|
|
||||||
|
# Right, width 1, pad 1. The pad is drawn between the pane content and the
|
||||||
|
# scrollbar; for a right scrollbar that pad cell is at the right edge, so capture
|
||||||
|
# trims it and this matches scrollbar-right-w1. The golden still pins that
|
||||||
|
# behaviour (and the pad draw path runs); the left scene below shows pad visibly.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-scrollbars-position right || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=1" || exit 1
|
||||||
|
compare scrollbar-right-pad
|
||||||
|
|
||||||
|
# Left, width 1, pad 1: the pad cell sits between the slider and the content, so
|
||||||
|
# it is visible (one extra column before the pane content).
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-scrollbars-position left || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=1" || exit 1
|
||||||
|
compare scrollbar-left-pad
|
||||||
|
|
||||||
|
# Floating pane with a scrollbar.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw pane-scrollbars-position right || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=0" || exit 1
|
||||||
|
$TMUX2 new-pane -x20 -y6 -X8 -Y3 "sh -c 'printf FLOAT; exec sleep 100'" || exit 1
|
||||||
|
compare scrollbar-floating
|
||||||
|
|
||||||
|
# Scrollbar slider in copy mode: with scrollback the slider is shorter than the
|
||||||
|
# track, so this exercises the slider geometry (which only runs when the pane is
|
||||||
|
# in a mode). copy-mode -H hides the position indicator, which is not stable.
|
||||||
|
$TMUX2 neww -d "sh -c 'seq 40; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y12 || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-position right || exit 1
|
||||||
|
$TMUX2 setw pane-scrollbars-style "bg=black,fg=white,width=1,pad=0" || exit 1
|
||||||
|
$TMUX2 copy-mode -H || exit 1
|
||||||
|
$TMUX2 send -X history-top || exit 1
|
||||||
|
compare scrollbar-copy-mode -e
|
||||||
|
|
||||||
|
exit 0
|
||||||
92
regress/screen-redraw-status.sh
Normal file
92
regress/screen-redraw-status.sh
Normal file
@@ -0,0 +1,92 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise how the client status line affects the window scene drawn by
|
||||||
|
# screen-redraw.c. The status line is not part of the scene, but its size and
|
||||||
|
# position change the scene's offset and height (status_line_size and the
|
||||||
|
# REDRAW_STATUS_TOP flag in screen-redraw.c). The status line content does not
|
||||||
|
# matter, so status-format is set empty; only the offset effect is tested.
|
||||||
|
#
|
||||||
|
# A top/bottom split makes the offset visible: the horizontal border and the
|
||||||
|
# pane contents move as the status line grows or changes side.
|
||||||
|
#
|
||||||
|
# Each scene is rendered in an inner tmux attached inside an outer tmux pane.
|
||||||
|
# The outer pane is captured and compared with a golden in screen-redraw-results/.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
# Inner: a top/bottom split. The window tracks the attached client size, so the
|
||||||
|
# status line shrinks/shifts the window scene. Status content is blanked.
|
||||||
|
$TMUX2 new -d -x30 -y12 "sh -c 'printf TOP; exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g window-size latest || exit 1
|
||||||
|
i=0
|
||||||
|
while [ $i -le 4 ]; do
|
||||||
|
$TMUX2 set -g status-format[$i] "" || exit 1
|
||||||
|
i=$((i + 1))
|
||||||
|
done
|
||||||
|
$TMUX2 splitw -v "sh -c 'printf BOT; exec sleep 100'" || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x30 -y12 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# No status line: the window fills the whole client.
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
compare status-off
|
||||||
|
|
||||||
|
# One line at the bottom: the scene loses its bottom row.
|
||||||
|
$TMUX2 set -g status on || exit 1
|
||||||
|
$TMUX2 set -g status-position bottom || exit 1
|
||||||
|
compare status-bottom
|
||||||
|
|
||||||
|
# One line at the top: the whole scene is shifted down one row.
|
||||||
|
$TMUX2 set -g status-position top || exit 1
|
||||||
|
compare status-top
|
||||||
|
|
||||||
|
# Three lines at the bottom.
|
||||||
|
$TMUX2 set -g status 3 || exit 1
|
||||||
|
$TMUX2 set -g status-position bottom || exit 1
|
||||||
|
compare status-3-bottom
|
||||||
|
|
||||||
|
# Three lines at the top: the scene is shifted down three rows.
|
||||||
|
$TMUX2 set -g status-position top || exit 1
|
||||||
|
compare status-3-top
|
||||||
|
|
||||||
|
exit 0
|
||||||
180
regress/screen-redraw-tiled.sh
Normal file
180
regress/screen-redraw-tiled.sh
Normal file
@@ -0,0 +1,180 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise screen-redraw.c border drawing for non-floating (tiled) panes: the
|
||||||
|
# border junctions where panes meet, and pane status lines/titles.
|
||||||
|
#
|
||||||
|
# Four layouts cover every junction type that tiled panes produce:
|
||||||
|
# cross - a 2x2 grid: a full crossing (+ / CELL_LRUD)
|
||||||
|
# tee-lr - three columns with the middle split: left and right tees
|
||||||
|
# (|- and -| / URD, ULD)
|
||||||
|
# tee-up - a top/bottom split with the top split: a bottom tee (_|_ / LRU)
|
||||||
|
# tee-down - a top/bottom split with the bottom split: a top tee (T / LRD)
|
||||||
|
# Each layout is rendered once for every value of pane-border-lines, so every
|
||||||
|
# junction is checked in every border style. One layout per result file.
|
||||||
|
#
|
||||||
|
# Each scene is rendered in an inner tmux attached inside an outer tmux pane.
|
||||||
|
# The outer pane is captured (the full client scene drawn by screen-redraw.c)
|
||||||
|
# and compared with a golden file in screen-redraw-results/.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -p >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
# Fresh inner window of fixed size, with one command running.
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y14 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
|
||||||
|
# Layouts. Each produces one kind of junction. Splits at fixed window size are
|
||||||
|
# deterministic.
|
||||||
|
layout_cross() { # 2x2 grid: a full crossing
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 select-layout tiled || exit 1
|
||||||
|
}
|
||||||
|
layout_tee_lr() { # three columns, middle split: left and right tees
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t1 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
}
|
||||||
|
layout_tee_up() { # top/bottom, top split: a bottom tee
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
}
|
||||||
|
layout_tee_down() { # top/bottom, bottom split: a top tee
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t1 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y14 "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
$TMUX2 set -g pane-border-format " #{pane_index} " || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y14 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Every junction in every border style. New windows inherit the global option,
|
||||||
|
# so set it before building each layout.
|
||||||
|
for style in single double heavy simple number spaces none; do
|
||||||
|
$TMUX2 set -g pane-border-lines $style || exit 1
|
||||||
|
layout_cross; compare cross-$style
|
||||||
|
layout_tee_lr; compare tee-lr-$style
|
||||||
|
layout_tee_up; compare tee-up-$style
|
||||||
|
layout_tee_down; compare tee-down-$style
|
||||||
|
done
|
||||||
|
$TMUX2 set -g pane-border-lines single || exit 1
|
||||||
|
|
||||||
|
# Pane status lines and titles (one layout each). Use a format that includes the
|
||||||
|
# explicitly-set title; the default title is the hostname, which is not stable,
|
||||||
|
# so every pane's title must be set.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_index}:#{pane_title} " || exit 1
|
||||||
|
$TMUX2 setw pane-border-status top || exit 1
|
||||||
|
$TMUX2 selectp -t:.0 -T left || exit 1
|
||||||
|
$TMUX2 selectp -t:.1 -T right || exit 1
|
||||||
|
$TMUX2 selectp -t:.0 || exit 1
|
||||||
|
compare pane-status-top
|
||||||
|
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_index}:#{pane_title} " || exit 1
|
||||||
|
$TMUX2 setw pane-border-status bottom || exit 1
|
||||||
|
$TMUX2 selectp -t:.0 -T left || exit 1
|
||||||
|
$TMUX2 selectp -t:.1 -T right || exit 1
|
||||||
|
$TMUX2 selectp -t:.0 || exit 1
|
||||||
|
compare pane-status-bottom
|
||||||
|
|
||||||
|
# title_all <title-prefix>: set every pane's title (the default is the hostname).
|
||||||
|
title_all() {
|
||||||
|
for p in $($TMUX2 list-panes -F '#{pane_index}'); do
|
||||||
|
$TMUX2 selectp -t:.$p -T $1$p || exit 1
|
||||||
|
done
|
||||||
|
$TMUX2 selectp -t:.0 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# Three columns with a status line on top, then on the bottom.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_title} " || exit 1
|
||||||
|
$TMUX2 setw pane-border-status top || exit 1
|
||||||
|
title_all p
|
||||||
|
compare pane-status-3-top
|
||||||
|
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_title} " || exit 1
|
||||||
|
$TMUX2 setw pane-border-status bottom || exit 1
|
||||||
|
title_all p
|
||||||
|
compare pane-status-3-bottom
|
||||||
|
|
||||||
|
# A 2x2 grid with a status line on top: status borders meet pane borders at the
|
||||||
|
# internal junctions.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
$TMUX2 splitw -v "$C" || exit 1
|
||||||
|
$TMUX2 select-layout tiled || exit 1
|
||||||
|
$TMUX2 setw pane-border-format " #{pane_title} " || exit 1
|
||||||
|
$TMUX2 setw pane-border-status top || exit 1
|
||||||
|
title_all p
|
||||||
|
compare pane-status-2x2-top
|
||||||
|
|
||||||
|
exit 0
|
||||||
77
regress/screen-redraw-window-style.sh
Normal file
77
regress/screen-redraw-window-style.sh
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
|
||||||
|
# Exercise window-style and window-active-style, which set the default cell
|
||||||
|
# (background) style for a window's panes. screen-redraw.c uses these for the
|
||||||
|
# default grid cell of each pane (the active pane uses window-active-style, the
|
||||||
|
# others window-style). Captured with -e to record the background colours.
|
||||||
|
#
|
||||||
|
# Run with GENERATE=1 to (re)create the golden files.
|
||||||
|
|
||||||
|
PATH=/bin:/usr/bin
|
||||||
|
TERM=screen
|
||||||
|
LC_ALL=C.UTF-8
|
||||||
|
export TERM LC_ALL
|
||||||
|
|
||||||
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||||
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||||
|
TMUX2="$TEST_TMUX -Ltest2 -f/dev/null"
|
||||||
|
RESULTS=screen-redraw-results
|
||||||
|
|
||||||
|
TMP=$(mktemp)
|
||||||
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" \
|
||||||
|
0 1 15
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$*" >&2
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
compare() {
|
||||||
|
sleep 1
|
||||||
|
$TMUX capturep -pe >$TMP || exit 1
|
||||||
|
if [ -n "$GENERATE" ]; then
|
||||||
|
cp $TMP "$RESULTS/$1.result" || exit 1
|
||||||
|
echo "generated $1"
|
||||||
|
else
|
||||||
|
cmp -s $TMP "$RESULTS/$1.result" || \
|
||||||
|
fail "scene $1 differs from $RESULTS/$1.result"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
new_scene() {
|
||||||
|
$TMUX2 neww -d "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 selectw -t:\$ || exit 1
|
||||||
|
$TMUX2 resizew -x40 -y8 || exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
C="sh -c 'exec sleep 100'"
|
||||||
|
|
||||||
|
$TMUX kill-server 2>/dev/null
|
||||||
|
$TMUX2 kill-server 2>/dev/null
|
||||||
|
|
||||||
|
$TMUX2 new -d -x40 -y8 "sh -c 'exec sleep 100'" || exit 1
|
||||||
|
$TMUX2 set -g status off || exit 1
|
||||||
|
$TMUX2 set -g window-size manual || exit 1
|
||||||
|
|
||||||
|
$TMUX new -d -x40 -y8 || exit 1
|
||||||
|
$TMUX set -g status off || exit 1
|
||||||
|
$TMUX set -g window-size manual || exit 1
|
||||||
|
$TMUX set -g default-terminal "tmux-256color" || exit 1
|
||||||
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
||||||
|
$TMUX send Enter || exit 1
|
||||||
|
sleep 1
|
||||||
|
|
||||||
|
# Single pane with a window background style.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw window-style "bg=blue" || exit 1
|
||||||
|
compare window-style-single
|
||||||
|
|
||||||
|
# Split: the active pane uses window-active-style, the other window-style.
|
||||||
|
new_scene
|
||||||
|
$TMUX2 setw window-style "bg=blue" || exit 1
|
||||||
|
$TMUX2 setw window-active-style "bg=red" || exit 1
|
||||||
|
$TMUX2 splitw -h "$C" || exit 1
|
||||||
|
$TMUX2 selectp -t0 || exit 1
|
||||||
|
compare window-style-active
|
||||||
|
|
||||||
|
exit 0
|
||||||
Reference in New Issue
Block a user