From 73042686d8df4e9b6fc984120cc1b14021d3922e Mon Sep 17 00:00:00 2001 From: Nicholas Marriott Date: Sun, 20 Sep 2026 09:19:35 +0100 Subject: [PATCH] Test for 5599. --- regress/alerts.sh | 34 ++++++++++++++++++++++++++++++++-- 1 file changed, 32 insertions(+), 2 deletions(-) diff --git a/regress/alerts.sh b/regress/alerts.sh index 60d9a05f7..3f97b5328 100644 --- a/regress/alerts.sh +++ b/regress/alerts.sh @@ -2,8 +2,9 @@ # monitor-activity, monitor-bell and monitor-silence: both the # alert-activity, alert-bell and alert-silence hooks and the winlink alert -# flags (window_activity_flag, window_bell_flag, window_silence_flag and -# the #, !, ~ characters in window_flags). The sessions are detached so +# flags (window_activity_flag, window_bell_flag, window_silence_flag, +# 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 # 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 @@ -111,6 +112,24 @@ flags_have() 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() { target=$1 @@ -150,10 +169,12 @@ $TMUX set-hook -g alert-silence \ # 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" assert_fmt_unchanged mon:bellw '#{window_bell_flag}' 0 +assert_session_flag bell 0 bellw flags_lack mon:bellw '!' bell mon:bellw wait_for @log '|alert-bell:mon:bellw' wait_for_fmt mon:bellw '#{window_bell_flag}' 1 +assert_session_flag bell 1 bellw flags_have mon:bellw '!' # 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. $TMUX selectw -t mon:bellw || fail "select-window bellw failed" wait_for_fmt mon:bellw '#{window_bell_flag}' 0 +assert_session_flag bell 0 bellw flags_lack mon:bellw '!' $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 wait_for @log '|alert-bell:mon:w0' 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:w0 || fail "select-window w0 failed" 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" activity mon:actw assert_fmt_unchanged mon:actw '#{window_activity_flag}' 0 +assert_session_flag activity 0 actw assert_unchanged @log '' # 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 wait_for @log '|alert-activity:mon:actw' wait_for_fmt mon:actw '#{window_activity_flag}' 1 +assert_session_flag activity 1 actw flags_have mon:actw '#' # 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 $TMUX selectw -t mon:actw || fail "select-window actw failed" wait_for_fmt mon:actw '#{window_activity_flag}' 0 +assert_session_flag activity 0 actw flags_lack mon:actw '#' $TMUX selectw -t mon:w0 || fail "select-window w0 failed" exec 3>&- @@ -250,6 +276,7 @@ $TMUX set -wt mon:w0 monitor-activity on || $TMUX set -g @log '' || fail "reset @log failed" activity mon:w0 wait_for_fmt mon:w0 '#{window_activity_flag}' 1 +assert_session_flag activity 1 actw assert_unchanged @log '' $TMUX set -wut mon:w0 monitor-activity || fail "unset monitor-activity w0 failed" @@ -273,16 +300,19 @@ $TMUX selectw -t mon:w0 || fail "select-window w0 failed" # running. $TMUX neww -d -t mon: -n silw cat || fail "new-window silw failed" 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 -wt mon:silw monitor-silence 1 || fail "set monitor-silence failed" wait_for @log '|alert-silence:mon:silw' wait_for_fmt mon:silw '#{window_silence_flag}' 1 +assert_session_flag silence 1 silw flags_have mon:silw '~' assert_unchanged @log '|alert-silence:mon:silw' $TMUX set -wt mon:silw monitor-silence 0 || fail "reset monitor-silence failed" $TMUX selectw -t mon:silw || fail "select-window silw failed" wait_for_fmt mon:silw '#{window_silence_flag}' 0 +assert_session_flag silence 0 silw flags_lack mon:silw '~' $TMUX selectw -t mon:w0 || fail "select-window w0 failed"