mirror of
https://github.com/tmux/tmux.git
synced 2026-10-17 00:44:54 +00:00
Side status line regress tests.
This commit is contained in:
77
regress/side-status-click.sh
Normal file
77
regress/side-status-click.sh
Normal file
@@ -0,0 +1,77 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Clicking a window on the side status line, including the current window,
|
||||
# dispatches the Status binding with that window.
|
||||
|
||||
PATH=/bin:/usr/bin
|
||||
TERM=screen
|
||||
LC_ALL=C.UTF-8
|
||||
export PATH 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"
|
||||
|
||||
cleanup()
|
||||
{
|
||||
$TMUX2 kill-server >/dev/null 2>&1
|
||||
$TMUX kill-server >/dev/null 2>&1
|
||||
}
|
||||
trap cleanup 0 1 15
|
||||
|
||||
fail()
|
||||
{
|
||||
echo "$*" >&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
# Click row $1 of the side status line and check the binding got $2.
|
||||
click()
|
||||
{
|
||||
$TMUX set -g @click none || exit 1
|
||||
seq=$(printf '\033[<0;3;%sM\033[<0;3;%sm' "$1" "$1")
|
||||
$TMUX2 send-keys -t outer:0.0 -l "$seq" || fail "send mouse failed"
|
||||
sleep 1
|
||||
got=$($TMUX show -gv @click)
|
||||
[ "$got" = "$2" ] || fail "row $1: got '$got', expected '$2'"
|
||||
}
|
||||
|
||||
$TMUX new-session -d -s inner -n zero -x 60 -y 20 'sleep 100' || exit 1
|
||||
$TMUX new-window -d -n one 'sleep 100' || exit 1
|
||||
$TMUX new-window -d -n two 'sleep 100' || exit 1
|
||||
$TMUX set -g mouse on || exit 1
|
||||
$TMUX set -g status off || exit 1
|
||||
$TMUX set -g side-status left || exit 1
|
||||
$TMUX bind -n MouseDown1Status \
|
||||
set -gF @click '#{mouse_status_range} #{window_name}' || exit 1
|
||||
$TMUX bind -n MouseDown1StatusDefault set -g @click default || exit 1
|
||||
$TMUX2 new-session -d -s outer -x 60 -y 20 'sleep 100' || exit 1
|
||||
$TMUX2 set -g status off || exit 1
|
||||
$TMUX2 respawn-pane -k -t outer:0.0 "$TMUX attach -t inner" || exit 1
|
||||
sleep 1
|
||||
|
||||
# The current window is first, then in the middle of the list.
|
||||
click 1 'window zero'
|
||||
click 2 'window one'
|
||||
click 4 default
|
||||
$TMUX select-window -t inner:1 || exit 1
|
||||
sleep 0.5
|
||||
click 1 'window zero'
|
||||
click 2 'window one'
|
||||
click 3 'window two'
|
||||
|
||||
# A range closed in the same style as the line break ends on its own row.
|
||||
$TMUX set -g side-status-format '#[range=user|foo]one#[norange,nl]two' ||
|
||||
exit 1
|
||||
sleep 0.5
|
||||
click 1 'foo one'
|
||||
click 2 default
|
||||
|
||||
# A range still open at a line break carries on to the next row.
|
||||
$TMUX set -g side-status-format '#[range=user|foo]one#[nl]two#[norange]' ||
|
||||
exit 1
|
||||
sleep 0.5
|
||||
click 1 'foo one'
|
||||
click 2 'foo one'
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user