mirror of https://github.com/dense-analysis/ale
Update project root detection for erlang_ls linter (#4619)
* Refactor erlang_ls linter tests * Add Rebar3 _checkouts support for erlang_ls linter * Add Erlang.mk support for erlang_ls linter
This commit is contained in:
parent
8b8ddea6e5
commit
1c5b84f375
|
@ -21,7 +21,14 @@ function! s:GetCommand(buffer) abort
|
|||
endfunction
|
||||
|
||||
function! s:FindProjectRoot(buffer) abort
|
||||
let l:markers = ['_build/', 'erlang_ls.config', 'rebar.lock']
|
||||
let l:markers = [
|
||||
\ '_checkouts/',
|
||||
\ '_build/',
|
||||
\ 'deps/',
|
||||
\ 'erlang_ls.config',
|
||||
\ 'rebar.lock',
|
||||
\ 'erlang.mk',
|
||||
\]
|
||||
|
||||
" This is a way to find Erlang/OTP root (the one that is managed
|
||||
" by kerl or asdf). Useful if :ALEGoToDefinition takes us there.
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
Before:
|
||||
let b:files = '../test-files/erlang'
|
||||
call ale#assert#SetUpLinterTest('erlang', 'erlang_ls')
|
||||
|
||||
After:
|
||||
unlet! b:root
|
||||
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default command should be correct):
|
||||
|
@ -30,19 +31,40 @@ Execute(Log directory should be configurable):
|
|||
\ . ' --log-level=' . ale#Escape('info')
|
||||
|
||||
Execute(Project root should be detected using erlang_ls.config):
|
||||
call ale#test#SetFilename(b:files . '/app_with_erlang_ls_config/src/app.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:files . '/app_with_erlang_ls_config')
|
||||
let b:root = '../test-files/erlang/app_with_erlang_ls_config'
|
||||
|
||||
call ale#test#SetFilename(b:files . '/app_with_erlang_ls_config/_build/default/lib/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:files . '/app_with_erlang_ls_config')
|
||||
call ale#test#SetFilename(b:root . '/src/app.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
call ale#test#SetFilename(b:root . '/_build/default/lib/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
call ale#test#SetFilename(b:root . '/deps/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
Execute(Root of Rebar3 project should be detected):
|
||||
call ale#test#SetFilename(b:files . '/app/src/app.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:files . '/app')
|
||||
let b:root = '../test-files/erlang/rebar3_app'
|
||||
|
||||
call ale#test#SetFilename(b:files . '/app/_build/default/lib/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:files . '/app')
|
||||
call ale#test#SetFilename(b:root . '/src/app.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
call ale#test#SetFilename(b:root . '/_build/default/lib/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
call ale#test#SetFilename(b:root . '/_checkouts/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
Execute(Root of Erlang.mk project should be detected):
|
||||
let b:root = '../test-files/erlang/erlang_mk_app'
|
||||
|
||||
call ale#test#SetFilename(b:root . '/src/app.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
call ale#test#SetFilename(b:root . '/deps/dep/src/dep.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
||||
Execute(Root of kerl managed Erlang/OTP installation should be detected):
|
||||
call ale#test#SetFilename(b:files . '/kerl_otp_root/lib/stdlib-4.1.1/array.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:files . '/kerl_otp_root')
|
||||
let b:root = '../test-files/erlang/kerl_otp_root'
|
||||
|
||||
call ale#test#SetFilename(b:root . '/lib/stdlib-4.1.1/array.erl')
|
||||
AssertLSPProject ale#test#GetFilename(b:root)
|
||||
|
|
Loading…
Reference in New Issue