diff --git a/ale_linters/css/csslint.vim b/ale_linters/css/csslint.vim index 39176ce..6b0956e 100644 --- a/ale_linters/css/csslint.vim +++ b/ale_linters/css/csslint.vim @@ -1,9 +1,18 @@ " Author: w0rp " Description: This file adds support for checking CSS code with csslint. +function! ale_linters#css#csslint#GetCommand(buffer) abort + let l:csslintrc = ale#util#FindNearestFile(a:buffer, '.csslintrc') + let l:config_option = !empty(l:csslintrc) + \ ? '--config=' . fnameescape(l:csslintrc) + \ : '' + + return 'csslint --format=compact ' . l:config_option . ' %t' +endfunction + call ale#linter#Define('css', { \ 'name': 'csslint', \ 'executable': 'csslint', -\ 'command': 'csslint --format=compact %t', +\ 'command_callback': 'ale_linters#css#csslint#GetCommand', \ 'callback': 'ale#handlers#HandleCSSLintFormat', \}) diff --git a/test/csslint-test-files/other-app/testfile.css b/test/csslint-test-files/other-app/testfile.css new file mode 100644 index 0000000..e69de29 diff --git a/test/csslint-test-files/some-app/.csslintrc b/test/csslint-test-files/some-app/.csslintrc new file mode 100644 index 0000000..e69de29 diff --git a/test/csslint-test-files/some-app/subdir/testfile.css b/test/csslint-test-files/some-app/subdir/testfile.css new file mode 100644 index 0000000..e69de29 diff --git a/test/test_csslint_config_detection.vader b/test/test_csslint_config_detection.vader new file mode 100644 index 0000000..a06258c --- /dev/null +++ b/test/test_csslint_config_detection.vader @@ -0,0 +1,36 @@ +Before: + silent! cd /testplugin/test + let g:dir = getcwd() + + runtime ale_linters/css/csslint.vim + +After: + silent execute 'cd ' . g:dir + unlet! g:dir + + call ale#linter#Reset() + +Execute(--config should be set when the .csslintrc file is found): + new csslint-test-files/some-app/subdir/testfile.js + + AssertEqual + \ ( + \ 'csslint --format=compact ' + \ . '--config=' . fnameescape(g:dir . '/csslint-test-files/some-app/.csslintrc') + \ . ' %t' + \ ), + \ ale_linters#css#csslint#GetCommand(bufnr('')) + + :q + +Execute(--config should not be used when no .csslintrc file exists): + new csslint-test-files/other-app/testfile.css + + AssertEqual + \ ( + \ 'csslint --format=compact ' + \ . ' %t' + \ ), + \ ale_linters#css#csslint#GetCommand(bufnr('')) + + :q