Mercurial > vim
changeset 9238:7d13d180a6ae v7.4.1902
commit https://github.com/vim/vim/commit/bbe8d91e695184771d7e45315258fab8eb3e6b07
Author: Bram Moolenaar <Bram@vim.org>
Date: Sun Jun 5 16:10:57 2016 +0200
patch 7.4.1902
Problem: No test for collapsing buffers for a channel. Some text is lost.
Solution: Add a simple test. Set rq_buflen correctly.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Sun, 05 Jun 2016 16:15:05 +0200 |
parents | 1c0fd34df5b3 |
children | a744b63c4ed0 |
files | src/channel.c src/testdir/test_channel.vim src/testdir/test_channel_pipe.py src/version.c |
diffstat | 4 files changed, 16 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/src/channel.c +++ b/src/channel.c @@ -1657,6 +1657,7 @@ channel_collapse(channel_T *channel, int p += n->rq_buflen; vim_free(n->rq_buffer); } + node->rq_buflen = (long_u)(p - newbuf); /* dispose of the collapsed nodes and their buffers */ for (n = node->rq_next; n != last_node; )
--- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -538,6 +538,9 @@ func Test_nl_pipe() call assert_equal("this", ch_readraw(handle)) call assert_equal("AND this", ch_readraw(handle)) + call ch_sendraw(handle, "split this line\n") + call assert_equal("this linethis linethis line", ch_readraw(handle)) + let reply = ch_evalraw(handle, "quit\n") call assert_equal("Goodbye!", reply) finally
--- a/src/testdir/test_channel_pipe.py +++ b/src/testdir/test_channel_pipe.py @@ -6,6 +6,7 @@ from __future__ import print_function import sys +import time if __name__ == "__main__": @@ -31,6 +32,15 @@ if __name__ == "__main__": if typed.startswith("double "): print(typed[7:-1] + "\nAND " + typed[7:-1]) sys.stdout.flush() + if typed.startswith("split "): + print(typed[6:-1], end='') + sys.stdout.flush() + time.sleep(0.05) + print(typed[6:-1], end='') + sys.stdout.flush() + time.sleep(0.05) + print(typed[6:-1]) + sys.stdout.flush() if typed.startswith("echoerr "): print(typed[8:-1], file=sys.stderr) sys.stderr.flush()