diff options
author | Bram Moolenaar <Bram@vim.org> | 2019-02-10 22:23:26 +0100 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2019-02-10 22:23:26 +0100 |
commit | 6524068ff3252f1373807f1ebfde21408cef624e (patch) | |
tree | 016c761632389af45db753da47049f2d0ce0a688 /src/testdir | |
parent | 31b816042fca879b11965ddd75287732563ba698 (diff) | |
download | vim-git-6524068ff3252f1373807f1ebfde21408cef624e.tar.gz |
patch 8.1.0889: MS-Windows: a channel write may hangv8.1.0889
Problem: MS-Windows: a channel write may hang.
Solution: Check for WriteFile() not writing anything. (Yasuhiro Matsumoto,
closes #3920)
Diffstat (limited to 'src/testdir')
-rw-r--r-- | src/testdir/test_channel.vim | 14 | ||||
-rw-r--r-- | src/testdir/test_channel_pipe.py | 3 |
2 files changed, 17 insertions, 0 deletions
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim index 2aef3e1dc..becd5484f 100644 --- a/src/testdir/test_channel.vim +++ b/src/testdir/test_channel.vim @@ -2003,6 +2003,20 @@ func Test_raw_large_data() endtry endfunc +func Test_no_hang_windows() + if !has('job') || !has('win32') + return + endif + + try + let job = job_start(s:python . " test_channel_pipe.py busy", + \ {'mode': 'raw', 'drop': 'never', 'noblock': 0}) + call assert_fails('call ch_sendraw(job, repeat("X", 80000))', 'E631:') + finally + call job_stop(job) + endtry +endfunc + func Test_job_exitval_and_termsig() if !has('unix') return diff --git a/src/testdir/test_channel_pipe.py b/src/testdir/test_channel_pipe.py index 810a8e303..5caffcbf9 100644 --- a/src/testdir/test_channel_pipe.py +++ b/src/testdir/test_channel_pipe.py @@ -18,6 +18,9 @@ if __name__ == "__main__": print(sys.argv[1], end='') sys.stdout.flush() sys.exit(0) + elif sys.argv[1].startswith("busy"): + time.sleep(100) + sys.exit(0) else: print(sys.argv[1]) sys.stdout.flush() |