Mercurial > vim
changeset 8744:ff9973bbbfcb v7.4.1661
commit https://github.com/vim/vim/commit/fa8b2e173dd5f6c4a5cfd326abdcf68b8eebf90d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Mar 26 22:19:27 2016 +0100
patch 7.4.1661
Problem: No test for special characters in channel eval command.
Solution: Testing sending and receiving text with special characters.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sat, 26 Mar 2016 22:30:04 +0100 |
parents | 42940780f146 |
children | bafdb038f07a |
files | src/testdir/test_channel.py src/testdir/test_channel.vim src/version.c |
diffstat | 3 files changed, 30 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/src/testdir/test_channel.py +++ b/src/testdir/test_channel.py @@ -85,16 +85,28 @@ class ThreadedTCPRequestHandler(socketse 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"
--- 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'))