mirror of
https://github.com/tmux/tmux.git
synced 2026-10-11 21:14:21 +00:00
Test for 5599.
This commit is contained in:
@@ -2,8 +2,9 @@
|
|||||||
|
|
||||||
# monitor-activity, monitor-bell and monitor-silence: both the
|
# monitor-activity, monitor-bell and monitor-silence: both the
|
||||||
# alert-activity, alert-bell and alert-silence hooks and the winlink alert
|
# alert-activity, alert-bell and alert-silence hooks and the winlink alert
|
||||||
# flags (window_activity_flag, window_bell_flag, window_silence_flag and
|
# flags (window_activity_flag, window_bell_flag, window_silence_flag,
|
||||||
# the #, !, ~ characters in window_flags). The sessions are detached so
|
# their session equivalents and the #, !, ~ characters in window_flags).
|
||||||
|
# The sessions are detached so
|
||||||
# alert flags are set even on the current window; the *-action options
|
# alert flags are set even on the current window; the *-action options
|
||||||
# still decide whether the hooks fire. Panes run cat: activity is
|
# still decide whether the hooks fire. Panes run cat: activity is
|
||||||
# generated by the tty echo of send-keys and a bell by sending a BEL and
|
# generated by the tty echo of send-keys and a bell by sending a BEL and
|
||||||
@@ -111,6 +112,24 @@ flags_have()
|
|||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
|
assert_session_flag()
|
||||||
|
{
|
||||||
|
flag="#{session_${1}_flag}"
|
||||||
|
expected=$2
|
||||||
|
|
||||||
|
# Only mon exists here. Check both window contexts and list-sessions.
|
||||||
|
for target in mon:w0 "mon:$3"; do
|
||||||
|
value=$($TMUX display -pt "$target" "$flag") ||
|
||||||
|
fail "display $flag failed"
|
||||||
|
[ "$value" = "$expected" ] ||
|
||||||
|
fail "expected $flag for $target to be '$expected' but got '$value'"
|
||||||
|
done
|
||||||
|
value=$($TMUX list-sessions -F "$flag") ||
|
||||||
|
fail "list-sessions $flag failed"
|
||||||
|
[ "$value" = "$expected" ] ||
|
||||||
|
fail "expected list-sessions $flag to be '$expected' but got '$value'"
|
||||||
|
}
|
||||||
|
|
||||||
flags_lack()
|
flags_lack()
|
||||||
{
|
{
|
||||||
target=$1
|
target=$1
|
||||||
@@ -150,10 +169,12 @@ $TMUX set-hook -g alert-silence \
|
|||||||
# alert-bell and sets the bell flag, shown as ! in window_flags.
|
# alert-bell and sets the bell flag, shown as ! in window_flags.
|
||||||
$TMUX neww -d -t mon: -n bellw cat || fail "new-window bellw failed"
|
$TMUX neww -d -t mon: -n bellw cat || fail "new-window bellw failed"
|
||||||
assert_fmt_unchanged mon:bellw '#{window_bell_flag}' 0
|
assert_fmt_unchanged mon:bellw '#{window_bell_flag}' 0
|
||||||
|
assert_session_flag bell 0 bellw
|
||||||
flags_lack mon:bellw '!'
|
flags_lack mon:bellw '!'
|
||||||
bell mon:bellw
|
bell mon:bellw
|
||||||
wait_for @log '|alert-bell:mon:bellw'
|
wait_for @log '|alert-bell:mon:bellw'
|
||||||
wait_for_fmt mon:bellw '#{window_bell_flag}' 1
|
wait_for_fmt mon:bellw '#{window_bell_flag}' 1
|
||||||
|
assert_session_flag bell 1 bellw
|
||||||
flags_have mon:bellw '!'
|
flags_have mon:bellw '!'
|
||||||
|
|
||||||
# Bells are not deduplicated: a second bell fires the hook again even
|
# Bells are not deduplicated: a second bell fires the hook again even
|
||||||
@@ -164,6 +185,7 @@ wait_for @log '|alert-bell:mon:bellw|alert-bell:mon:bellw'
|
|||||||
# Selecting the window clears the alert flags.
|
# Selecting the window clears the alert flags.
|
||||||
$TMUX selectw -t mon:bellw || fail "select-window bellw failed"
|
$TMUX selectw -t mon:bellw || fail "select-window bellw failed"
|
||||||
wait_for_fmt mon:bellw '#{window_bell_flag}' 0
|
wait_for_fmt mon:bellw '#{window_bell_flag}' 0
|
||||||
|
assert_session_flag bell 0 bellw
|
||||||
flags_lack mon:bellw '!'
|
flags_lack mon:bellw '!'
|
||||||
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
||||||
|
|
||||||
@@ -173,6 +195,7 @@ $TMUX set -g @log '' || fail "reset @log failed"
|
|||||||
bell mon:w0
|
bell mon:w0
|
||||||
wait_for @log '|alert-bell:mon:w0'
|
wait_for @log '|alert-bell:mon:w0'
|
||||||
wait_for_fmt mon:w0 '#{window_bell_flag}' 1
|
wait_for_fmt mon:w0 '#{window_bell_flag}' 1
|
||||||
|
assert_session_flag bell 1 bellw
|
||||||
$TMUX selectw -t mon:bellw || fail "select-window bellw failed"
|
$TMUX selectw -t mon:bellw || fail "select-window bellw failed"
|
||||||
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
||||||
wait_for_fmt mon:w0 '#{window_bell_flag}' 0
|
wait_for_fmt mon:w0 '#{window_bell_flag}' 0
|
||||||
@@ -199,6 +222,7 @@ $TMUX neww -d -t mon: -n actw cat || fail "new-window actw failed"
|
|||||||
$TMUX set -g @log '' || fail "reset @log failed"
|
$TMUX set -g @log '' || fail "reset @log failed"
|
||||||
activity mon:actw
|
activity mon:actw
|
||||||
assert_fmt_unchanged mon:actw '#{window_activity_flag}' 0
|
assert_fmt_unchanged mon:actw '#{window_activity_flag}' 0
|
||||||
|
assert_session_flag activity 0 actw
|
||||||
assert_unchanged @log ''
|
assert_unchanged @log ''
|
||||||
|
|
||||||
# With monitor-activity on, output fires alert-activity and sets the
|
# With monitor-activity on, output fires alert-activity and sets the
|
||||||
@@ -208,6 +232,7 @@ $TMUX set -wt mon:actw monitor-activity on ||
|
|||||||
activity mon:actw
|
activity mon:actw
|
||||||
wait_for @log '|alert-activity:mon:actw'
|
wait_for @log '|alert-activity:mon:actw'
|
||||||
wait_for_fmt mon:actw '#{window_activity_flag}' 1
|
wait_for_fmt mon:actw '#{window_activity_flag}' 1
|
||||||
|
assert_session_flag activity 1 actw
|
||||||
flags_have mon:actw '#'
|
flags_have mon:actw '#'
|
||||||
|
|
||||||
# While the flag is set further activity does not fire the hook again.
|
# While the flag is set further activity does not fire the hook again.
|
||||||
@@ -234,6 +259,7 @@ exec 3>"$OUT/fifo"
|
|||||||
wait_for_fmt mon: '#{session_attached}' 1
|
wait_for_fmt mon: '#{session_attached}' 1
|
||||||
$TMUX selectw -t mon:actw || fail "select-window actw failed"
|
$TMUX selectw -t mon:actw || fail "select-window actw failed"
|
||||||
wait_for_fmt mon:actw '#{window_activity_flag}' 0
|
wait_for_fmt mon:actw '#{window_activity_flag}' 0
|
||||||
|
assert_session_flag activity 0 actw
|
||||||
flags_lack mon:actw '#'
|
flags_lack mon:actw '#'
|
||||||
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
||||||
exec 3>&-
|
exec 3>&-
|
||||||
@@ -250,6 +276,7 @@ $TMUX set -wt mon:w0 monitor-activity on ||
|
|||||||
$TMUX set -g @log '' || fail "reset @log failed"
|
$TMUX set -g @log '' || fail "reset @log failed"
|
||||||
activity mon:w0
|
activity mon:w0
|
||||||
wait_for_fmt mon:w0 '#{window_activity_flag}' 1
|
wait_for_fmt mon:w0 '#{window_activity_flag}' 1
|
||||||
|
assert_session_flag activity 1 actw
|
||||||
assert_unchanged @log ''
|
assert_unchanged @log ''
|
||||||
$TMUX set -wut mon:w0 monitor-activity ||
|
$TMUX set -wut mon:w0 monitor-activity ||
|
||||||
fail "unset monitor-activity w0 failed"
|
fail "unset monitor-activity w0 failed"
|
||||||
@@ -273,16 +300,19 @@ $TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
|||||||
# running.
|
# running.
|
||||||
$TMUX neww -d -t mon: -n silw cat || fail "new-window silw failed"
|
$TMUX neww -d -t mon: -n silw cat || fail "new-window silw failed"
|
||||||
assert_fmt_unchanged mon:silw '#{window_silence_flag}' 0
|
assert_fmt_unchanged mon:silw '#{window_silence_flag}' 0
|
||||||
|
assert_session_flag silence 0 silw
|
||||||
$TMUX set -g @log '' || fail "reset @log failed"
|
$TMUX set -g @log '' || fail "reset @log failed"
|
||||||
$TMUX set -wt mon:silw monitor-silence 1 || fail "set monitor-silence failed"
|
$TMUX set -wt mon:silw monitor-silence 1 || fail "set monitor-silence failed"
|
||||||
wait_for @log '|alert-silence:mon:silw'
|
wait_for @log '|alert-silence:mon:silw'
|
||||||
wait_for_fmt mon:silw '#{window_silence_flag}' 1
|
wait_for_fmt mon:silw '#{window_silence_flag}' 1
|
||||||
|
assert_session_flag silence 1 silw
|
||||||
flags_have mon:silw '~'
|
flags_have mon:silw '~'
|
||||||
assert_unchanged @log '|alert-silence:mon:silw'
|
assert_unchanged @log '|alert-silence:mon:silw'
|
||||||
$TMUX set -wt mon:silw monitor-silence 0 ||
|
$TMUX set -wt mon:silw monitor-silence 0 ||
|
||||||
fail "reset monitor-silence failed"
|
fail "reset monitor-silence failed"
|
||||||
$TMUX selectw -t mon:silw || fail "select-window silw failed"
|
$TMUX selectw -t mon:silw || fail "select-window silw failed"
|
||||||
wait_for_fmt mon:silw '#{window_silence_flag}' 0
|
wait_for_fmt mon:silw '#{window_silence_flag}' 0
|
||||||
|
assert_session_flag silence 0 silw
|
||||||
flags_lack mon:silw '~'
|
flags_lack mon:silw '~'
|
||||||
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
$TMUX selectw -t mon:w0 || fail "select-window w0 failed"
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user