mirror of
https://github.com/dense-analysis/ale.git
synced 2026-01-03 10:03:47 +08:00
Updated solhint linter to be able to use a local installation (#3682)
* fix: added support for local solhint executable * feat: added support for matching parse errors * test: added test for solhint command callback and handler * chore: removed command callback test * refactor: made solhint handler structure closer to eslint
This commit is contained in:
committed by
GitHub
parent
1cd0c0c33b
commit
1c90d8c018
@@ -4,7 +4,7 @@ Before:
|
||||
After:
|
||||
call ale#linter#Reset()
|
||||
|
||||
Execute(The vint handler should parse error messages correctly):
|
||||
Execute(The solhint handler should parse linter error messages correctly):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {
|
||||
@@ -50,7 +50,7 @@ Execute(The vint handler should parse error messages correctly):
|
||||
\ 'type': 'E',
|
||||
\ },
|
||||
\ ],
|
||||
\ ale_linters#solidity#solhint#Handle(bufnr(''), [
|
||||
\ ale#handlers#solhint#Handle(bufnr(''), [
|
||||
\ 'contracts/Bounty.sol: line 1, col 17, Warning - Compiler version must be fixed (compiler-fixed)',
|
||||
\ 'contracts/Bounty.sol: line 4, col 8, Error - Use double quotes for string literals (quotes)',
|
||||
\ 'contracts/Bounty.sol: line 5, col 8, Error - Use double quotes for string literals (quotes)',
|
||||
@@ -58,3 +58,27 @@ Execute(The vint handler should parse error messages correctly):
|
||||
\ 'contracts/Bounty.sol: line 14, col 3, Error - Expected indentation of 4 spaces but found 2 (indent)',
|
||||
\ 'contracts/Bounty.sol: line 47, col 3, Error - Function order is incorrect, public function can not go after internal function. (func-order)',
|
||||
\ ])
|
||||
|
||||
|
||||
Execute(The solhint handler should parse syntax error messages correctly):
|
||||
AssertEqual
|
||||
\ [
|
||||
\ {
|
||||
\ 'lnum': 30,
|
||||
\ 'col': 4,
|
||||
\ 'text': "missing ';' at 'uint248'",
|
||||
\ 'code': 'Parse error',
|
||||
\ 'type': 'E',
|
||||
\ },
|
||||
\ {
|
||||
\ 'lnum': 203,
|
||||
\ 'col': 4,
|
||||
\ 'text': "no viable alternative at input '_loserStakeMultiplier}'",
|
||||
\ 'code': 'Parse error',
|
||||
\ 'type': 'E',
|
||||
\ },
|
||||
\ ],
|
||||
\ ale#handlers#solhint#Handle(bufnr(''), [
|
||||
\ "contracts/Bounty.sol: line 30, col 4, Error - Parse error: missing ';' at 'uint248'",
|
||||
\ "contracts/Bounty.sol: line 203, col 4, Error - Parse error: no viable alternative at input '_loserStakeMultiplier}'",
|
||||
\ ])
|
||||
|
||||
28
test/linter/test_solhint.vader
Normal file
28
test/linter/test_solhint.vader
Normal file
@@ -0,0 +1,28 @@
|
||||
Before:
|
||||
call ale#assert#SetUpLinterTest('solidity', 'solhint')
|
||||
runtime autoload/ale/handlers/solhint.vim
|
||||
|
||||
let b:args = ' --formatter compact %s'
|
||||
|
||||
After:
|
||||
unlet! b:args
|
||||
unlet! b:executable
|
||||
call ale#assert#TearDownLinterTest()
|
||||
|
||||
Execute(The default command should be correct):
|
||||
AssertLinterCwd ''
|
||||
AssertLinter 'solhint', ale#Escape('solhint') . b:args
|
||||
|
||||
Execute(The options should be configurable):
|
||||
let g:ale_solidity_solhint_options = '--foobar'
|
||||
|
||||
AssertLinter 'solhint', ale#Escape('solhint') . ' --foobar' . b:args
|
||||
|
||||
|
||||
Execute(solhint should be run from a containing project with solhint executable):
|
||||
call ale#test#SetFilename('../test-files/solhint/Contract.sol')
|
||||
|
||||
let b:executable = ale#path#Simplify(g:dir . '/../test-files/solhint/node_modules/.bin/solhint')
|
||||
|
||||
AssertLinterCwd ale#path#Simplify(g:dir . '/../test-files/solhint')
|
||||
AssertLinter b:executable, ale#Escape(b:executable) . b:args
|
||||
0
test/test-files/solhint/Contract.sol
Normal file
0
test/test-files/solhint/Contract.sol
Normal file
0
test/test-files/solhint/node_modules/.bin/solhint
generated
vendored
Normal file
0
test/test-files/solhint/node_modules/.bin/solhint
generated
vendored
Normal file
0
test/test-files/solhint/node_modules/solhint/index.js
generated
vendored
Normal file
0
test/test-files/solhint/node_modules/solhint/index.js
generated
vendored
Normal file
0
test/test-files/solhint/package.json
Normal file
0
test/test-files/solhint/package.json
Normal file
Reference in New Issue
Block a user