@@ -68,5 +68,71 @@ Describe System.AsyncProcess
6868 Assert Equals(g:out_msg, actual_out_msg)
6969 End
7070 End
71+
72+ Describe .stop()
73+ It stop
74+ let g:out_msg = []
75+ let g:err_msg = []
76+ let g:exit_code = ""
77+ function! s:my_out_cb(out_msg) abort
78+ let g:out_msg = g:out_msg + [a:out_msg]
79+ endfunction
80+ function! s:my_err_cb(err_msg) abort
81+ let g:err_msg = g:err_msg + [a:err_msg]
82+ endfunction
83+ function! s:my_exit_cb(exit_code) abort
84+ let g:exit_code = a:exit_code
85+ endfunction
86+
87+ let args = "ping 0.0.0.0"
88+ let process = AsyncProcess.execute(args, {
89+ \ 'exit_cb': function('s:my_exit_cb'),
90+ \ 'out_cb': function('s:my_out_cb'),
91+ \ 'err_cb': function('s:my_err_cb'),
92+ \ })
93+
94+ call process.stop()
95+
96+ " Wait exit_cb process
97+ call s:wait_until({-> g:exit_code !=# ""}, 1000)
98+
99+ Assert Equals(len(g:out_msg), 0)
100+ Assert Equals(len(g:err_msg), 0)
101+ Assert True(g:exit_code != 0)
102+
103+ End
104+ End
105+
106+ Describe .timeout
107+ It stop
108+ let g:out_msg = []
109+ let g:err_msg = []
110+ let g:exit_code = ""
111+ function! s:my_out_cb(out_msg) abort
112+ let g:out_msg = g:out_msg + [a:out_msg]
113+ endfunction
114+ function! s:my_err_cb(err_msg) abort
115+ let g:err_msg = g:err_msg + [a:err_msg]
116+ endfunction
117+ function! s:my_exit_cb(exit_code) abort
118+ let g:exit_code = a:exit_code
119+ endfunction
120+
121+ let args = "ping 0.0.0.0"
122+ let process = AsyncProcess.execute(args, {
123+ \ 'exit_cb': function('s:my_exit_cb'),
124+ \ 'out_cb': function('s:my_out_cb'),
125+ \ 'err_cb': function('s:my_err_cb'),
126+ \ 'timeout': 1000,
127+ \ })
128+
129+ call s:wait_until({-> g:exit_code !=# ""}, 1000)
130+
131+ Assert True(len(g:out_msg) > 0)
132+ Assert Equals(len(g:err_msg), 0)
133+ Assert True(g:exit_code != 0)
134+
135+ End
136+ End
71137End
72138
0 commit comments