mirror of
https://github.com/dense-analysis/ale.git
synced 2025-12-06 12:44:23 +08:00
Adding --no-color flag to stylelint args (#5050)
* Adding --no-color flag to sass stylelint * Adding --no-color to all stylelint args * Adding --no-color expectation to stylelint tests * Properly handling SyntaxError for stylelint; adding corresponding test * Fixing CSS stylelint parameters and adding regression test
This commit is contained in:
@@ -6,7 +6,7 @@ call ale#Set('css_stylelint_use_global', get(g:, 'ale_use_global_executables', 0
|
|||||||
|
|
||||||
function! ale_linters#css#stylelint#GetCommand(buffer) abort
|
function! ale_linters#css#stylelint#GetCommand(buffer) abort
|
||||||
return '%e ' . ale#Pad(ale#Var(a:buffer, 'css_stylelint_options'))
|
return '%e ' . ale#Pad(ale#Var(a:buffer, 'css_stylelint_options'))
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('css', {
|
call ale#linter#Define('css', {
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ function! ale_linters#html#stylelint#GetCommand(buffer) abort
|
|||||||
|
|
||||||
return ale#Escape(l:executable)
|
return ale#Escape(l:executable)
|
||||||
\ . (!empty(l:options) ? ' ' . l:options : '')
|
\ . (!empty(l:options) ? ' ' . l:options : '')
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('html', {
|
call ale#linter#Define('html', {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ call ale#Set('less_stylelint_use_global', get(g:, 'ale_use_global_executables',
|
|||||||
function! ale_linters#less#stylelint#GetCommand(buffer) abort
|
function! ale_linters#less#stylelint#GetCommand(buffer) abort
|
||||||
let l:options = ale#Var(a:buffer, 'less_stylelint_options')
|
let l:options = ale#Var(a:buffer, 'less_stylelint_options')
|
||||||
|
|
||||||
return '%e' . ale#Pad(l:options) . ' --stdin-filename %s'
|
return '%e' . ale#Pad(l:options) . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('less', {
|
call ale#linter#Define('less', {
|
||||||
|
|||||||
@@ -9,6 +9,6 @@ call ale#linter#Define('sass', {
|
|||||||
\ 'executable': {b -> ale#path#FindExecutable(b, 'sass_stylelint', [
|
\ 'executable': {b -> ale#path#FindExecutable(b, 'sass_stylelint', [
|
||||||
\ 'node_modules/.bin/stylelint',
|
\ 'node_modules/.bin/stylelint',
|
||||||
\ ])},
|
\ ])},
|
||||||
\ 'command': '%e --stdin-filename %s',
|
\ 'command': '%e --no-color --stdin-filename %s',
|
||||||
\ 'callback': 'ale#handlers#css#HandleStyleLintFormat',
|
\ 'callback': 'ale#handlers#css#HandleStyleLintFormat',
|
||||||
\})
|
\})
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ call ale#Set('scss_stylelint_use_global', get(g:, 'ale_use_global_executables',
|
|||||||
|
|
||||||
function! ale_linters#scss#stylelint#GetCommand(buffer) abort
|
function! ale_linters#scss#stylelint#GetCommand(buffer) abort
|
||||||
return '%e ' . ale#Pad(ale#Var(a:buffer, 'scss_stylelint_options'))
|
return '%e ' . ale#Pad(ale#Var(a:buffer, 'scss_stylelint_options'))
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('scss', {
|
call ale#linter#Define('scss', {
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ call ale#Set('stylus_stylelint_use_global', get(g:, 'ale_use_global_executables'
|
|||||||
function! ale_linters#stylus#stylelint#GetCommand(buffer) abort
|
function! ale_linters#stylus#stylelint#GetCommand(buffer) abort
|
||||||
return '%e'
|
return '%e'
|
||||||
\ . ale#Pad(ale#Var(a:buffer, 'stylus_stylelint_options'))
|
\ . ale#Pad(ale#Var(a:buffer, 'stylus_stylelint_options'))
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('stylus', {
|
call ale#linter#Define('stylus', {
|
||||||
|
|||||||
@@ -8,7 +8,7 @@ call ale#Set('sugarss_stylelint_use_global', get(g:, 'ale_use_global_executables
|
|||||||
function! ale_linters#sugarss#stylelint#GetCommand(buffer) abort
|
function! ale_linters#sugarss#stylelint#GetCommand(buffer) abort
|
||||||
return '%e ' . ale#Pad(ale#Var(a:buffer, 'sugarss_stylelint_options'))
|
return '%e ' . ale#Pad(ale#Var(a:buffer, 'sugarss_stylelint_options'))
|
||||||
\ . ' --syntax=sugarss'
|
\ . ' --syntax=sugarss'
|
||||||
\ . ' --stdin-filename %s'
|
\ . ' --no-color --stdin-filename %s'
|
||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
call ale#linter#Define('sugarss', {
|
call ale#linter#Define('sugarss', {
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ function! ale#fixers#stylelint#Fix(buffer) abort
|
|||||||
\ 'cwd': '%s:h',
|
\ 'cwd': '%s:h',
|
||||||
\ 'command': ale#node#Executable(a:buffer, l:executable)
|
\ 'command': ale#node#Executable(a:buffer, l:executable)
|
||||||
\ . ale#Pad(l:options)
|
\ . ale#Pad(l:options)
|
||||||
\ . ' --fix --stdin --stdin-filename %s',
|
\ . ' --fix --stdin --no-color --stdin-filename %s',
|
||||||
\ 'read_temporary_file': 0,
|
\ 'read_temporary_file': 0,
|
||||||
\}
|
\}
|
||||||
endfunction
|
endfunction
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ function! ale#handlers#css#HandleCSSLintFormat(buffer, lines) abort
|
|||||||
endfunction
|
endfunction
|
||||||
|
|
||||||
function! ale#handlers#css#HandleStyleLintFormat(buffer, lines) abort
|
function! ale#handlers#css#HandleStyleLintFormat(buffer, lines) abort
|
||||||
let l:exception_pattern = '\v^Error:'
|
let l:exception_pattern = '\v^(Syntax)?Error:'
|
||||||
|
|
||||||
for l:line in a:lines[:10]
|
for l:line in a:lines[:10]
|
||||||
if len(matchlist(l:line, l:exception_pattern)) > 0
|
if len(matchlist(l:line, l:exception_pattern)) > 0
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ Execute(The stylelint callback should return the correct default values):
|
|||||||
\ 'cwd': '%s:h',
|
\ 'cwd': '%s:h',
|
||||||
\ 'command': (has('win32') ? 'node.exe ' : '')
|
\ 'command': (has('win32') ? 'node.exe ' : '')
|
||||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js'))
|
\ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js'))
|
||||||
\ . ' --fix --stdin --stdin-filename %s',
|
\ . ' --fix --stdin --no-color --stdin-filename %s',
|
||||||
\ }
|
\ }
|
||||||
|
|
||||||
Execute(The stylelint callback should include custom stylelint options):
|
Execute(The stylelint callback should include custom stylelint options):
|
||||||
@@ -30,5 +30,5 @@ Execute(The stylelint callback should include custom stylelint options):
|
|||||||
\ 'cwd': '%s:h',
|
\ 'cwd': '%s:h',
|
||||||
\ 'command': (has('win32') ? 'node.exe ' : '')
|
\ 'command': (has('win32') ? 'node.exe ' : '')
|
||||||
\ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js'))
|
\ . ale#Escape(ale#path#Simplify(g:dir . '/../test-files/eslint/react-app/node_modules/stylelint/bin/stylelint.js'))
|
||||||
\ . ' --cache --fix --stdin --stdin-filename %s',
|
\ . ' --cache --fix --stdin --no-color --stdin-filename %s',
|
||||||
\ }
|
\ }
|
||||||
|
|||||||
@@ -41,3 +41,26 @@ Execute (stylelint should complain when no configuration file is used):
|
|||||||
\ 'detail': join(g:error_lines, "\n"),
|
\ 'detail': join(g:error_lines, "\n"),
|
||||||
\ }],
|
\ }],
|
||||||
\ ale#handlers#css#HandleStyleLintFormat(347, g:error_lines[:])
|
\ ale#handlers#css#HandleStyleLintFormat(347, g:error_lines[:])
|
||||||
|
|
||||||
|
Execute (stylelint should complain but not blow up when SyntaxError is encountered):
|
||||||
|
let g:error_lines = [
|
||||||
|
\ 'SyntaxError: Unexpected token, expected "," (136:4)',
|
||||||
|
\ ' at constructor (/home/ts-project/node_modules/@babel/parser/lib/index.js:367:19)',
|
||||||
|
\ ' at TypeScriptParserMixin.raise (/home/ts-project/node_modules/@babel/parser/lib/index.js:6630:19)',
|
||||||
|
\ ' at TypeScriptParserMixin.unexpected (/home/ts-project/node_modules/@babel/parser/lib/index.js:6650:16)',
|
||||||
|
\ ' at TypeScriptParserMixin.expect (/home/ts-project/node_modules/@babel/parser/lib/index.js:6930:12)',
|
||||||
|
\ ' at TypeScriptParserMixin.tsParseDelimitedListWorker (/home/ts-project/node_modules/@babel/parser/lib/index.js:7932:14)',
|
||||||
|
\ ' at TypeScriptParserMixin.tsParseDelimitedList (/home/ts-project/node_modules/@babel/parser/lib/index.js:7909:25)',
|
||||||
|
\ ' at /home/ts-project/node_modules/@babel/parser/lib/index.js:9170:19',
|
||||||
|
\ ' at TypeScriptParserMixin.tsInTopLevelContext (/home/ts-project/node_modules/@babel/parser/lib/index.js:8834:14)',
|
||||||
|
\ ' at /home/ts-project/node_modules/@babel/parser/lib/index.js:9168:44',
|
||||||
|
\ ' at TypeScriptParserMixin.tsInType (/home/ts-project/node_modules/@babel/parser/lib/index.js:8841:14)',
|
||||||
|
\]
|
||||||
|
|
||||||
|
AssertEqual
|
||||||
|
\ [{
|
||||||
|
\ 'lnum': 1,
|
||||||
|
\ 'text': 'stylelint exception thrown (type :ALEDetail for more information)',
|
||||||
|
\ 'detail': join(g:error_lines, "\n"),
|
||||||
|
\ }],
|
||||||
|
\ ale#handlers#css#HandleStyleLintFormat(347, g:error_lines[:])
|
||||||
|
|||||||
33
test/linter/test_css_stylelint.vader
Normal file
33
test/linter/test_css_stylelint.vader
Normal file
@@ -0,0 +1,33 @@
|
|||||||
|
Before:
|
||||||
|
call ale#assert#SetUpLinterTest('css', 'stylelint')
|
||||||
|
unlet! b:executable
|
||||||
|
|
||||||
|
After:
|
||||||
|
unlet! b:executable
|
||||||
|
call ale#assert#TearDownLinterTest()
|
||||||
|
|
||||||
|
Execute(node_modules directories should be discovered):
|
||||||
|
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.css')
|
||||||
|
|
||||||
|
let b:executable = ale#path#Simplify(
|
||||||
|
\ g:dir
|
||||||
|
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
||||||
|
\)
|
||||||
|
|
||||||
|
AssertLinter b:executable, ale#Escape(b:executable) . ' --no-color --stdin-filename %s'
|
||||||
|
|
||||||
|
Execute(The global override should work):
|
||||||
|
let b:ale_css_stylelint_executable = 'foobar'
|
||||||
|
let b:ale_css_stylelint_use_global = 1
|
||||||
|
|
||||||
|
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.css')
|
||||||
|
|
||||||
|
AssertLinter 'foobar', ale#Escape('foobar') . ' --no-color --stdin-filename %s'
|
||||||
|
|
||||||
|
Execute(Extra options should be configurable):
|
||||||
|
call ale#test#SetFilename('../test-files/dummy')
|
||||||
|
|
||||||
|
let b:ale_css_stylelint_options = '--configFile ''/absolute/path/to/file'''
|
||||||
|
|
||||||
|
AssertLinter 'stylelint',
|
||||||
|
\ ale#Escape('stylelint') . ' --configFile ''/absolute/path/to/file'' --no-color --stdin-filename %s'
|
||||||
@@ -37,7 +37,7 @@ Execute(node_modules directories should be discovered):
|
|||||||
|
|
||||||
AssertEqual b:executable, ale_linters#html#stylelint#GetExecutable(bufnr(''))
|
AssertEqual b:executable, ale_linters#html#stylelint#GetExecutable(bufnr(''))
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ ale#Escape(b:executable) . ' --stdin-filename %s',
|
\ ale#Escape(b:executable) . ' --no-color --stdin-filename %s',
|
||||||
\ ale_linters#html#stylelint#GetCommand(bufnr(''))
|
\ ale_linters#html#stylelint#GetCommand(bufnr(''))
|
||||||
|
|
||||||
Execute(The global override should work):
|
Execute(The global override should work):
|
||||||
@@ -48,7 +48,7 @@ Execute(The global override should work):
|
|||||||
|
|
||||||
AssertEqual 'foobar', ale_linters#html#stylelint#GetExecutable(bufnr(''))
|
AssertEqual 'foobar', ale_linters#html#stylelint#GetExecutable(bufnr(''))
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ ale#Escape('foobar') . ' --stdin-filename %s',
|
\ ale#Escape('foobar') . ' --no-color --stdin-filename %s',
|
||||||
\ ale_linters#html#stylelint#GetCommand(bufnr(''))
|
\ ale_linters#html#stylelint#GetCommand(bufnr(''))
|
||||||
|
|
||||||
Execute(Extra options should be configurable):
|
Execute(Extra options should be configurable):
|
||||||
@@ -56,5 +56,5 @@ Execute(Extra options should be configurable):
|
|||||||
|
|
||||||
AssertEqual 'stylelint', ale_linters#html#stylelint#GetExecutable(bufnr(''))
|
AssertEqual 'stylelint', ale_linters#html#stylelint#GetExecutable(bufnr(''))
|
||||||
AssertEqual
|
AssertEqual
|
||||||
\ ale#Escape('stylelint') . ' --whatever --stdin-filename %s',
|
\ ale#Escape('stylelint') . ' --whatever --no-color --stdin-filename %s',
|
||||||
\ ale_linters#html#stylelint#GetCommand(bufnr(''))
|
\ ale_linters#html#stylelint#GetCommand(bufnr(''))
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Execute(node_modules directories should be discovered):
|
|||||||
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
||||||
\)
|
\)
|
||||||
|
|
||||||
AssertLinter b:executable, ale#Escape(b:executable) . ' --stdin-filename %s'
|
AssertLinter b:executable, ale#Escape(b:executable) . ' --no-color --stdin-filename %s'
|
||||||
|
|
||||||
Execute(The global override should work):
|
Execute(The global override should work):
|
||||||
let b:ale_less_stylelint_executable = 'foobar'
|
let b:ale_less_stylelint_executable = 'foobar'
|
||||||
@@ -22,11 +22,11 @@ Execute(The global override should work):
|
|||||||
|
|
||||||
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.less')
|
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.less')
|
||||||
|
|
||||||
AssertLinter 'foobar', ale#Escape('foobar') . ' --stdin-filename %s'
|
AssertLinter 'foobar', ale#Escape('foobar') . ' --no-color --stdin-filename %s'
|
||||||
|
|
||||||
Execute(Extra options should be configurable):
|
Execute(Extra options should be configurable):
|
||||||
let b:ale_less_stylelint_options = '--whatever'
|
let b:ale_less_stylelint_options = '--whatever'
|
||||||
call ale#test#SetFilename('../test-files/dummy')
|
call ale#test#SetFilename('../test-files/dummy')
|
||||||
|
|
||||||
AssertLinter 'stylelint',
|
AssertLinter 'stylelint',
|
||||||
\ ale#Escape('stylelint') . ' --whatever --stdin-filename %s'
|
\ ale#Escape('stylelint') . ' --whatever --no-color --stdin-filename %s'
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Execute(node_modules directories should be discovered):
|
|||||||
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
||||||
\)
|
\)
|
||||||
|
|
||||||
AssertLinter b:executable, ale#Escape(b:executable) . ' --stdin-filename %s'
|
AssertLinter b:executable, ale#Escape(b:executable) . ' --no-color --stdin-filename %s'
|
||||||
|
|
||||||
Execute(The global override should work):
|
Execute(The global override should work):
|
||||||
let b:ale_scss_stylelint_executable = 'foobar'
|
let b:ale_scss_stylelint_executable = 'foobar'
|
||||||
@@ -22,7 +22,7 @@ Execute(The global override should work):
|
|||||||
|
|
||||||
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.scss')
|
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.scss')
|
||||||
|
|
||||||
AssertLinter 'foobar', ale#Escape('foobar') . ' --stdin-filename %s'
|
AssertLinter 'foobar', ale#Escape('foobar') . ' --no-color --stdin-filename %s'
|
||||||
|
|
||||||
Execute(Extra options should be configurable):
|
Execute(Extra options should be configurable):
|
||||||
call ale#test#SetFilename('../test-files/dummy')
|
call ale#test#SetFilename('../test-files/dummy')
|
||||||
@@ -30,4 +30,4 @@ Execute(Extra options should be configurable):
|
|||||||
let b:ale_scss_stylelint_options = '--configFile ''/absolute/path/to/file'''
|
let b:ale_scss_stylelint_options = '--configFile ''/absolute/path/to/file'''
|
||||||
|
|
||||||
AssertLinter 'stylelint',
|
AssertLinter 'stylelint',
|
||||||
\ ale#Escape('stylelint') . ' --configFile ''/absolute/path/to/file'' --stdin-filename %s'
|
\ ale#Escape('stylelint') . ' --configFile ''/absolute/path/to/file'' --no-color --stdin-filename %s'
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ Execute(node_modules directories should be discovered):
|
|||||||
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
\ . '/../test-files/stylelint/node_modules/.bin/stylelint'
|
||||||
\)
|
\)
|
||||||
|
|
||||||
AssertLinter b:executable, ale#Escape(b:executable) . ' --syntax=sugarss --stdin-filename %s'
|
AssertLinter b:executable, ale#Escape(b:executable) . ' --syntax=sugarss --no-color --stdin-filename %s'
|
||||||
|
|
||||||
Execute(The global override should work):
|
Execute(The global override should work):
|
||||||
let b:ale_sugarss_stylelint_executable = 'foobar'
|
let b:ale_sugarss_stylelint_executable = 'foobar'
|
||||||
@@ -22,7 +22,7 @@ Execute(The global override should work):
|
|||||||
|
|
||||||
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.sss')
|
call ale#test#SetFilename('../test-files/stylelint/nested/testfile.sss')
|
||||||
|
|
||||||
AssertLinter 'foobar', ale#Escape('foobar') . ' --syntax=sugarss --stdin-filename %s'
|
AssertLinter 'foobar', ale#Escape('foobar') . ' --syntax=sugarss --no-color --stdin-filename %s'
|
||||||
|
|
||||||
Execute(Extra options should be configurable):
|
Execute(Extra options should be configurable):
|
||||||
call ale#test#SetFilename('../test-files/dummy')
|
call ale#test#SetFilename('../test-files/dummy')
|
||||||
@@ -30,4 +30,4 @@ Execute(Extra options should be configurable):
|
|||||||
let b:ale_sugarss_stylelint_options = '--configFile ''/absolute/path/to/file'''
|
let b:ale_sugarss_stylelint_options = '--configFile ''/absolute/path/to/file'''
|
||||||
|
|
||||||
AssertLinter 'stylelint',
|
AssertLinter 'stylelint',
|
||||||
\ ale#Escape('stylelint') . ' --configFile ''/absolute/path/to/file'' --syntax=sugarss --stdin-filename %s'
|
\ ale#Escape('stylelint') . ' --configFile ''/absolute/path/to/file'' --syntax=sugarss --no-color --stdin-filename %s'
|
||||||
|
|||||||
Reference in New Issue
Block a user