@@ -6,30 +6,45 @@ let s:scriptfile = s:Path.realpath(
66 \ 'autoload/vital/__vital__/System/AsyncProcess.vim'
77 \)
88
9+ let s:is_windows = has('win32')
10+
11+ function! s:wait_until(cond, timeout) abort
12+ let start = reltime()
13+ while 1
14+ if a:cond()
15+ return 1
16+ endif
17+ if reltimefloat(reltime(start)) * 1000 > a:timeout
18+ return 0
19+ endif
20+ sleep 10m
21+ endwhile
22+ endfunction
23+
924Describe System.AsyncProcess
1025 Before
1126 let AsyncProcess = s:V.import('System.AsyncProcess')
27+ let g:exit_code = ""
28+ let g:out_msg = ""
29+ let g:err_msg = ""
1230 End
1331
1432 After
33+ unlet g:exit_code
34+ unlet g:out_msg
35+ unlet g:err_msg
1536 End
1637
1738 Describe .execute({args}, {options})
1839 It uses a String item
19- let exit_code = ""
20- let out_msg = ""
21- let err_msg = ""
2240 function! s:my_out_cb(out_msg) abort
23- let out_msg = out_msg . a:out_msg
41+ let g: out_msg = g: out_msg . a:out_msg
2442 endfunction
2543 function! s:my_err_cb(err_msg) abort
26- let err_msg = err_msg . a:err_msg
44+ let g: err_msg = g: err_msg . a:err_msg
2745 endfunction
2846 function! s:my_exit_cb(exit_code) abort
29- let exit_code = a:exit_code
30- Assert Equals(l:exit_code, 0)
31- Assert Equals(l:out_msg, "abcdefg\n")
32- Assert Equals(l:err_msg, "")
47+ let g:exit_code = a:exit_code
3348 endfunction
3449
3550 let args = 'echo "abcdefg"'
@@ -38,6 +53,20 @@ Describe System.AsyncProcess
3853 \ 'out_cb': function('s:my_out_cb'),
3954 \ 'err_cb': function('s:my_err_cb'),
4055 \ })
56+
57+ call s:wait_until({-> g:exit_code !=# ""}, 2000)
58+
59+ Assert Equals(g:exit_code, 0)
60+ Assert Equals(g:err_msg, "")
61+
62+ if s:is_windows
63+ let actual_out_msg = '\"abcdefg\"'
64+ else
65+ let actual_out_msg = "abcdefg"
66+ endif
67+
68+ Assert Equals(g:out_msg, actual_out_msg)
4169 End
4270 End
4371End
72+
0 commit comments