" Author: rymdbar Before: call ale#assert#SetUpLinterTest('perl', 'languageserver') After: call ale#assert#TearDownLinterTest() Execute(The default Perl command callback should be correct): AssertLinter 'perl', \ ale#Escape('perl') . ' -MPerl::LanguageServer -ePerl::LanguageServer::run' Execute(Overriding the executable should work): let b:ale_perl_perl_executable = 'plls' AssertLinter 'plls', ale#Escape('plls') . \ ' -MPerl::LanguageServer -ePerl::LanguageServer::run' unlet b:ale_perl_perl_executable Execute(The project root should be detected correctly in from build files): for mod in ['extutils-makemaker', 'module-build', 'dist-zilla'] call ale#test#SetFilename('../test-files/perl/' . mod . '/subdir/empty.pl') AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/perl/' . mod) endfor Execute(The project root should be globally configurable): for mod in ['extutils-makemaker', 'module-build', 'dist-zilla'] call ale#test#SetFilename('../test-files/perl/'. mod . '/subdir/empty.pl') " Configuring g:ale_root using a Dictionary works. let g:ale_root.languageserver = \ ale#path#Simplify(g:dir . '/../test-files/perl') AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/perl') unlet g:ale_root.languageserver " As tracked by , there " is a bug with g:ale_root. " While attempting to configure g:ale_root using a String might be a quite " limiting setup, it would be handy for debugging. However the test case is " missing here. It would unfortunately just fail. endfor Execute(The project root should be per buffer configurable): for mod in ['extutils-makemaker', 'module-build', 'dist-zilla'] call ale#test#SetFilename('../test-files/perl/'. mod . '/subdir/empty.pl') " Configuring b:ale_root using a String works. let b:ale_root = ale#path#Simplify(g:dir . '/../test-files/perl') AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/perl') unlet b:ale_root " Configuring b:ale_root using a Dictionary works. let b:ale_root = { \ 'languageserver': ale#path#Simplify(g:dir . '/../test-files/perl') \ } AssertLSPProject ale#path#Simplify(g:dir . '/../test-files/perl') unlet b:ale_root.languageserver endfor Execute(The LSP values should be set correctly): AssertLSPLanguage 'perl' AssertLSPOptions {} AssertLSPConfig {'perl': {'enable': 1}} Execute(Should accept configuration settings): let b:ale_perl_languageserver_config = { \ 'perl': { \ 'perlInc': ['/usr/share/perl5/', '/usr/local/share/perl5/' ], \ 'fileFilter': [''], \ }, \ } AssertLSPConfig { \ 'perl': { \ 'perlInc': ['/usr/share/perl5/', '/usr/local/share/perl5/' ], \ 'fileFilter': [''], \ }, \ }