# HG changeset patch # User Christian Brabandt # Date 1457297105 -3600 # Node ID 02ce040591c890535ef3dc9567bc16279cf1742a # Parent dcb1b9c15ed19e09c3b66f5519421ddc0a204214 commit https://github.com/vim/vim/commit/3f39f648662bf8723f687d14694041779ed0780c Author: Bram Moolenaar Date: Sun Mar 6 21:35:57 2016 +0100 patch 7.4.1504 Problem: No test for reading last-but-one line. Solution: Add a test. diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -629,6 +629,83 @@ func Test_pipe_to_buffer_json() endtry endfunc +" Wait a little while for the last line, minus "offset", to equal "line". +func Wait_for_last_line(line, offset) + for i in range(100) + sleep 10m + if getline(line('$') - a:offset) == a:line + break + endif + endfor +endfunc + +func Test_pipe_io_two_buffers() + if !has('job') + return + endif + call ch_log('Test_pipe_io_two_buffers()') + + " Create two buffers, one to read from and one to write to. + split pipe-output + set buftype=nofile + split pipe-input + set buftype=nofile + + let job = job_start(s:python . " test_channel_pipe.py", + \ {'in-io': 'buffer', 'in-name': 'pipe-input', 'in-top': 0, + \ 'out-io': 'buffer', 'out-name': 'pipe-output'}) + call assert_equal("run", job_status(job)) + try + exe "normal Gaecho hello\" + exe bufwinnr('pipe-output') . "wincmd w" + call Wait_for_last_line('hello', 0) + call assert_equal('hello', getline('$')) + + exe bufwinnr('pipe-input') . "wincmd w" + exe "normal Gadouble this\" + exe bufwinnr('pipe-output') . "wincmd w" + call Wait_for_last_line('AND this', 0) + call assert_equal('this', getline(line('$') - 1)) + call assert_equal('AND this', getline('$')) + + bwipe! + exe bufwinnr('pipe-input') . "wincmd w" + bwipe! + finally + call job_stop(job) + endtry +endfunc + +func Test_pipe_io_one_buffer() + if !has('job') + return + endif + call ch_log('Test_pipe_io_one_buffer()') + + " Create one buffer to read from and to write to. + split pipe-io + set buftype=nofile + + let job = job_start(s:python . " test_channel_pipe.py", + \ {'in-io': 'buffer', 'in-name': 'pipe-io', 'in-top': 0, + \ 'out-io': 'buffer', 'out-name': 'pipe-io'}) + call assert_equal("run", job_status(job)) + try + exe "normal Goecho hello\" + call Wait_for_last_line('hello', 1) + call assert_equal('hello', getline(line('$') - 1)) + + exe "normal Gadouble this\" + call Wait_for_last_line('AND this', 1) + call assert_equal('this', getline(line('$') - 2)) + call assert_equal('AND this', getline(line('$') - 1)) + + bwipe! + finally + call job_stop(job) + endtry +endfunc + """""""""" let s:unletResponse = '' diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -744,6 +744,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1504, +/**/ 1503, /**/ 1502,