mirror of
https://github.com/tmux/tmux.git
synced 2026-07-22 08:51:17 +00:00
Fix control mode error and update regression tests.
This commit is contained in:
10
cmd-invoke.c
10
cmd-invoke.c
@@ -337,11 +337,12 @@ static void
|
||||
cmd_invoke_error(struct cmdq_item *item, struct cmd_invoke_state *is,
|
||||
struct cmd_parse_node *node, const char *cause)
|
||||
{
|
||||
struct client *c = cmdq_get_client(item);
|
||||
struct cmd_parse_tree *tree = cmd_invoke_tree(is);
|
||||
const char *file = cmd_parse_file(tree);
|
||||
u_int line = cmd_parse_node_line(node);
|
||||
|
||||
if (cmdq_get_client(item) != NULL) {
|
||||
if (c != NULL && (~c->flags & CLIENT_CONTROL || file == NULL)) {
|
||||
cmdq_error(item, "%s", cause);
|
||||
return;
|
||||
}
|
||||
@@ -499,7 +500,9 @@ cmd_invoke_fire(struct cmdq_item *item, struct cmd_invoke_state *is)
|
||||
struct cmd_parse_tree *tree, *alias;
|
||||
struct cmdq_item *new_item, *next;
|
||||
struct cmdq_state *state;
|
||||
struct client *c;
|
||||
struct cmd *cmd;
|
||||
const char *file;
|
||||
char *cause;
|
||||
int r;
|
||||
|
||||
@@ -547,7 +550,10 @@ cmd_invoke_fire(struct cmdq_item *item, struct cmd_invoke_state *is)
|
||||
break;
|
||||
}
|
||||
if (r == -1) {
|
||||
if (cmdq_get_client(item) != NULL)
|
||||
c = cmdq_get_client(item);
|
||||
file = cmd_parse_file(tree);
|
||||
if (c != NULL &&
|
||||
(~c->flags & CLIENT_CONTROL || file == NULL))
|
||||
cmdq_error(item, "%s", cause);
|
||||
else
|
||||
cfg_add_cause("%s", cause);
|
||||
|
||||
@@ -15,7 +15,9 @@ PATH=/bin:/usr/bin
|
||||
TERM=screen
|
||||
|
||||
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||
TMUX="$TEST_TMUX -Ltest -f/dev/null"
|
||||
SOCKET=$(mktemp -u testXXXXXX)
|
||||
TMUX="$TEST_TMUX -L$SOCKET -f/dev/null"
|
||||
TMUX2=
|
||||
$TMUX kill-server 2>/dev/null
|
||||
|
||||
TMP=$(mktemp)
|
||||
@@ -23,7 +25,7 @@ CONF=$(mktemp)
|
||||
EXP=$(mktemp)
|
||||
RT1=$(mktemp)
|
||||
RT2=$(mktemp)
|
||||
trap "rm -f $TMP $CONF $EXP $RT1 $RT2" 0 1 15
|
||||
trap "[ -n \"\$TMUX\" ] && \$TMUX kill-server 2>/dev/null; [ -n \"\$TMUX2\" ] && \$TMUX2 kill-server 2>/dev/null; rm -f $TMP $CONF $EXP $RT1 $RT2" 0 1 15
|
||||
|
||||
cat <<'EOF' >$CONF
|
||||
bind -T parsetest a display-message hello
|
||||
@@ -82,6 +84,7 @@ $TMUX -f/dev/null start \; new-session -d 2>/dev/null || exit 1
|
||||
$TMUX source-file $CONF || exit 1
|
||||
$TMUX set -g default-client-command 'display-message "hi there"' || exit 1
|
||||
|
||||
set +x
|
||||
{
|
||||
$TMUX list-keys -T parsetest
|
||||
echo "--- options ---"
|
||||
@@ -89,6 +92,7 @@ $TMUX set -g default-client-command 'display-message "hi there"' || exit 1
|
||||
echo "--- multiline ---"
|
||||
$TMUX list-keys -p -T parsetest
|
||||
} >$TMP 2>&1 || exit 1
|
||||
set -x
|
||||
|
||||
cmp -s $TMP $EXP || {
|
||||
echo "cmd-parse-print: output differs from expected" >&2
|
||||
@@ -100,10 +104,12 @@ cmp -s $TMP $EXP || {
|
||||
# identical key list.
|
||||
$TMUX list-keys -T parsetest >$RT1 || exit 1
|
||||
$TMUX kill-server 2>/dev/null
|
||||
$TMUX -f/dev/null start \; new-session -d 2>/dev/null || exit 1
|
||||
$TMUX source-file $RT1 || exit 1
|
||||
$TMUX list-keys -T parsetest >$RT2 || exit 1
|
||||
$TMUX kill-server 2>/dev/null
|
||||
SOCKET2=$(mktemp -u testXXXXXX)
|
||||
TMUX2="$TEST_TMUX -L$SOCKET2 -f/dev/null"
|
||||
$TMUX2 -f/dev/null start \; new-session -d 2>/dev/null || exit 1
|
||||
$TMUX2 source-file $RT1 || exit 1
|
||||
$TMUX2 list-keys -T parsetest >$RT2 || exit 1
|
||||
$TMUX2 kill-server 2>/dev/null
|
||||
|
||||
cmp -s $RT1 $RT2 || {
|
||||
echo "cmd-parse-print: default form does not round-trip" >&2
|
||||
|
||||
@@ -19,7 +19,8 @@ PATH=/bin:/usr/bin
|
||||
TERM=screen
|
||||
|
||||
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||
TMUX="$TEST_TMUX -Ltest"
|
||||
SOCKET=$(mktemp -u testXXXXXX)
|
||||
TMUX="$TEST_TMUX -L$SOCKET"
|
||||
$TMUX kill-server 2>/dev/null
|
||||
|
||||
DIR=$(mktemp -d)
|
||||
|
||||
@@ -7,24 +7,35 @@ PATH=/bin:/usr/bin
|
||||
TERM=screen
|
||||
|
||||
[ -z "$TEST_TMUX" ] && TEST_TMUX=$(readlink -f ../tmux)
|
||||
TMUX="$TEST_TMUX -LtestA$$ -f/dev/null"
|
||||
SOCKET=$(mktemp -u testAXXXXXX)
|
||||
TMUX="$TEST_TMUX -L$SOCKET -f/dev/null"
|
||||
$TMUX kill-server 2>/dev/null
|
||||
|
||||
TMP=$(mktemp)
|
||||
OUT=$(mktemp)
|
||||
trap "rm -f $TMP $OUT" 0 1 15
|
||||
cleanup() {
|
||||
$TMUX kill-server 2>/dev/null
|
||||
rm -f "$TMP" "$OUT"
|
||||
}
|
||||
trap cleanup 0 1 15
|
||||
|
||||
cat <<EOF >$TMP
|
||||
cat <<EOF >"$TMP"
|
||||
if 'true' 'wibble wobble'
|
||||
EOF
|
||||
|
||||
$TMUX -f$TMP -C new <<EOF >$OUT
|
||||
$TMUX -f"$TMP" -C new <<EOF >"$OUT"
|
||||
EOF
|
||||
grep -q "^%config-error $TMP:1: $TMP:1: unknown command: wibble$" $OUT
|
||||
if ! grep -q "^%config-error $TMP:1: unknown command: wibble$" "$OUT"; then
|
||||
cat "$OUT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
cat <<EOF >$TMP
|
||||
cat <<EOF >"$TMP"
|
||||
wibble wobble
|
||||
EOF
|
||||
|
||||
echo "source $TMP" | $TMUX -C new >$OUT
|
||||
grep -q "^%config-error $TMP:1: unknown command: wibble$" $OUT
|
||||
echo "source $TMP" | $TMUX -C new >"$OUT"
|
||||
if ! grep -q "^%config-error $TMP:1: unknown command: wibble$" "$OUT"; then
|
||||
cat "$OUT" >&2
|
||||
exit 1
|
||||
fi
|
||||
|
||||
Reference in New Issue
Block a user