summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-03-26 22:19:27 +0100
committerBram Moolenaar <Bram@vim.org>2016-03-26 22:19:27 +0100
commitfa8b2e173dd5f6c4a5cfd326abdcf68b8eebf90d (patch)
tree7ac6a0655d1acfcb4061b6c7f81d07e6b9b68cf1
parent819821c5a95fc60797ecbb5e5ca1302e397e3d9a (diff)
downloadvim-git-fa8b2e173dd5f6c4a5cfd326abdcf68b8eebf90d.tar.gz
patch 7.4.1661v7.4.1661
Problem: No test for special characters in channel eval command. Solution: Testing sending and receiving text with special characters.
-rw-r--r--src/testdir/test_channel.py16
-rw-r--r--src/testdir/test_channel.vim17
-rw-r--r--src/version.c2
3 files changed, 30 insertions, 5 deletions
diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py
index 61e76ec4f..227780a5e 100644
--- a/src/testdir/test_channel.py
+++ b/src/testdir/test_channel.py
@@ -85,16 +85,28 @@ class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
print("sending: {0}".format(cmd))
self.request.sendall(cmd.encode('utf-8'))
response = "ok"
+ elif decoded[1] == 'eval-special':
+ # Send an eval request. We ignore the response.
+ cmd = '["expr","\\"foo\x7f\x10\x01bar\\"", -2]'
+ print("sending: {0}".format(cmd))
+ self.request.sendall(cmd.encode('utf-8'))
+ response = "ok"
+ elif decoded[1] == 'eval-getline':
+ # Send an eval request. We ignore the response.
+ cmd = '["expr","getline(3)", -3]'
+ print("sending: {0}".format(cmd))
+ self.request.sendall(cmd.encode('utf-8'))
+ response = "ok"
elif decoded[1] == 'eval-fails':
# Send an eval request that will fail.
- cmd = '["expr","xxx", -2]'
+ cmd = '["expr","xxx", -4]'
print("sending: {0}".format(cmd))
self.request.sendall(cmd.encode('utf-8'))
response = "ok"
elif decoded[1] == 'eval-error':
# Send an eval request that works but the result can't
# be encoded.
- cmd = '["expr","function(\\"tr\\")", -3]'
+ cmd = '["expr","function(\\"tr\\")", -5]'
print("sending: {0}".format(cmd))
self.request.sendall(cmd.encode('utf-8'))
response = "ok"
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index dd40187f7..b356c88fe 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -192,20 +192,31 @@ func s:communicate(port)
sleep 10m
call assert_equal([-1, 'foo123'], ch_evalexpr(handle, 'eval-result'))
+ " Send an eval request with special characters.
+ call assert_equal('ok', ch_evalexpr(handle, 'eval-special'))
+ sleep 10m
+ call assert_equal([-2, "foo\x7f\x10\x01bar"], ch_evalexpr(handle, 'eval-result'))
+
+ " Send an eval request to get a line with special characters.
+ call setline(3, "a\nb\<CR>c\x01d\x7fe")
+ call assert_equal('ok', ch_evalexpr(handle, 'eval-getline'))
+ sleep 10m
+ call assert_equal([-3, "a\nb\<CR>c\x01d\x7fe"], ch_evalexpr(handle, 'eval-result'))
+
" Send an eval request that fails.
call assert_equal('ok', ch_evalexpr(handle, 'eval-fails'))
sleep 10m
- call assert_equal([-2, 'ERROR'], ch_evalexpr(handle, 'eval-result'))
+ call assert_equal([-4, 'ERROR'], ch_evalexpr(handle, 'eval-result'))
" Send an eval request that works but can't be encoded.
call assert_equal('ok', ch_evalexpr(handle, 'eval-error'))
sleep 10m
- call assert_equal([-3, 'ERROR'], ch_evalexpr(handle, 'eval-result'))
+ call assert_equal([-5, 'ERROR'], ch_evalexpr(handle, 'eval-result'))
" Send a bad eval request. There will be no response.
call assert_equal('ok', ch_evalexpr(handle, 'eval-bad'))
sleep 10m
- call assert_equal([-3, 'ERROR'], ch_evalexpr(handle, 'eval-result'))
+ call assert_equal([-5, 'ERROR'], ch_evalexpr(handle, 'eval-result'))
" Send an expr request
call assert_equal('ok', ch_evalexpr(handle, 'an expr'))
diff --git a/src/version.c b/src/version.c
index 1bd90fa4b..7e63f1fa6 100644
--- a/src/version.c
+++ b/src/version.c
@@ -749,6 +749,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 1661,
+/**/
1660,
/**/
1659,