Mercurial > vim
comparison src/testdir/test_channel.vim @ 7916:54602dcac207 v7.4.1254
commit https://github.com/vim/vim/commit/3b05b135e3ee4cfd59983fd63461e8f7642c1713
Author: Bram Moolenaar <Bram@vim.org>
Date: Wed Feb 3 23:25:07 2016 +0100
patch 7.4.1254
Problem: Opening a second channel causes a crash. (Ken Takata)
Solution: Don't re-allocate the array with channels.
author | Christian Brabandt <cb@256bit.org> |
---|---|
date | Wed, 03 Feb 2016 23:30:04 +0100 |
parents | 35973ce58c84 |
children | ce5a7a613867 |
comparison
equal
deleted
inserted
replaced
7915:72085904c404 | 7916:54602dcac207 |
---|---|
14 finish | 14 finish |
15 endif | 15 endif |
16 else | 16 else |
17 finish | 17 finish |
18 endif | 18 endif |
19 | |
20 let s:port = -1 | |
19 | 21 |
20 func s:start_server() | 22 func s:start_server() |
21 " The Python program writes the port number in Xportnr. | 23 " The Python program writes the port number in Xportnr. |
22 call delete("Xportnr") | 24 call delete("Xportnr") |
23 | 25 |
47 " Can't make the connection, give up. | 49 " Can't make the connection, give up. |
48 call s:kill_server() | 50 call s:kill_server() |
49 call assert_false(1, "Can't start test_channel.py") | 51 call assert_false(1, "Can't start test_channel.py") |
50 return -1 | 52 return -1 |
51 endif | 53 endif |
52 let port = l[0] | 54 let s:port = l[0] |
53 | 55 |
54 let handle = ch_open('localhost:' . port, 'json') | 56 let handle = ch_open('localhost:' . s:port, 'json') |
55 return handle | 57 return handle |
56 endfunc | 58 endfunc |
57 | 59 |
58 func s:kill_server() | 60 func s:kill_server() |
59 if has('win32') | 61 if has('win32') |
92 call ch_sendexpr(handle, '!quit!', 0) | 94 call ch_sendexpr(handle, '!quit!', 0) |
93 | 95 |
94 call s:kill_server() | 96 call s:kill_server() |
95 endfunc | 97 endfunc |
96 | 98 |
99 " Test that we can open two channels. | |
100 func Test_two_channels() | |
101 let handle = s:start_server() | |
102 if handle < 0 | |
103 return | |
104 endif | |
105 call assert_equal('got it', ch_sendexpr(handle, 'hello!')) | |
106 | |
107 let newhandle = ch_open('localhost:' . s:port, 'json') | |
108 call assert_equal('got it', ch_sendexpr(newhandle, 'hello!')) | |
109 call assert_equal('got it', ch_sendexpr(handle, 'hello!')) | |
110 | |
111 call ch_close(handle) | |
112 call assert_equal('got it', ch_sendexpr(newhandle, 'hello!')) | |
113 | |
114 call s:kill_server() | |
115 endfunc | |
116 | |
97 " Test that a server crash is handled gracefully. | 117 " Test that a server crash is handled gracefully. |
98 func Test_server_crash() | 118 func Test_server_crash() |
99 let handle = s:start_server() | 119 let handle = s:start_server() |
100 if handle < 0 | 120 if handle < 0 |
101 return | 121 return |