mirror of
https://github.com/tmux/tmux.git
synced 2026-07-03 10:12:31 +00:00
177 lines
2.8 KiB
PHP
177 lines
2.8 KiB
PHP
PATH=/bin:/usr/bin
|
|
TERM=screen
|
|
|
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
|
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
|
|
|
TMP=$(mktemp)
|
|
EXP=$(mktemp)
|
|
trap 'rm -f "$TMP" "$EXP"; $TMUX kill-server 2>/dev/null' 0 1 15
|
|
|
|
exit_status=0
|
|
|
|
fail()
|
|
{
|
|
echo "FAIL: $1"
|
|
diff -u "$EXP" "$TMP"
|
|
exit_status=1
|
|
}
|
|
|
|
start_pane()
|
|
{
|
|
start_pane_hlimit "$1" "$2" "$3" "$4" 0
|
|
}
|
|
|
|
start_pane_history()
|
|
{
|
|
start_pane_hlimit "$1" "$2" "$3" "$4" 2000
|
|
}
|
|
|
|
start_pane_hlimit()
|
|
{
|
|
name=$1
|
|
sx=$2
|
|
sy=$3
|
|
seq=$4
|
|
hlimit=$5
|
|
|
|
$TMUX kill-server 2>/dev/null
|
|
sleep 0.1
|
|
$TMUX new-session -d -x 1 -y 1 -s test-setup "sleep 2" || exit 1
|
|
$TMUX set-option -g history-limit "$hlimit" || exit 1
|
|
$TMUX new-session -d -x "$sx" -y "$sy" -s "$name" \
|
|
"printf '$seq'; sleep 2" || exit 1
|
|
$TMUX kill-session -t test-setup
|
|
sleep 0.3
|
|
}
|
|
|
|
start_cmd()
|
|
{
|
|
name=$1
|
|
sx=$2
|
|
sy=$3
|
|
cmd=$4
|
|
|
|
$TMUX kill-server 2>/dev/null
|
|
sleep 0.1
|
|
$TMUX new-session -d -x "$sx" -y "$sy" -s "$name" "$cmd" || exit 1
|
|
sleep 0.3
|
|
}
|
|
|
|
normalize_capture()
|
|
{
|
|
sed 's/[ ]*$//' |
|
|
awk '{ line[NR] = $0; if ($0 != "") last = NR }
|
|
END { for (i = 1; i <= last; i++) print line[i] }'
|
|
}
|
|
|
|
capture_grid()
|
|
{
|
|
$TMUX capture-pane -pN -t "$1:" -S 0 -E - | normalize_capture
|
|
}
|
|
|
|
check_capture()
|
|
{
|
|
name=$1
|
|
expected=$2
|
|
|
|
capture_grid "$name" >"$TMP"
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
cmp "$TMP" "$EXP" || fail "$name"
|
|
}
|
|
|
|
check_cursor()
|
|
{
|
|
name=$1
|
|
expected=$2
|
|
|
|
actual=$($TMUX display-message -p -t "$name:" '#{cursor_x},#{cursor_y}')
|
|
if [ "$actual" != "$expected" ]; then
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
printf "%s\n" "$actual" >"$TMP"
|
|
fail "$name cursor"
|
|
fi
|
|
}
|
|
|
|
check_flags()
|
|
{
|
|
name=$1
|
|
expected=$2
|
|
|
|
$TMUX capture-pane -pNF -t "$name:" -S 0 -E - |
|
|
normalize_capture |
|
|
awk '$0 != "-"' >"$TMP"
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
cmp "$TMP" "$EXP" || fail "$name flags"
|
|
}
|
|
|
|
check_joined()
|
|
{
|
|
name=$1
|
|
expected=$2
|
|
|
|
$TMUX capture-pane -pNJ -t "$name:" -S 0 -E - |
|
|
normalize_capture >"$TMP"
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
cmp "$TMP" "$EXP" || fail "$name joined"
|
|
}
|
|
|
|
capture_raw()
|
|
{
|
|
$TMUX capture-pane -pR -t "$1:"
|
|
}
|
|
|
|
capture_raw_used()
|
|
{
|
|
capture_raw "$1" |
|
|
awk '/^(G| L)/ || /^ C/ && $3 !~ /^data=\(1,1, \)$/'
|
|
}
|
|
|
|
check_raw()
|
|
{
|
|
name=$1
|
|
expected=$2
|
|
|
|
capture_raw "$name" >"$TMP"
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
cmp "$TMP" "$EXP" || fail "$name raw"
|
|
}
|
|
|
|
check_raw_used()
|
|
{
|
|
name=$1
|
|
expected=$2
|
|
|
|
capture_raw_used "$name" >"$TMP"
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
cmp "$TMP" "$EXP" || fail "$name raw used"
|
|
}
|
|
|
|
check_raw_has()
|
|
{
|
|
name=$1
|
|
shift
|
|
|
|
capture_raw "$name" >"$TMP"
|
|
for expected in "$@"; do
|
|
if ! grep -Fqx "$expected" "$TMP"; then
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
fail "$name raw missing"
|
|
fi
|
|
done
|
|
}
|
|
|
|
check_raw_matches()
|
|
{
|
|
name=$1
|
|
shift
|
|
|
|
capture_raw "$name" >"$TMP"
|
|
for expected in "$@"; do
|
|
if ! grep -Eq "$expected" "$TMP"; then
|
|
printf "%s\n" "$expected" >"$EXP"
|
|
fail "$name raw missing"
|
|
fi
|
|
done
|
|
}
|