mirror of
https://github.com/tmux/tmux.git
synced 2026-10-15 16:04:34 +00:00
Add regress tests for events code.
This commit is contained in:
102
regress/control-notify-events.sh
Normal file
102
regress/control-notify-events.sh
Normal file
@@ -0,0 +1,102 @@
|
||||
#!/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)
|
||||
TMUX="$TEST_TMUX -LtestA$$ -f/dev/null"
|
||||
|
||||
TMPDIR=$(mktemp -d)
|
||||
IN="$TMPDIR/in"
|
||||
OUT="$TMPDIR/out"
|
||||
PID=
|
||||
|
||||
cleanup()
|
||||
{
|
||||
[ -n "$PID" ] && kill "$PID" 2>/dev/null
|
||||
$TMUX kill-server 2>/dev/null
|
||||
rm -rf "$TMPDIR"
|
||||
}
|
||||
trap cleanup EXIT
|
||||
|
||||
wait_for()
|
||||
{
|
||||
pattern=$1
|
||||
timeout=${2:-6}
|
||||
i=0
|
||||
|
||||
while [ "$i" -lt "$timeout" ]; do
|
||||
if grep -F -- "$pattern" "$OUT" >/dev/null 2>&1; then
|
||||
return 0
|
||||
fi
|
||||
sleep 1
|
||||
i=$((i + 1))
|
||||
done
|
||||
echo "missing: $pattern"
|
||||
cat "$OUT"
|
||||
return 1
|
||||
}
|
||||
|
||||
wait_for_count()
|
||||
{
|
||||
pattern=$1
|
||||
expected=$2
|
||||
timeout=${3:-6}
|
||||
i=0
|
||||
|
||||
while [ "$i" -lt "$timeout" ]; do
|
||||
count=$(grep -F -- "$pattern" "$OUT" 2>/dev/null | wc -l)
|
||||
if [ "$count" -ge "$expected" ]; then
|
||||
return 0
|
||||
fi
|
||||
sleep 1
|
||||
i=$((i + 1))
|
||||
done
|
||||
echo "missing count $expected for: $pattern"
|
||||
cat "$OUT"
|
||||
return 1
|
||||
}
|
||||
|
||||
send()
|
||||
{
|
||||
printf '%s\n' "$*" >&3
|
||||
}
|
||||
|
||||
$TMUX kill-server 2>/dev/null
|
||||
$TMUX new-session -d -s notify -x 80 -y 24 || exit 1
|
||||
wid=$($TMUX display-message -p -t notify:0 '#{window_id}') || exit 1
|
||||
pane=$($TMUX display-message -p -t notify:0.0 '#{pane_id}') || exit 1
|
||||
|
||||
mkfifo "$IN"
|
||||
: >"$OUT"
|
||||
$TMUX -C attach-session -t notify <"$IN" >"$OUT" 2>&1 &
|
||||
PID=$!
|
||||
exec 3>"$IN"
|
||||
|
||||
send 'display-message -p ready'
|
||||
wait_for 'ready' 3 || exit 1
|
||||
|
||||
send 'rename-window notify-renamed'
|
||||
wait_for "%window-renamed $wid notify-renamed" || exit 1
|
||||
|
||||
send 'split-window -h'
|
||||
wait_for "%layout-change $wid " || exit 1
|
||||
|
||||
send 'select-pane -t:.0'
|
||||
wait_for "%window-pane-changed $wid $pane" || exit 1
|
||||
|
||||
send 'copy-mode -t:.0'
|
||||
wait_for "%pane-mode-changed $pane" || exit 1
|
||||
|
||||
sessions_changed=$(grep -F -- '%sessions-changed' "$OUT" 2>/dev/null | \
|
||||
wc -l)
|
||||
send 'new-session -d -s notify-extra'
|
||||
wait_for_count '%sessions-changed' $((sessions_changed + 1)) || exit 1
|
||||
|
||||
send 'kill-session -t notify-extra'
|
||||
wait_for_count '%sessions-changed' $((sessions_changed + 2)) || exit 1
|
||||
|
||||
exit 0
|
||||
Reference in New Issue
Block a user