summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorBjorn Neergaard <bjorn@neersighted.com>2016-10-21 21:02:20 -0500
committerBjorn Neergaard <bjorn@neersighted.com>2016-10-21 21:02:20 -0500
commitf49f615ef647fdd33d82dc6d2646cd70367f7426 (patch)
treea7df71e177c3884b845d6599813fd9fbb7a8c014 /test
parent216eadbcbead15613e1725aa023bbcfd014b7573 (diff)
downloadale-f49f615ef647fdd33d82dc6d2646cd70367f7426.zip
Add support for dot-seperate linters, improve linter tests
This PR first and formost implements support for dot-seperate filetypes, a very trivial change. This closes #132 But more importantly, this PR vastly improves the test quality for `ale#linter#Get`. It enables us to reset the state of ale's internal linter cache, to facilitate better testing, as well as making use of mocked linters instead of depending on linters on disk (which may change). In addition, a dummy linter is defined to test the autoloading behavior. Header guards were removed from all linters as: * A: ale won't try and load linters if they already exist in memory * B: we can't reset state for testing if they can't be loaded again
Diffstat (limited to 'test')
-rw-r--r--test/test_ale_linter_get.vader48
-rw-r--r--test/test_ale_statusline.vader2
2 files changed, 37 insertions, 13 deletions
diff --git a/test/test_ale_linter_get.vader b/test/test_ale_linter_get.vader
index a6207c01..c8f67cb8 100644
--- a/test/test_ale_linter_get.vader
+++ b/test/test_ale_linter_get.vader
@@ -1,19 +1,43 @@
Before:
- let g:ale_linters = {}
- let g:ale_linter_aliases = {}
+ let g:testlinter1 = {'name': 'testlinter1', 'executable': 'testlinter1', 'command': 'testlinter1', 'callback': 'testCB1', 'output_stream': 'stdout'}
+ let g:testlinter2 = {'name': 'testlinter2', 'executable': 'testlinter2', 'command': 'testlinter2', 'callback': 'testCB2', 'output_stream': 'stdout'}
-After:
+ call ale#linter#Reset()
let g:ale_linters = {}
let g:ale_linter_aliases = {}
-Execute (Defaults should be correct):
- AssertEqual [{'output_stream': 'stdout', 'name': 'eslint', 'executable': 'eslint', 'command': 'eslint -f unix --stdin --stdin-filename %s', 'callback': 'ale_linters#javascript#eslint#Handle'}, {'output_stream': 'stdout', 'name': 'jscs', 'executable': 'jscs', 'command': 'jscs -r unix -n -', 'callback': 'ale#handlers#HandleUnixFormatAsError'}, {'output_stream': 'stdout', 'name': 'jshint', 'executable': 'jshint', 'command_callback': 'ale_linters#javascript#jshint#GetCommand', 'callback': 'ale#handlers#HandleUnixFormatAsError'}], ale#linter#Get('javascript')
+Execute (Define a linter):
+ call ale#linter#Define('testft', g:testlinter1)
+Then (Get the defined linter):
+ AssertEqual [g:testlinter1], ale#linter#Get('testft')
+
+Execute (Define a couple linters, filtering one.):
+ call ale#linter#Define('testft', g:testlinter1)
+ call ale#linter#Define('testft', g:testlinter2)
+ let g:ale_linters = {'testft': ['testlinter1']}
+Then (Only the configured linter should be returned):
+ AssertEqual [g:testlinter1], ale#linter#Get('testft')
+
+Execute (Define a linter for a filetype, and create a filetype alias):
+ call ale#linter#Define('testft1', g:testlinter1)
+ let g:ale_linter_aliases = {'testft2': 'testft1'}
+Then (Linters should be transparently aliased):
+ AssertEqual [g:testlinter1], ale#linter#Get('testft2')
+
+Execute (Define multiple linters, with filters and aliases):
+ call ale#linter#Define('testft1', g:testlinter1)
+ call ale#linter#Define('testft1', g:testlinter2)
+ let g:ale_linters = {'testft1': ['testlinter1'], 'testft2': ['testlinter2']}
+ let g:ale_linter_aliases = {'testft2': 'testft1'}
+Then (Linters should be transparently filtered and aliased):
+ AssertEqual [g:testlinter1], ale#linter#Get('testft1')
+ AssertEqual [g:testlinter2], ale#linter#Get('testft2')
-Execute (You should be able to select only a few linters):
- let g:ale_linters = {'javascript': ['eslint']}
- AssertEqual [{'output_stream': 'stdout', 'name': 'eslint', 'executable': 'eslint', 'command': 'eslint -f unix --stdin --stdin-filename %s', 'callback': 'ale_linters#javascript#eslint#Handle'}], ale#linter#Get('javascript')
+Execute (Define multiple linters for different filetypes):
+ call ale#linter#Define('testft1', g:testlinter1)
+ call ale#linter#Define('testft2', g:testlinter2)
+Then (Linters for dot-seperated filetypes should be properly handled):
+ AssertEqual [g:testlinter1, g:testlinter2], ale#linter#Get('testft1.testft2')
-Execute (You should be able to alias filetypes and select different linters):
- let g:ale_linter_aliases = {'foobar': 'javascript'}
- let g:ale_linters = {'javascript': ['eslint'], 'foobar': ['jshint']}
- AssertEqual [{'output_stream': 'stdout', 'name': 'jshint', 'executable': 'jshint', 'command_callback': 'ale_linters#javascript#jshint#GetCommand', 'callback': 'ale#handlers#HandleUnixFormatAsError'}], ale#linter#Get('foobar')
+Execute (Try to load a linter from disk):
+ AssertEqual [{'name': 'testlinter', 'output_stream': 'stdout', 'executable': 'testlinter', 'command': 'testlinter', 'callback': 'testCB'}], ale#linter#Get('testft')
diff --git a/test/test_ale_statusline.vader b/test/test_ale_statusline.vader
index 9866a75a..8fa8aaab 100644
--- a/test/test_ale_statusline.vader
+++ b/test/test_ale_statusline.vader
@@ -52,7 +52,7 @@ Execute (Given some warnings):
Then (Statusline is formatted to the users preference):
AssertEqual '3W', ale#statusline#Status()
-Execute (Given some warnings, and errors.):
+Execute (Given some warnings, and errors):
call ale#statusline#Update(bufnr('%'), [{'type': 'E'}, {'type': 'W'}, {'type': 'W'}])
Then (Statusline is formatted to the users preference):