mirror of
https://github.com/tmux/tmux.git
synced 2026-10-06 17:49:52 +00:00
58 lines
1.6 KiB
Bash
58 lines
1.6 KiB
Bash
#!/bin/sh
|
|
|
|
# The socket directory must be an existing absolute path without "..". An
|
|
# empty $TMUX_TMPDIR is skipped.
|
|
|
|
PATH=/bin:/usr/bin
|
|
TERM=screen
|
|
|
|
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
|
unset TMUX TMUX_TMPDIR
|
|
|
|
TMP=$(mktemp -d)
|
|
TMP=$(cd "$TMP" && pwd -P)
|
|
L="testSP$$"
|
|
DEFAULT="$(cd /tmp && pwd -P)/tmux-$(id -u)/$L"
|
|
|
|
cleanup()
|
|
{
|
|
"$TEST_TMUX" -S "$DEFAULT" kill-server 2>/dev/null
|
|
"$TEST_TMUX" -S "$TMP/tmux-$(id -u)/$L" kill-server 2>/dev/null
|
|
rm -rf "$TMP" "$DEFAULT" "$DEFAULT.lock"
|
|
}
|
|
trap cleanup 0 1 15
|
|
|
|
# check_path expected env...
|
|
check_path()
|
|
{
|
|
expected=$1; shift
|
|
env "$@" "$TEST_TMUX" -L"$L" -f/dev/null new -d 'sleep 60' || exit 1
|
|
actual=$(env "$@" "$TEST_TMUX" -L"$L" display -p '#{socket_path}')
|
|
env "$@" "$TEST_TMUX" -L"$L" kill-server
|
|
[ "$actual" = "$expected" ] || exit 1
|
|
}
|
|
|
|
# check_error expected env...
|
|
check_error()
|
|
{
|
|
expected=$1; shift
|
|
if actual=$(env "$@" "$TEST_TMUX" -L"$L" -f/dev/null new -d \
|
|
'sleep 60' 2>&1); then
|
|
env "$@" "$TEST_TMUX" -L"$L" kill-server
|
|
exit 1
|
|
fi
|
|
[ "$actual" = "$expected" ] || exit 1
|
|
}
|
|
|
|
check_path "$DEFAULT" TMUX_TMPDIR=
|
|
check_path "$TMP/tmux-$(id -u)/$L" TMUX_TMPDIR="$TMP"
|
|
|
|
check_error "socket directory tmp is not an absolute path" TMUX_TMPDIR=tmp
|
|
check_error "couldn't resolve socket directory $TMP/missing (No such file or directory)" \
|
|
TMUX_TMPDIR="$TMP/missing"
|
|
check_error "socket directory $TMP/.. contains .." TMUX_TMPDIR="$TMP/.."
|
|
check_error "socket directory /../tmp contains .." TMUX_TMPDIR=/../tmp
|
|
check_error "socket directory $TMP/../.. contains .." TMUX_TMPDIR="$TMP/../.."
|
|
|
|
exit 0
|