patch 7.4.1398
Problem: The close-cb option is not implemented yet.
Solution: Implemente close-cb. (Yasuhiro Matsumoto)
diff --git a/src/testdir/test_channel.py b/src/testdir/test_channel.py
index 26c7dea..9a3c921 100644
--- a/src/testdir/test_channel.py
+++ b/src/testdir/test_channel.py
@@ -140,6 +140,10 @@
print("sending: {}".format(cmd))
self.request.sendall(cmd.encode('utf-8'))
response = ""
+ elif decoded[1] == 'close me':
+ print("closing")
+ self.request.close()
+ response = ""
elif decoded[1] == 'wait a bit':
time.sleep(0.2)
response = "waited"
diff --git a/src/testdir/test_channel.vim b/src/testdir/test_channel.vim
index 2b4b189..2e74e9f 100644
--- a/src/testdir/test_channel.vim
+++ b/src/testdir/test_channel.vim
@@ -471,9 +471,9 @@
"""""""""
-let s:job_ret = 'not yet'
+let s:job_exit_ret = 'not yet'
function MyExitCb(job, status)
- let s:job_ret = 'done'
+ let s:job_exit_ret = 'done'
endfunc
function s:test_exit_callback(port)
@@ -490,6 +490,32 @@
" calling job_status() triggers the callback
call job_status(s:exit_job)
- call assert_equal('done', s:job_ret)
+ call assert_equal('done', s:job_exit_ret)
endif
endfunc
+
+"""""""""
+
+let s:ch_close_ret = 'alive'
+function MyCloseCb(ch)
+ let s:ch_close_ret = 'closed'
+endfunc
+
+function s:test_close_callback(port)
+ let handle = ch_open('localhost:' . a:port, s:chopt)
+ if ch_status(handle) == "fail"
+ call assert_false(1, "Can't open channel")
+ return
+ endif
+ call ch_setoptions(handle, {'close-cb': 'MyCloseCb'})
+
+ call assert_equal('', ch_sendexpr(handle, 'close me'))
+ sleep 20m
+ call assert_equal('closed', s:ch_close_ret)
+endfunc
+
+func Test_close_callback()
+ call ch_log('Test_close_callback()')
+ call s:run_server('s:test_close_callback')
+endfunc
+