Skip to content

Commit 0f34524

Browse files
committed
Add mapping to remove test/file/proj from runner
1 parent 4642e11 commit 0f34524

File tree

2 files changed

+52
-2
lines changed

2 files changed

+52
-2
lines changed

Diff for: autoload/OmniSharp/testrunner.vim

+50-2
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,9 @@ function! OmniSharp#testrunner#Run() abort
4141
for sln_or_dir in OmniSharp#proc#ListRunningJobs()
4242
let job = OmniSharp#proc#GetJob(sln_or_dir)
4343
if has_key(job, 'tests') && has_key(job.tests, projectname)
44-
call OmniSharp#actions#test#RunInFile(1, keys(job.tests[projectname]))
44+
let filenames = filter(keys(job.tests[projectname]),
45+
\ {_,f -> !get(job.tests[projectname][f], '__OmniSharp__removed')})
46+
call OmniSharp#actions#test#RunInFile(1, filenames)
4547
endif
4648
endfor
4749
elseif line =~# '^ \f'
@@ -58,6 +60,39 @@ function! OmniSharp#testrunner#Run() abort
5860
endfunction
5961

6062

63+
function! OmniSharp#testrunner#Remove() abort
64+
let filename = ''
65+
let line = getline('.')
66+
if line =~# '^\a'
67+
" Project selected - run all tests
68+
let projectname = getline('.')
69+
for sln_or_dir in OmniSharp#proc#ListRunningJobs()
70+
let job = OmniSharp#proc#GetJob(sln_or_dir)
71+
if has_key(job, 'tests') && has_key(job.tests, projectname)
72+
let job.tests[projectname].__OmniSharp__removed = 1
73+
break
74+
endif
75+
endfor
76+
elseif line =~# '^ \f'
77+
" File selected
78+
let filename = fnamemodify(trim(line), ':p')
79+
let projectline = search('^\a', 'bcnWz')
80+
let projectname = matchlist(getline(projectline), '^\S\+')[0]
81+
for sln_or_dir in OmniSharp#proc#ListRunningJobs()
82+
let job = OmniSharp#proc#GetJob(sln_or_dir)
83+
if has_key(job, 'tests') && has_key(job.tests, projectname)
84+
let job.tests[projectname][filename].__OmniSharp__removed = 1
85+
break
86+
endif
87+
endfor
88+
else
89+
let test = s:utils.findTest()
90+
let test.__OmniSharp__removed = 1
91+
endif
92+
call s:Paint()
93+
endfunction
94+
95+
6196
function! OmniSharp#testrunner#Navigate() abort
6297
if &filetype !=# 'omnisharptest' | return | endif
6398
let bufnr = -1
@@ -185,6 +220,7 @@ function! s:Paint() abort
185220
let job = OmniSharp#proc#GetJob(sln_or_dir)
186221
if !has_key(job, 'tests') | continue | endif
187222
for testproject in sort(keys(job.tests))
223+
if get(job.tests[testproject], '__OmniSharp__removed') | continue | endif
188224
let errors = get(get(job, 'testerrors', {}), testproject, [])
189225
call add(lines, testproject . (len(errors) ? ' - ERROR' : ''))
190226
for errorline in errors
@@ -204,10 +240,12 @@ function! s:Paint() abort
204240
endif
205241
endif
206242
for testfile in sort(keys(job.tests[testproject]))
207-
call add(lines, ' ' . fnamemodify(testfile, ':.'))
208243
let tests = job.tests[testproject][testfile]
244+
if get(tests, '__OmniSharp__removed') | continue | endif
245+
call add(lines, ' ' . fnamemodify(testfile, ':.'))
209246
for name in sort(keys(tests), {a,b -> tests[a].lnum > tests[b].lnum})
210247
let test = tests[name]
248+
if get(test, '__OmniSharp__removed') | continue | endif
211249
let state = s:utils.state2char[test.state]
212250
call add(lines, printf('%s %s', state, name))
213251
if state ==# '-' && !has_key(test, 'spintimer')
@@ -284,15 +322,25 @@ function! OmniSharp#testrunner#SetTests(bufferTests) abort
284322
let job.tests = get(job, 'tests', {})
285323
let projectname = s:utils.getProjectName(buffer.bufnr)
286324
let testproject = get(job.tests, projectname, {})
325+
if has_key(testproject, '__OmniSharp__removed')
326+
unlet testproject.__OmniSharp__removed
327+
endif
287328
let job.tests[projectname] = testproject
288329
let filename = fnamemodify(bufname(buffer.bufnr), ':p')
289330
let filetests = get(testproject, filename, {})
331+
if has_key(testproject, '__OmniSharp__removed')
332+
unlet testproject.__OmniSharp__removed
333+
endif
290334
let testproject[filename] = filetests
291335
for buffertest in buffer.tests
292336
let test = get(filetests, buffertest.name, { 'state': 'Not run' })
337+
if has_key(test, '__OmniSharp__removed')
338+
unlet test.__OmniSharp__removed
339+
endif
293340
let filetests[buffertest.name] = test
294341
let test.name = buffertest.name
295342
let test.filename = filename
343+
let test.projectname = projectname
296344
let test.framework = buffertest.framework
297345
let test.lnum = buffertest.nameRange.Start.Line
298346
endfor

Diff for: ftplugin/omnisharptest/OmniSharp.vim

+2
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ nnoremap <buffer> <Plug>(omnisharp_testrunner_run) :call OmniSharp#testrunner#Ru
1111
nnoremap <buffer> <Plug>(omnisharp_testrunner_debug) :call OmniSharp#testrunner#Debug()<CR>
1212
nnoremap <buffer> <Plug>(omnisharp_testrunner_set_breakpoints) :call OmniSharp#testrunner#SetBreakpoints()<CR>
1313
nnoremap <buffer> <Plug>(omnisharp_testrunner_navigate) :call OmniSharp#testrunner#Navigate()<CR>
14+
nnoremap <buffer> <Plug>(omnisharp_testrunner_remove) :call OmniSharp#testrunner#Remove()<CR>
1415
1516
function! s:map(mode, lhs, plug) abort
1617
let l:rhs = '<Plug>(' . a:plug . ')'
@@ -24,3 +25,4 @@ call s:map('n', '<F5>', 'omnisharp_testrunner_run')
2425
call s:map('n', '<F6>', 'omnisharp_testrunner_debug')
2526
call s:map('n', '<F9>', 'omnisharp_testrunner_set_breakpoints')
2627
call s:map('n', '<CR>', 'omnisharp_testrunner_navigate')
28+
call s:map('n', 'dd', 'omnisharp_testrunner_remove')

0 commit comments

Comments
 (0)