Add some more DECRQM responses, from Ayman Bagabas in GitHub issue 5118.

This commit is contained in:
Nicholas Marriott
2026-06-01 14:30:02 +01:00
parent 7c71064b64
commit f6398ba51c

View File

@@ -15,7 +15,10 @@ sleep 1
TMP=$(mktemp) TMP=$(mktemp)
TMP2=$(mktemp) TMP2=$(mktemp)
trap "rm -f $TMP $TMP2; $TMUX kill-server 2>/dev/null" 0 1 15 TMP3=$(mktemp)
TMP4=$(mktemp)
TMP5=$(mktemp)
trap "rm -f $TMP $TMP2 $TMP3 $TMP4 $TMP5; $TMUX kill-server 2>/dev/null" 0 1 15
$TMUX -f/dev/null new -d -x80 -y24 || exit 1 $TMUX -f/dev/null new -d -x80 -y24 || exit 1
sleep 1 sleep 1
@@ -25,18 +28,19 @@ $TMUX set -g remain-on-exit on
exit_status=0 exit_status=0
# query_decrpm <outfile> [setup_seq] # query_decrpm <outfile> <mode> [setup_seq]
# Spawn a pane that optionally sends setup_seq, then sends DECRQM for # Spawn a pane that optionally sends setup_seq, then sends DECRQM for
# mode 2026 and captures the response into outfile in cat -v form. # mode 2026 and captures the response into outfile in cat -v form.
query_decrpm () { query_decrpm() {
_outfile=$1 _outfile=$1
_setup=$2 _mode=$2
_setup=$3
$TMUX respawnw -k -t:0 -- sh -c " $TMUX respawnw -k -t:0 -- sh -c "
exec 2>/dev/null exec 2>/dev/null
stty raw -echo stty raw -echo
${_setup:+printf '$_setup'; sleep 0.2} ${_setup:+printf '$_setup'; sleep 0.2}
printf '\033[?2026\$p' printf '\033[%s\$p' "$_mode"
dd bs=1 count=11 2>/dev/null | cat -v > $_outfile dd bs=1 count=11 2>/dev/null | cat -v > $_outfile
sleep 0.2 sleep 0.2
" || exit 1 " || exit 1
@@ -46,7 +50,7 @@ query_decrpm () {
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Test 1: mode 2026 should be reset by default (Ps=2) # Test 1: mode 2026 should be reset by default (Ps=2)
# ------------------------------------------------------------------ # ------------------------------------------------------------------
query_decrpm "$TMP" query_decrpm "$TMP" "?2026"
actual=$(cat "$TMP") actual=$(cat "$TMP")
expected='^[[?2026;2$y' expected='^[[?2026;2$y'
@@ -63,7 +67,7 @@ fi
# ------------------------------------------------------------------ # ------------------------------------------------------------------
# Test 2: set mode 2026 (SM ?2026), then query (expect Ps=1) # Test 2: set mode 2026 (SM ?2026), then query (expect Ps=1)
# ------------------------------------------------------------------ # ------------------------------------------------------------------
query_decrpm "$TMP2" '\033[?2026h' query_decrpm "$TMP2" "?2026" '\033[?2026h'
actual=$(cat "$TMP2") actual=$(cat "$TMP2")
expected='^[[?2026;1$y' expected='^[[?2026;1$y'
@@ -77,6 +81,61 @@ else
exit_status=1 exit_status=1
fi fi
# ------------------------------------------------------------------
# Test 3: mode 25 should return current value
# ------------------------------------------------------------------
query_decrpm "$TMP3" "?25" '\033[?25l'
actual=$(cat "$TMP3")
expected='^[[?25;2$y'
if [ "$actual" = "$expected" ]; then
if [ -n "$VERBOSE" ]; then
echo "[PASS] DECTCEM 25 (reset) -> $actual"
fi
else
echo "[FAIL] DECTCEM 25 (reset): expected '$expected', got '$actual'"
exit_status=1
fi
# ------------------------------------------------------------------
# Test 4: mode ?9999 should return not recognized
# ------------------------------------------------------------------
query_decrpm "$TMP4" "?9999" '\033[?9999h'
actual=$(cat "$TMP4")
expected='^[[?9999;0$y'
if [ "$actual" = "$expected" ]; then
if [ -n "$VERBOSE" ]; then
echo "[PASS] DECSM 9999 (not recognized) -> $actual"
fi
else
echo "[FAIL] DECSM 9999 (not recognized): expected '$expected', got '$actual'"
exit_status=1
fi
$TMUX kill-server 2>/dev/null
exit $exit_status
# ------------------------------------------------------------------
# Test 5: mode 4 is reset by default
# ------------------------------------------------------------------
query_decrpm "$TMP5" "4" '\033[4h'
actual=$(cat "$TMP5")
expected='^[[4;1$y'
if [ "$actual" = "$expected" ]; then
if [ -n "$VERBOSE" ]; then
echo "[PASS] SM 4 (is set) -> $actual"
fi
else
echo "[FAIL] SM 4 (is set): expected '$expected', got '$actual'"
exit_status=1
fi
$TMUX kill-server 2>/dev/null $TMUX kill-server 2>/dev/null
exit $exit_status exit $exit_status