set-hook -R test.

This commit is contained in:
Nicholas Marriott
2026-07-05 18:26:44 +01:00
parent 29b2b7a875
commit dc1693d5a1

63
regress/set-hook-R.sh Normal file
View File

@@ -0,0 +1,63 @@
#!/bin/sh
PATH=/bin:/usr/bin
TERM=screen
LC_ALL=C.UTF-8
LANG=C.UTF-8
export TERM LC_ALL LANG
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
OUT=$(mktemp -d)
TMUX_TMPDIR="$OUT"
export TMUX_TMPDIR
TMUX="$TEST_TMUX -Ltest-hook-R-$$ -f/dev/null"
fail()
{
echo "$*" >&2
$TMUX kill-server 2>/dev/null || true
rm -rf "$OUT"
exit 1
}
cleanup()
{
$TMUX kill-server 2>/dev/null || true
rm -rf "$OUT"
}
trap cleanup EXIT
wait_for()
{
option=$1
expected=$2
i=0
while [ $i -lt 30 ]; do
value=$($TMUX show -gqv "$option" 2>/dev/null || true)
[ "$value" = "$expected" ] && return 0
i=$((i + 1))
sleep 0.2
done
fail "expected $option to be '$expected' but got '$value'"
}
$TMUX new -d -s one || fail "new-session one failed"
$TMUX new -d -s two || fail "new-session two failed"
pane=$($TMUX display -pt two:0.0 '#{pane_id}') ||
fail "display-message pane failed"
$TMUX set -g @seen 0 || fail "set @seen failed"
$TMUX set-hook -g @manual \
'set -gF @seen "#{hook}:#{session_name}:#{window_index}:#{pane_id}"' ||
fail "set-hook @manual failed"
[ "$($TMUX show -gqv @seen)" = 0 ] ||
fail "hook ran before set-hook -R"
$TMUX set-hook -g -R -t two:0.0 @manual ||
fail "set-hook -R @manual failed"
wait_for @seen "@manual:two:0:$pane"
exit 0