mirror of
https://github.com/tmux/tmux.git
synced 2026-09-14 09:11:59 +00:00
39 lines
937 B
Bash
39 lines
937 B
Bash
#!/bin/sh
|
|
|
|
# A waited run-shell command can complete after a control client has closed its
|
|
# input and exited. The command queue still references the client until the job
|
|
# callback runs, but control_stop has already destroyed c->control_state. Late
|
|
# command output must be discarded instead of dereferencing the stopped control
|
|
# state and killing the server.
|
|
|
|
PATH=/bin:/usr/bin
|
|
TERM=screen
|
|
|
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
|
TMUX="$TEST_TMUX -Ltest"
|
|
$TMUX kill-server 2>/dev/null
|
|
|
|
OUT=$(mktemp)
|
|
trap "$TMUX kill-server 2>/dev/null; rm -f $OUT" 0 1 15
|
|
|
|
$TMUX -f/dev/null new-session -d -s main || exit 1
|
|
|
|
printf '%s\n' 'run-shell "sleep 0.2; echo TEST"' |
|
|
$TMUX -f/dev/null -C >"$OUT" 2>&1
|
|
|
|
sleep 1
|
|
|
|
$TMUX has-session -t main 2>/dev/null || {
|
|
echo "server exited after late run-shell output"
|
|
cat "$OUT"
|
|
exit 1
|
|
}
|
|
|
|
grep -q '^%exit' "$OUT" || {
|
|
echo "control client did not exit"
|
|
cat "$OUT"
|
|
exit 1
|
|
}
|
|
|
|
exit 0
|