mirror of
https://github.com/tmux/tmux.git
synced 2026-10-09 19:54:22 +00:00
103 lines
2.8 KiB
Bash
103 lines
2.8 KiB
Bash
#!/bin/sh
|
|
|
|
# Check OSC 133 exit status indicators in copy mode using a real client.
|
|
|
|
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 -LtestA$$ -f/dev/null"
|
|
TMUX2="$TEST_TMUX -LtestB$$ -f/dev/null"
|
|
|
|
fail() {
|
|
echo "$*" >&2
|
|
exit 1
|
|
}
|
|
|
|
capture() {
|
|
$TMUX capture-pane -pS0 -E- >$TMP || exit 1
|
|
}
|
|
|
|
check_grep() {
|
|
grep -Fq "$1" $TMP || fail "missing pattern: $1"
|
|
}
|
|
|
|
check_no_grep() {
|
|
grep -Fq "$1" $TMP && fail "unexpected pattern: $1"
|
|
}
|
|
|
|
$TMUX kill-server 2>/dev/null
|
|
$TMUX2 kill-server 2>/dev/null
|
|
|
|
TMP=$(mktemp)
|
|
trap "rm -f $TMP; $TMUX kill-server 2>/dev/null; $TMUX2 kill-server 2>/dev/null" 0 1 15
|
|
|
|
$TMUX2 new-session -d -x80 -y10 \
|
|
"printf '\033]133;A\007p\$ \033]133;B\007one\n\033]133;C\007out1\n\033]133;D;0\007\033]133;A\007p\$ \033]133;B\007two\n\033]133;C\007out2\n\033]133;D;123\007\033]133;A\007p\$ \033]133;B\007silent\n\033]133;C\007\033]133;D;7\007\033]133;A\007p\$ \033]133;B\007three\n\033]133;C\007out3\n\033]133;D\007\033]133;A\007p\$ \033]133;B\007'; exec sleep 100" || \
|
|
exit 1
|
|
$TMUX2 set -g status off || exit 1
|
|
$TMUX2 set -g copy-mode-position-format '#[align=left]POS' || exit 1
|
|
$TMUX2 list-keys -Tcopy-mode O | grep -Fq 'fold-view-toggle' || exit 1
|
|
$TMUX2 list-keys -Tcopy-mode-vi O | grep -Fq 'fold-view-toggle' || exit 1
|
|
|
|
$TMUX new-session -d -x80 -y10 || exit 1
|
|
$TMUX set -g status off || exit 1
|
|
$TMUX send -l "$TMUX2 attach" || exit 1
|
|
$TMUX send Enter || exit 1
|
|
sleep 1
|
|
|
|
$TMUX2 copy-mode -U || exit 1
|
|
$TMUX2 send -X history-top || exit 1
|
|
sleep 1
|
|
capture
|
|
check_grep "!- p\$ two"
|
|
check_grep "! p\$ silent"
|
|
check_no_grep "!+ p\$ silent"
|
|
check_grep "POS"
|
|
|
|
# Rebuilding with collapsed output must not expand copy-mode formats before
|
|
# the viewport has been restored for the shorter backing grid.
|
|
$TMUX2 send -X collapse-output -a || exit 1
|
|
sleep 1
|
|
capture
|
|
check_grep "!+ p\$ two"
|
|
check_grep "! p\$ silent"
|
|
check_no_grep "!+ p\$ silent"
|
|
$TMUX2 send -X line-numbers-on || exit 1
|
|
sleep 1
|
|
capture
|
|
check_grep " 3 !+ p\$ two"
|
|
$TMUX2 send -X fold-view-toggle || exit 1
|
|
[ "$($TMUX2 display -p '#{copy_fold_view}')" = 0 ] || exit 1
|
|
sleep 1
|
|
capture
|
|
check_grep "out2"
|
|
check_no_grep "!+ p\$ two"
|
|
check_grep " 3 p\$ two"
|
|
$TMUX2 send -X fold-view-toggle || exit 1
|
|
[ "$($TMUX2 display -p '#{copy_fold_view}')" = 1 ] || exit 1
|
|
sleep 1
|
|
capture
|
|
check_grep " 3 !- p\$ two"
|
|
|
|
# A format wider than the standard three-column gutter is not truncated.
|
|
$TMUX2 send -X cancel || exit 1
|
|
$TMUX2 set -p copy-mode-exit-status-format \
|
|
'#[align=right]#{?exit_status,!#{exit_status}, }' || exit 1
|
|
$TMUX2 copy-mode -c || exit 1
|
|
$TMUX2 send -X history-top || exit 1
|
|
sleep 1
|
|
capture
|
|
check_grep "!123+ p\$ two"
|
|
|
|
$TMUX2 send -X select-line || exit 1
|
|
$TMUX2 send -X copy-selection || exit 1
|
|
selection=$($TMUX2 show-buffer)
|
|
case $selection in
|
|
*RC=*) fail "exit status was copied" ;;
|
|
esac
|
|
|
|
exit 0
|