@@ -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