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)
|
||||
{
|
||||
int save_called_emsg = called_emsg;
|
||||
|
||||
called_emsg = FALSE;
|
||||
ch_logs(channel, "Executing ex command '%s'", (char *)arg);
|
||||
++emsg_silent;
|
||||
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)
|
||||
{
|
||||
|
@@ -73,6 +73,11 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
|
||||
print("sending: {0}".format(cmd))
|
||||
self.request.sendall(cmd.encode('utf-8'))
|
||||
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':
|
||||
# Send a normal command.
|
||||
cmd = '["normal","G$s more\u001b"]'
|
||||
|
@@ -151,6 +151,11 @@ func s:communicate(port)
|
||||
call assert_equal('added1', getline(line('$') - 1))
|
||||
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 s:waitFor('"added more" == getline("$")')
|
||||
call assert_equal('added more', getline('$'))
|
||||
|
@@ -748,6 +748,8 @@ static char *(features[]) =
|
||||
|
||||
static int included_patches[] =
|
||||
{ /* Add new patch number below this line */
|
||||
/**/
|
||||
1662,
|
||||
/**/
|
||||
1661,
|
||||
/**/
|
||||
|
Reference in New Issue
Block a user