@@ -12,6 +12,49 @@ function! OmniSharp#testrunner#GetTests() abort
12
12
endfunction
13
13
14
14
15
+ " Discover all tests in the project.
16
+ " Optional argument: A dict containing the following optional items:
17
+ " Callback: funcref to be called after the response is returned
18
+ " Display: flag indicating that the tests should immediately be displayed in
19
+ " the testrunner
20
+ function ! OmniSharp#testrunner#Discover (bufnr , ... ) abort
21
+ if a: 0 && type (a: 1 ) == type (function (' tr' ))
22
+ let opts = { ' Callback' : a: 1 }
23
+ else
24
+ let opts = a: 0 ? a: 1 : {}
25
+ endif
26
+ let opts.Display = get (opts, ' Display' , 1 )
27
+ if ! has_key (OmniSharp#GetHost (a: bufnr ), ' project' )
28
+ " Fetch the project structure, then call this function again
29
+ call OmniSharp#actions#project#Get (a: bufnr ,
30
+ \ function (' OmniSharp#testrunner#Discover' , [a: bufnr , opts]))
31
+ return
32
+ endif
33
+ let project = OmniSharp#GetHost (a: bufnr ).project
34
+ let opts = {
35
+ \ ' ResponseHandler' : function (' s:DiscoverRH' , [a: bufnr , opts]),
36
+ \ ' BufNum' : a: bufnr ,
37
+ \ ' Parameters' : {
38
+ \ ' TargetFrameworkVersion' : project[' MsBuildProject' ][' TargetFramework' ]
39
+ \ },
40
+ \ ' SendBuffer' : 0
41
+ \}
42
+ call OmniSharp#stdio#Request (' /v2/discovertests' , opts)
43
+ endfunction
44
+
45
+ function ! s: DiscoverRH (bufnr , opts, response) abort
46
+ if ! a: response .Success | return | endif
47
+ let project = OmniSharp#GetHost (a: bufnr ).project
48
+ let project.tests = a: response .Body.Tests
49
+ if a: opts .Display
50
+ " TODO: add tests to testrunner display
51
+ endif
52
+ if has_key (a: opts , ' Callback' )
53
+ call a: opts .Callback (a: response )
54
+ endif
55
+ endfunction
56
+
57
+
15
58
function ! OmniSharp#testrunner#Debug () abort
16
59
let filename = ' '
17
60
let line = getline (' .' )
0 commit comments