diff --git a/regress/alerts.sh b/regress/alerts.sh index cfb84c711..2b9e4f495 100644 --- a/regress/alerts.sh +++ b/regress/alerts.sh @@ -254,6 +254,19 @@ assert_unchanged @log '' $TMUX set -wut mon:w0 monitor-activity || fail "unset monitor-activity w0 failed" +# Creating a non-current window counts as activity when monitor-activity is +# enabled in the window defaults. +$TMUX set -wg monitor-activity on || fail "set global monitor-activity failed" +$TMUX set -g @log '' || fail "reset @log failed" +$TMUX neww -d -t mon: -n newact cat || fail "new-window newact failed" +wait_for @log '|alert-activity:mon:newact' +wait_for_fmt mon:newact '#{window_activity_flag}' 1 +flags_have mon:newact '#' +$TMUX set -wug monitor-activity || + fail "unset global monitor-activity failed" +$TMUX selectw -t mon:newact || fail "select-window newact failed" +$TMUX selectw -t mon:w0 || fail "select-window w0 failed" + # monitor-silence: a quiet window fires alert-silence after the interval # and sets the silence flag, shown as ~ in window_flags. The hook fires # only once while the flag remains set even though the timer keeps @@ -273,6 +286,22 @@ wait_for_fmt mon:silw '#{window_silence_flag}' 0 flags_lack mon:silw '~' $TMUX selectw -t mon:w0 || fail "select-window w0 failed" +# Activity resets the silence timer: output before the original deadline +# prevents an alert until a full quiet interval has passed afterwards. +$TMUX neww -d -t mon: -n silreset cat || fail "new-window silreset failed" +$TMUX set -g @log '' || fail "reset @log failed" +$TMUX set -wt mon:silreset monitor-silence 2 || + fail "set monitor-silence silreset failed" +sleep 1 +activity mon:silreset +assert_unchanged @log '' +wait_for @log '|alert-silence:mon:silreset' +wait_for_fmt mon:silreset '#{window_silence_flag}' 1 +$TMUX set -wt mon:silreset monitor-silence 0 || + fail "reset monitor-silence silreset failed" +$TMUX selectw -t mon:silreset || fail "select-window silreset failed" +$TMUX selectw -t mon:w0 || fail "select-window w0 failed" + # A window linked into two sessions: the hook fires once per winlink and # the flag is set in both sessions. Selecting the window in one session # clears the flags on every winlink.