mirror of
https://github.com/tmux/tmux.git
synced 2026-10-16 16:44:30 +00:00
Side status line regress tests.
This commit is contained in:
90
regress/side-status-drag.sh
Normal file
90
regress/side-status-drag.sh
Normal file
@@ -0,0 +1,90 @@
|
||||
#!/bin/sh
|
||||
|
||||
# A Ctrl-drag starting on the side status line must not create a floating
|
||||
# pane, and must still dispatch Status bindings. Ctrl-clicking a window on the
|
||||
# side status line swaps windows, so panes are compared across the session.
|
||||
|
||||
PATH=/bin:/usr/bin
|
||||
TERM=screen
|
||||
export PATH TERM
|
||||
|
||||
[ -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
|
||||
}
|
||||
|
||||
mouse()
|
||||
{
|
||||
seq=$(printf '\033[<%s;%s;%s%s' "$1" "$2" "$3" "$4")
|
||||
$TMUX2 send-keys -t outer:0.0 -l "$seq" || fail "send mouse failed"
|
||||
sleep 0.2
|
||||
}
|
||||
|
||||
check_drag()
|
||||
{
|
||||
sx=$1
|
||||
sy=$2
|
||||
ex=$3
|
||||
ey=$4
|
||||
|
||||
# First move along the side status line, then into the pane.
|
||||
mouse 16 "$sx" "$sy" M
|
||||
mouse 48 "$sx" $((sy + 1)) M
|
||||
mouse 48 "$ex" "$ey" M
|
||||
mouse 48 $((ex + 2)) "$ey" M
|
||||
mouse 16 $((ex + 2)) "$ey" m
|
||||
|
||||
panes=$($TMUX list-panes -s -F '#{pane_id}') || fail "server exited"
|
||||
panes=$(echo "$panes" | sort)
|
||||
[ "$panes" = "$BASE" ] ||
|
||||
fail "side status drag from $sx,$sy created a pane: $panes"
|
||||
}
|
||||
|
||||
$TMUX new-session -d -s inner -x 60 -y 20 'sleep 100' || exit 1
|
||||
$TMUX new-window -d 'sleep 100' || exit 1
|
||||
$TMUX set -g mouse on || exit 1
|
||||
$TMUX set -g default-command 'sleep 100' || exit 1
|
||||
$TMUX set -g status off || exit 1
|
||||
$TMUX set -g side-status left || exit 1
|
||||
BASE=$($TMUX list-panes -s -F '#{pane_id}') || exit 1
|
||||
BASE=$(echo "$BASE" | sort)
|
||||
$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
|
||||
|
||||
# Blank rows and the window list on the left.
|
||||
check_drag 3 10 30 12
|
||||
check_drag 2 1 30 12
|
||||
check_drag 2 2 30 12
|
||||
|
||||
$TMUX set -g side-status right || exit 1
|
||||
sleep 0.5
|
||||
check_drag 55 10 20 12
|
||||
|
||||
# The horizontal status line takes the bottom row below the side status.
|
||||
$TMUX set -g side-status left || exit 1
|
||||
$TMUX set -g status on || exit 1
|
||||
sleep 0.5
|
||||
check_drag 3 10 30 12
|
||||
|
||||
# A drag starting on a window range dispatches the Status binding.
|
||||
$TMUX bind -n C-MouseDrag1Status set -g @status-drag status || exit 1
|
||||
$TMUX set -g @status-drag '' || exit 1
|
||||
check_drag 2 2 30 12
|
||||
got=$($TMUX show -gv @status-drag)
|
||||
[ "$got" = status ] || fail "got drag '$got', expected 'status'"
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user