Tests for 5718.

This commit is contained in:
Nicholas Marriott
2026-10-12 09:09:13 +01:00
parent e94426e02b
commit 634e96f8cc
3 changed files with 67 additions and 7 deletions

View File

@@ -40,7 +40,7 @@ start_pane tabs 12 3 'A\tB\033[2g\r\033[IC'
check_raw_matches tabs \
'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \
'C 0,1 data=\(7,7, \) flags=TAB\[[0-9a-f]+\]' \
'C 0,2 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\]' \
'C 0,2 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\]' \
'C 0,8 data=\(1,1,B\) flags=NONE\[0\]' \
'C 0,0 data=\(1,1,C\) flags=NONE\[0\]'

View File

@@ -7,7 +7,7 @@ check_capture wide 'AあB'
check_raw_matches wide \
'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \
'C 0,1 data=\(2,3,あ\) flags=NONE\[0\] attr=NONE\[0\]' \
'C 0,2 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,2 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,3 data=\(1,1,B\) flags=NONE\[0\]'
start_pane combining 8 3 'e\314\201x'
@@ -20,21 +20,21 @@ start_pane emoji 10 3 '\360\237\230\200Z'
check_raw_matches emoji \
'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \
'C 0,0 data=\(2,4,😀\) flags=NONE\[0\] attr=NONE\[0\]' \
'C 0,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,2 data=\(1,1,Z\) flags=NONE\[0\]'
start_pane flag 10 3 '\360\237\207\254\360\237\207\247!'
check_raw_matches flag \
'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \
'C 0,0 data=\(2,8,🇬🇧\) flags=NONE\[0\] attr=NONE\[0\]' \
'C 0,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,2 data=\(1,1,!\) flags=NONE\[0\]'
start_pane variation 10 3 '*\357\270\217!'
check_raw_matches variation \
'L 0 \(0\) flags=EXTENDED\[[0-9a-f]+\]' \
'C 0,0 data=\(2,[0-9]+,.*\) flags=NONE\[0\] attr=NONE\[0\]' \
'C 0,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,2 data=\(1,1,!\) flags=NONE\[0\]'
start_pane invalid 10 3 '\377A'
@@ -69,14 +69,14 @@ check_raw_matches overwrite-wide-pad \
start_pane overwrite-wide-with-wide 10 3 'A\343\201\202B\r\033[1C\347\225\214'
check_raw_matches overwrite-wide-with-wide \
'C 0,1 data=\(2,3,界\) flags=NONE\[0\] attr=NONE\[0\]' \
'C 0,2 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,2 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 0,3 data=\(1,1,B\) flags=NONE\[0\]'
start_pane wide-right-edge 4 3 'ABC\343\201\202Z'
check_raw_matches wide-right-edge \
'L 0 \(0\) flags=WRAPPED\[[0-9a-f]+\]' \
'C 1,0 data=\(2,3,あ\) flags=NONE\[0\] attr=NONE\[0\]' \
'C 1,1 data=\(1,1,!\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 1,1 data=\(0,0,\) flags=PADDING\[[0-9a-f]+\] attr=NONE\[0\]' \
'C 1,2 data=\(1,1,Z\) flags=NONE\[0\]'
exit $exit_status

View File

@@ -0,0 +1,60 @@
#!/bin/sh
# Wide-character padding must not count towards the reflowed line width.
. ./input-common.inc
check_reflow()
{
# Resizing can move the first physical line into history.
$TMUX capture-pane -pN"$2" -t "$1:" -S - -E - |
normalize_capture >"$TMP"
printf '%s\n' "${3:-$text}" >"$EXP"
cmp "$TMP" "$EXP" || fail "$1 reflow (width $width, flags -pN$2)"
}
text='中文文档甲 中文文档乙 中文文档丙 中文文档丁 中文文档戊 中文文档己'
# Default and RGB backgrounds exercise compact and extended padding cells.
for padding in compact extended; do
style=''
if [ "$padding" = extended ]; then
style='\033[48;2;1;2;3m'
fi
width=96
start_pane_history "wide-$padding" 96 18 "${style}${text}\\n"
check_reflow "wide-$padding" ''
for width in 47 96 47 96; do
$TMUX resize-window -t "wide-$padding:" -x "$width" -y 18 ||
exit 1
check_reflow "wide-$padding" J
if [ "$width" = 96 ]; then
check_reflow "wide-$padding" ''
fi
done
done
# Include both a split between wide characters and an odd-width boundary.
text='中文文档'
start_pane_history boundary 8 18 "${text}\\n"
for width in 4 8 3 8; do
$TMUX resize-window -t boundary: -x "$width" -y 18 || exit 1
check_reflow boundary J
case "$width" in
4)
check_reflow boundary '' '中文
文档'
;;
3)
check_reflow boundary '' '中
文
文
档'
;;
8)
check_reflow boundary ''
;;
esac
done
exit $exit_status