mirror of
https://github.com/tmux/tmux.git
synced 2026-10-14 23:34:22 +00:00
Add some tests.
This commit is contained in:
75
regress/cmd-invoke-expand.sh
Executable file
75
regress/cmd-invoke-expand.sh
Executable file
@@ -0,0 +1,75 @@
|
||||
#!/bin/sh
|
||||
|
||||
# Invoke-time expansion and conditionals.
|
||||
#
|
||||
# The parser builds syntax only; environment/tilde expansion, assignments and
|
||||
# %if/%elif/%else are all evaluated when the tree is invoked. This drives every
|
||||
# one of those through a single config and checks the resulting option values:
|
||||
# - FOO=bar assignments set the environment, read back with ${FOO} and $FOO
|
||||
# - %hidden assignments behave the same
|
||||
# - ~ expands to the home directory
|
||||
# - %if / %elif / %else selects the correct branch
|
||||
|
||||
PATH=/bin:/usr/bin
|
||||
TERM=screen
|
||||
|
||||
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||
$TMUX kill-server 2>/dev/null
|
||||
|
||||
CONF=$(mktemp)
|
||||
trap "rm -f $CONF" 0 1 15
|
||||
|
||||
cat <<'EOF' >$CONF
|
||||
FOO=hello
|
||||
set -g @assign "${FOO}"
|
||||
set -g @dollar "$FOO"
|
||||
%hidden BAR=secret
|
||||
set -g @hidden "${BAR}"
|
||||
set -g @undef "x${NOSUCHVAR_ZZZ}y"
|
||||
set -g @tilde ~
|
||||
set -g @baduser ~nosuchuser_zzz9
|
||||
%if 1
|
||||
set -g @iftrue then
|
||||
%else
|
||||
set -g @iftrue else
|
||||
%endif
|
||||
%if 0
|
||||
set -g @iffalse then
|
||||
%else
|
||||
set -g @iffalse else
|
||||
%endif
|
||||
%if 0
|
||||
set -g @elif a
|
||||
%elif 1
|
||||
set -g @elif b
|
||||
%else
|
||||
set -g @elif c
|
||||
%endif
|
||||
EOF
|
||||
|
||||
$TMUX -f/dev/null start \; new-session -d 2>/dev/null || exit 1
|
||||
$TMUX source-file $CONF || exit 1
|
||||
|
||||
check() {
|
||||
got=$($TMUX show -gv "$1")
|
||||
[ "$got" = "$2" ] || { echo "$1: got [$got] expected [$2]" >&2; exit 1; }
|
||||
}
|
||||
check @assign hello
|
||||
check @dollar hello
|
||||
check @hidden secret
|
||||
check @undef xy # undefined environment variable expands to nothing
|
||||
check @baduser "" # unknown user in ~user expands to nothing
|
||||
check @iftrue then
|
||||
check @iffalse else
|
||||
check @elif b
|
||||
|
||||
# ~ expands to an absolute home directory (value is machine dependent).
|
||||
tilde=$($TMUX show -gv @tilde)
|
||||
case "$tilde" in
|
||||
/*) ;;
|
||||
*) echo "@tilde did not expand to an absolute path: [$tilde]" >&2; exit 1;;
|
||||
esac
|
||||
|
||||
$TMUX kill-server 2>/dev/null
|
||||
exit 0
|
||||
Reference in New Issue
Block a user