diff --git a/regress/split-window-wait-kill.sh b/regress/split-window-wait-kill.sh new file mode 100644 index 000000000..3387eec55 --- /dev/null +++ b/regress/split-window-wait-kill.sh @@ -0,0 +1,37 @@ +#!/bin/sh + +# split-window -W exit status when the pane is killed + +PATH=/bin:/usr/bin +TERM=screen + +[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux) +TMUX="$TEST_TMUX -LtestSWK$$ -f/dev/null" +$TMUX kill-server 2>/dev/null +trap "$TMUX kill-server 2>/dev/null" 0 1 15 + +$TMUX new -d + +# A command that exits on its own still reports its own status, so a failure +# below is the kill path and not -W being broken altogether. +$TMUX splitw -W 'sh -c "exit 7"' +[ "$?" = 7 ] || exit 1 + +$TMUX splitw -W 'sleep 60' & +pid=$! + +i=0 +target= +while [ -z "$target" ]; do + [ "$i" -eq 50 ] && exit 1 + i=$((i + 1)) + sleep 0.1 + target=$($TMUX lsp -F'#{pane_id} #{pane_start_command}' 2>/dev/null| + awk '/sleep/{print $1; exit}') +done + +$TMUX killp -t "$target" +wait "$pid" +[ "$?" = 129 ] || exit 1 + +exit 0