Files
vim-lsp-settings-mirror/test/lsp_settings.vimspec
Yasuhiro Matsumoto 318b0f4dc9 delete test
2025-11-03 10:25:58 +09:00

141 lines
5.8 KiB
Plaintext

Describe lsp_settings
Describe lsp_settings#get
It should return configuration value from key and name
Assert Equals(lsp_settings#get('pyls', 'cmd', 'bad'), 'bad')
let g:lsp_settings = {'pyls': {'cmd': 'good'}}
Assert Equals(lsp_settings#get('pyls', 'cmd', 'bad'), 'good')
let g:lsp_settings = {'pyls': {'cmd': {key,name->'good'}}}
Assert Equals(lsp_settings#get('pyls', 'cmd', 'bad'), 'good')
unlet g:lsp_settings
End
It should return default value with lambda
Assert Equals(lsp_settings#get('pyls', 'cmd', {key, name-> 'good'}), 'good')
End
End
Describe lsp_settings#executable
It should return command is executable in $PATH
if has('win32')
Assert Equals(lsp_settings#executable('cmd'), 1)
else
Assert Equals(lsp_settings#executable('sh'), 1)
endif
Assert Equals(lsp_settings#executable('unknown-command'), 0)
End
It should return 0 when command is not in server/foo-bar/foo-bar
let l:servers_dir = lsp_settings#servers_dir()
try
call delete(l:servers_dir . '/foo-bar', 'rf')
call mkdir(l:servers_dir . '/foo-bar', 'p')
Assert Equals(lsp_settings#executable('foo-bar'), 0)
finally
call delete(l:servers_dir . '/foo-bar', 'rf')
endtry
End
It should return 1 when command is executable in server/foo-bar/foo-bar
let l:servers_dir = lsp_settings#servers_dir()
try
call delete(l:servers_dir . '/foo-bar', 'rf')
call mkdir(l:servers_dir . '/foo-bar', 'p')
if has('win32')
call writefile(['@echo off', 'echo foo-bar'], l:servers_dir . '/foo-bar/foo-bar.cmd')
else
call writefile(['#!/bin/sh', 'echo foo-bar'], l:servers_dir . '/foo-bar/foo-bar')
call setfperm(l:servers_dir . '/foo-bar/foo-bar', 'rwxr-xr-x')
endif
Assert Equals(lsp_settings#executable('foo-bar'), 1)
finally
call delete(l:servers_dir . '/foo-bar', 'rf')
endtry
End
End
Describe lsp_settings#exec_path
It should return full-path to the command
if has('win32')
Assert Equals(empty(lsp_settings#exec_path('cmd')), 0)
else
Assert Equals(empty(lsp_settings#exec_path('sh')), 0)
endif
End
It should return 1 when command is executable in server/foo-bar/foo-bar
let l:servers_dir = lsp_settings#servers_dir()
try
call delete(l:servers_dir . '/foo-bar', 'rf')
call mkdir(l:servers_dir . '/foo-bar', 'p')
if has('win32')
call writefile(['@echo off', 'echo foo-bar'], l:servers_dir . '/foo-bar/foo-bar.cmd')
Assert Equals(lsp_settings#exec_path('foo-bar'), l:servers_dir . '\foo-bar\foo-bar.cmd')
else
call writefile(['#!/bin/sh', 'echo foo-bar'], l:servers_dir . '/foo-bar/foo-bar')
call setfperm(l:servers_dir . '/foo-bar/foo-bar', 'rwxr-xr-x')
Assert Equals(lsp_settings#exec_path('foo-bar'), l:servers_dir . '/foo-bar/foo-bar')
endif
finally
call delete(l:servers_dir . '/foo-bar', 'rf')
endtry
End
End
Describe lsp_settings#init
It should setup commands and autocmds.
call lsp_settings#clear()
call lsp_settings#init()
let g:vim_lsp_settings_filetype_no_delays = 1
autocmd vim_lsp_suggest_python
Assert exists(':LspInstallServer')
delcommand LspInstallServer
Assert !exists('#vim_lsp_suggest_efm_langserver')
for v in filter(split(execute('augroup'), '\s\+'), 'v:val=~"^vim_lsp_"')
exe 'augroup ' . v
silent! autocmd!
augroup END
silent! exe 'augroup! ' . v
endfor
bw!
unlet g:vim_lsp_settings_filetype_no_delays
End
End
Describe lsp_settings#root_path
It should return full-path to the directory that contains one of args
if empty(globpath(&rtp, 'autoload/lsp/utils.vim'))
Skip vim-lsp plugin required, use --runtimepath {path-to-plugin-dir}
endif
let s:_saved_lsp_settings_root_markers = g:lsp_settings_root_markers
let g:lsp_settings_root_markers = []
try
new autoload/testbuffer
Assert Equal(lsp_settings#root_path(['lsp_settings/']), expand('%:p:h'))
Assert Equal(lsp_settings#root_path(['README.md']), expand('%:p:h:h'))
Assert Equal(lsp_settings#root_path(['not exist file name', 'README.md']), expand('%:p:h:h'))
finally
bwipe! autoload/testbuffer
let g:lsp_settings_root_markers = s:_saved_lsp_settings_root_markers
endtry
End
It should return '' when directory not found
if empty(globpath(&rtp, 'autoload/lsp/utils.vim'))
Skip vim-lsp plugin required, use --runtimepath {path-to-plugin-dir}
endif
let s:_saved_lsp_settings_root_markers = g:lsp_settings_root_markers
let g:lsp_settings_root_markers = []
try
new autoload/testbuffer
Assert Empty(lsp_settings#root_path(['not exist file name']))
finally
bwipe! autoload/testbuffer
let g:lsp_settings_root_markers = s:_saved_lsp_settings_root_markers
endtry
End
End
End