mirror of
https://github.com/vim/vim.git
synced 2025-10-03 05:14:07 -04:00
patch 7.4.1662
Problem: No test for an invalid Ex command on a channel. Solution: Test handling an invalid command gracefully. Avoid getting an error message, do write it to the channel log.
This commit is contained in:
@@ -1661,8 +1661,17 @@ channel_exe_cmd(channel_T *channel, int part, typval_T *argv)
|
|||||||
|
|
||||||
if (STRCMP(cmd, "ex") == 0)
|
if (STRCMP(cmd, "ex") == 0)
|
||||||
{
|
{
|
||||||
|
int save_called_emsg = called_emsg;
|
||||||
|
|
||||||
|
called_emsg = FALSE;
|
||||||
ch_logs(channel, "Executing ex command '%s'", (char *)arg);
|
ch_logs(channel, "Executing ex command '%s'", (char *)arg);
|
||||||
|
++emsg_silent;
|
||||||
do_cmdline_cmd(arg);
|
do_cmdline_cmd(arg);
|
||||||
|
--emsg_silent;
|
||||||
|
if (called_emsg)
|
||||||
|
ch_logs(channel, "Ex command error: '%s'",
|
||||||
|
(char *)get_vim_var_str(VV_ERRMSG));
|
||||||
|
called_emsg = save_called_emsg;
|
||||||
}
|
}
|
||||||
else if (STRCMP(cmd, "normal") == 0)
|
else if (STRCMP(cmd, "normal") == 0)
|
||||||
{
|
{
|
||||||
|
@@ -73,6 +73,11 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
|
|||||||
print("sending: {0}".format(cmd))
|
print("sending: {0}".format(cmd))
|
||||||
self.request.sendall(cmd.encode('utf-8'))
|
self.request.sendall(cmd.encode('utf-8'))
|
||||||
response = "ok"
|
response = "ok"
|
||||||
|
elif decoded[1] == 'bad command':
|
||||||
|
cmd = '["ex","foo bar"]'
|
||||||
|
print("sending: {0}".format(cmd))
|
||||||
|
self.request.sendall(cmd.encode('utf-8'))
|
||||||
|
response = "ok"
|
||||||
elif decoded[1] == 'do normal':
|
elif decoded[1] == 'do normal':
|
||||||
# Send a normal command.
|
# Send a normal command.
|
||||||
cmd = '["normal","G$s more\u001b"]'
|
cmd = '["normal","G$s more\u001b"]'
|
||||||
|
@@ -151,6 +151,11 @@ func s:communicate(port)
|
|||||||
call assert_equal('added1', getline(line('$') - 1))
|
call assert_equal('added1', getline(line('$') - 1))
|
||||||
call assert_equal('added2', getline('$'))
|
call assert_equal('added2', getline('$'))
|
||||||
|
|
||||||
|
" Request command "foo bar", which fails silently.
|
||||||
|
call assert_equal('ok', ch_evalexpr(handle, 'bad command'))
|
||||||
|
call s:waitFor('v:errmsg =~ "E492"')
|
||||||
|
call assert_true(v:errmsg =~ 'E492:.*foo bar')
|
||||||
|
|
||||||
call assert_equal('ok', ch_evalexpr(handle, 'do normal', {'timeout': 100}))
|
call assert_equal('ok', ch_evalexpr(handle, 'do normal', {'timeout': 100}))
|
||||||
call s:waitFor('"added more" == getline("$")')
|
call s:waitFor('"added more" == getline("$")')
|
||||||
call assert_equal('added more', getline('$'))
|
call assert_equal('added more', getline('$'))
|
||||||
|
@@ -748,6 +748,8 @@ static char *(features[]) =
|
|||||||
|
|
||||||
static int included_patches[] =
|
static int included_patches[] =
|
||||||
{ /* Add new patch number below this line */
|
{ /* Add new patch number below this line */
|
||||||
|
/**/
|
||||||
|
1662,
|
||||||
/**/
|
/**/
|
||||||
1661,
|
1661,
|
||||||
/**/
|
/**/
|
||||||
|
Reference in New Issue
Block a user