changeset 9994:ee8b8a670a5c v7.4.2270

commit https://github.com/vim/vim/commit/821179809d9b0f65177360b53584be2b4039dd46 Author: Bram Moolenaar <Bram@vim.org> Date: Sat Aug 27 19:21:48 2016 +0200 patch 7.4.2270 Problem: Insufficient testing for NUL bytes on a raw channel. Solution: Add a test for writing and reading.
author Christian Brabandt <cb@256bit.org>
date Sat, 27 Aug 2016 19:30:06 +0200
parents d45cb159c8da
children 6c4c8554bf5a
files src/testdir/test_channel.vim src/version.c
diffstat 2 files changed, 39 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -1321,7 +1321,7 @@ func Test_using_freed_memory()
 endfunc
 
 func Test_collapse_buffers()
-  if !executable('cat')
+  if !executable('cat') || !has('job')
     return
   endif
   sp test_channel.vim
@@ -1335,6 +1335,42 @@ func Test_collapse_buffers()
   bwipe!
 endfunc
 
+func Test_raw_passes_nul()
+  if !executable('cat') || !has('job')
+    return
+  endif
+
+  " Test lines from the job containing NUL are stored correctly in a buffer.
+  new
+  call setline(1, ["asdf\nasdf", "xxx\n", "\nyyy"])
+  w! Xtestread
+  bwipe!
+  split testout
+  1,$delete
+  call job_start('cat Xtestread', {'out_io': 'buffer', 'out_name': 'testout'})
+  call WaitFor('line("$") > 2')
+  call assert_equal("asdf\nasdf", getline(2))
+  call assert_equal("xxx\n", getline(3))
+  call assert_equal("\nyyy", getline(4))
+
+  call delete('Xtestread')
+  bwipe!
+
+  " Test lines from a buffer with NUL bytes are written correctly to the job.
+  new mybuffer
+  call setline(1, ["asdf\nasdf", "xxx\n", "\nyyy"])
+  let g:Ch_job = job_start('cat', {'in_io': 'buffer', 'in_name': 'mybuffer', 'out_io': 'file', 'out_name': 'Xtestwrite'})
+  call WaitFor('"dead" == job_status(g:Ch_job)')
+  bwipe!
+  split Xtestwrite
+  call assert_equal("asdf\nasdf", getline(1))
+  call assert_equal("xxx\n", getline(2))
+  call assert_equal("\nyyy", getline(3))
+
+  call delete('Xtestwrite')
+  bwipe!
+endfunc
+
 function Ch_test_close_lambda(port)
   let handle = ch_open('localhost:' . a:port, s:chopt)
   if ch_status(handle) == "fail"
--- a/src/version.c
+++ b/src/version.c
@@ -764,6 +764,8 @@ static char *(features[]) =
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    2270,
+/**/
     2269,
 /**/
     2268,