@@ -33,6 +33,42 @@ function! OmniSharp#testrunner#Init(buffers) abort
3333endfunction
3434
3535
36+ function ! OmniSharp#testrunner#FoldText () abort
37+ let line = getline (v: foldstart )
38+ if line = ~# ' ^;'
39+ " Project
40+ let projectkey = matchlist (line , ' ^\S\+' )[0 ]
41+ let [assembly, _] = split (projectkey, ' ;' )
42+ let ntests = 0
43+ for filename in keys (s: tests [projectkey].files )
44+ let ntests += len (s: tests [projectkey].files [filename].tests)
45+ endfor
46+ let err = match (line , ' ; ERROR$' ) == -1 ? ' ' : ' ERROR'
47+ return printf (' %s [%d]%s' , assembly, ntests, err)
48+ elseif line = ~# ' ^ \f'
49+ " File
50+ let filename = trim (line )
51+ let fullpath = fnamemodify (filename, ' :p' )
52+ let displayname = matchlist (filename, ' ^\f\{-}\([^/\\]\+\)\.csx\?$' )[1 ]
53+ " Position the cursor so that search() is relative to the fold, not the
54+ " actual cursor position
55+ let winview = winsaveview ()
56+ call cursor (v: foldstart , 0 )
57+ let projectline = search (' ^;' , ' bcnWz' )
58+ call winrestview (winview)
59+ let projectkey = matchlist (getline (projectline), ' ^\S\+' )[0 ]
60+ let ntests = len (s: tests [projectkey].files [fullpath].tests)
61+ return printf (' %s [%d]' , displayname, ntests)
62+ elseif line = ~# ' ^<'
63+ return printf (' Error details (%d lines)' , v: foldend - v: foldstart + 1 )
64+ elseif line = ~# ' ^>'
65+ return printf (' Results (%d lines)' , v: foldend - v: foldstart + 1 )
66+ elseif line = ~# ' ^//'
67+ return printf (' Output (%d lines)' , v: foldend - v: foldstart + 1 )
68+ endif
69+ return printf (' %s (%d lines)' , line , v: foldend - v: foldstart + 1 )
70+ endfunction
71+
3672function ! OmniSharp#testrunner#Log (message) abort
3773 call extend (s: current .log , a: message )
3874endfunction
@@ -43,9 +79,9 @@ function! OmniSharp#testrunner#Run() abort
4379 let line = getline (' .' )
4480 if line = ~# ' ^;'
4581 " Project selected - run all tests
46- let projectname = matchlist (getline (' .' ), ' ^\S\+' )[0 ]
47- let filenames = filter (keys (s: tests [projectname ].files ),
48- \ {_,f - > s: tests [projectname ].files [f ].visible})
82+ let projectkey = matchlist (getline (' .' ), ' ^\S\+' )[0 ]
83+ let filenames = filter (keys (s: tests [projectkey ].files ),
84+ \ {_,f - > s: tests [projectkey ].files [f ].visible})
4985 call OmniSharp#actions#test#RunInFile (1 , filenames)
5086 elseif line = ~# ' ^ \f'
5187 " File selected
@@ -66,14 +102,14 @@ function! OmniSharp#testrunner#Remove() abort
66102 let line = getline (' .' )
67103 if line = ~# ' ^;'
68104 " Project selected - run all tests
69- let projectname = matchlist (getline (' .' ), ' ^\S\+' )[0 ]
70- let s: tests [projectname ].visible = 0
105+ let projectkey = matchlist (getline (' .' ), ' ^\S\+' )[0 ]
106+ let s: tests [projectkey ].visible = 0
71107 elseif line = ~# ' ^ \f'
72108 " File selected
73109 let filename = fnamemodify (trim (line ), ' :p' )
74110 let projectline = search (' ^;' , ' bcnWz' )
75- let projectname = matchlist (getline (projectline), ' ^\S\+' )[0 ]
76- let s: tests [projectname ].files [filename].visible = 0
111+ let projectkey = matchlist (getline (projectline), ' ^\S\+' )[0 ]
112+ let s: tests [projectkey ].files [filename].visible = 0
77113 else
78114 let test = s: utils .findTest ()
79115 let test.state = ' hidden'
@@ -487,11 +523,11 @@ function! s:utils.findTest() abort
487523 if testline > 0
488524 let testname = matchlist (getline (testline), ' [-|*!] \zs.*$' )[0 ]
489525 let projectline = search (' ^;' , ' bcnWz' )
490- let projectname = matchlist (getline (projectline), ' ^\S\+' )[0 ]
526+ let projectkey = matchlist (getline (projectline), ' ^\S\+' )[0 ]
491527 let fileline = search (' ^ \f' , ' bcnWz' )
492528 let filename = matchlist (getline (fileline), ' ^ \zs.*$' )[0 ]
493529 let filename = fnamemodify (filename, ' :p' )
494- return s: tests [projectname ].files [filename].tests[testname]
530+ return s: tests [projectkey ].files [filename].tests[testname]
495531 endif
496532 return {}
497533endfunction
0 commit comments