@@ -10,6 +10,7 @@ let s:run.running = 0
10
10
let s: run .single = {}
11
11
let s: run .multiple = {}
12
12
let s: utils = {}
13
+ let s: utils .init = {}
13
14
let s: utils .log = {}
14
15
15
16
function ! OmniSharp#actions#test#Debug (nobuild) abort
@@ -21,10 +22,9 @@ function! OmniSharp#actions#test#Debug(nobuild) abort
21
22
call s: utils .initialize ([bufnr (' %' )], s: debug .prepare)
22
23
endfunction
23
24
24
- function ! s: debug .prepare (bufferCodeStructures) abort
25
- let bufnr = a: bufferCodeStructures [0 ][0 ]
26
- let codeElements = a: bufferCodeStructures [0 ][1 ]
27
- let tests = s: utils .extractTests (codeElements)
25
+ function ! s: debug .prepare (bufferTests) abort
26
+ let bufnr = a: bufferTests [0 ].bufnr
27
+ let tests = a: bufferTests [0 ].tests
28
28
let currentTest = s: utils .findTest (tests)
29
29
if type (currentTest) != type ({})
30
30
return s: utils .log .warn (' No test found' )
@@ -51,9 +51,7 @@ function! s:debug.launch(bufnr, tests, response) abort
51
51
let testhost = [cmd] + args
52
52
if ! s: debug .process.start (testhost) | return | endif
53
53
let s: run .running = 1
54
- let host = OmniSharp#GetHost ()
55
54
let s: omnisharp_pre_debug_cwd = getcwd ()
56
- let new_cwd = fnamemodify (host.sln_or_dir, ' :p:h' )
57
55
call vimspector#LaunchWithConfigurations ({
58
56
\ ' attach' : {
59
57
\ ' adapter' : ' netcoredbg' ,
@@ -63,7 +61,8 @@ function! s:debug.launch(bufnr, tests, response) abort
63
61
\ }
64
62
\ }
65
63
\} )
66
- execute ' tcd' new_cwd
64
+ let project_dir = fnamemodify (OmniSharp#GetHost (a: bufnr ).sln_or_dir, ' :p:h' )
65
+ execute ' tcd' project_dir
67
66
let opts = {
68
67
\ ' ResponseHandler' : s: debug .complete ,
69
68
\ ' Parameters' : {
@@ -108,10 +107,9 @@ function! OmniSharp#actions#test#Run(nobuild) abort
108
107
call s: utils .initialize ([bufnr (' %' )], s: run .single.test)
109
108
endfunction
110
109
111
- function ! s: run .single.test (bufferCodeStructures) abort
112
- let bufnr = a: bufferCodeStructures [0 ][0 ]
113
- let codeElements = a: bufferCodeStructures [0 ][1 ]
114
- let tests = s: utils .extractTests (codeElements)
110
+ function ! s: run .single.test (bufferTests) abort
111
+ let bufnr = a: bufferTests [0 ].bufnr
112
+ let tests = a: bufferTests [0 ].tests
115
113
let currentTest = s: utils .findTest (tests)
116
114
if type (currentTest) != type ({})
117
115
return s: utils .log .warn (' No test found' )
@@ -184,12 +182,11 @@ function! OmniSharp#actions#test#RunInFile(nobuild, ...) abort
184
182
call s: utils .initialize (buffers , s: run .multiple.prepare)
185
183
endfunction
186
184
187
- function ! s: run .multiple.prepare (bufferCodeStructures ) abort
185
+ function ! s: run .multiple.prepare (bufferTests ) abort
188
186
let Requests = []
189
- for bcs in a: bufferCodeStructures
190
- let bufnr = bcs[0 ]
191
- let codeElements = bcs[1 ]
192
- let tests = s: utils .extractTests (codeElements)
187
+ for btests in a: bufferTests
188
+ let bufnr = btests.bufnr
189
+ let tests = btests.tests
193
190
if len (tests)
194
191
call add (Requests, funcref (' s:run.multiple.inBuffer' , [bufnr , tests]))
195
192
endif
@@ -398,14 +395,22 @@ endfunction
398
395
" code structures. All operations are performed asynchronously, and the
399
396
" a:Callback is called when all buffer code structures have been fetched.
400
397
function ! s: utils .initialize (buffers , Callback) abort
401
- function ! s: AwaitForBuffers (buffers , functionName, AwaitCallback, ... ) abort
402
- call OmniSharp#util#AwaitParallel (
403
- \ map (copy (a: buffers ), {i ,b - > function (a: functionName , [b ])}),
404
- \ a: AwaitCallback )
405
- endfunction
406
- call s: AwaitForBuffers (a: buffers , ' OmniSharp#actions#project#Get' ,
407
- \ function (' s:AwaitForBuffers' ,
408
- \ [a: buffers , ' OmniSharp#actions#codestructure#Get' , a: Callback ]))
398
+ call s: utils .init.await (a: buffers , ' OmniSharp#actions#project#Get' ,
399
+ \ funcref (' s:utils.init.await' , [a: buffers , ' OmniSharp#actions#codestructure#Get' ,
400
+ \ funcref (' s:utils.init.extract' , [a: Callback ])]))
401
+ endfunction
402
+
403
+ function ! s: utils .init.await (buffers , functionName, Callback, ... ) abort
404
+ let Funcs = map (copy (a: buffers ), {i ,b - > function (a: functionName , [b ])})
405
+ call OmniSharp#util#AwaitParallel (Funcs, a: Callback )
406
+ endfunction
407
+
408
+ function ! s: utils .init.extract (Callback, codeStructures) abort
409
+ let bufferTests = map (a: codeStructures , {i , cs - > {
410
+ \ ' bufnr' : cs [0 ],
411
+ \ ' tests' : s: utils .extractTests (cs [1 ])
412
+ \} })
413
+ call a: Callback (bufferTests)
409
414
endfunction
410
415
411
416
function ! s: utils .log .echo (highlightGroup, message) abort
0 commit comments