diff options
author | Rafał Cieślak <ravicious@gmail.com> | 2017-04-16 12:45:42 +0200 |
---|---|---|
committer | w0rp <w0rp@users.noreply.github.com> | 2017-04-16 11:45:42 +0100 |
commit | 2643f9f11950ca02824f57b235c7c182c30bca78 (patch) | |
tree | 75b042848b42e99d9a019bbaf54c14e8686ab141 /test/handler | |
parent | e97dada261c4a69f43c5a6c34d349ad6246fe34c (diff) | |
download | ale-2643f9f11950ca02824f57b235c7c182c30bca78.zip |
Flow: Fix case where 1st msg points to different file (#477)
* Flow: Fix case where 1st msg points to different file
* Remove `bufnr` from Flow handler output
* Fix the failing test & add a new one
Diffstat (limited to 'test/handler')
-rw-r--r-- | test/handler/test_flow_handler.vader | 128 |
1 files changed, 116 insertions, 12 deletions
diff --git a/test/handler/test_flow_handler.vader b/test/handler/test_flow_handler.vader index c6b86104..597366f3 100644 --- a/test/handler/test_flow_handler.vader +++ b/test/handler/test_flow_handler.vader @@ -1,4 +1,15 @@ Before: + runtime ale_linters/javascript/flow.vim + +After: + unlet! g:flow_output + unlet! g:expected + unlet! g:actual + call ale#linter#Reset() + +Execute(The flow handler should process errors correctly.): + e! /home/w0rp/Downloads/graphql-js/src/language/parser.js + let g:flow_output = { \ "flowVersion": "0.39.0", \ "errors": [ @@ -100,27 +111,16 @@ Before: \ "passed": v:false \} - runtime ale_linters/javascript/flow.vim - -After: - unlet! g:flow_output - unlet! g:expected - unlet! g:actual - call ale#linter#Reset() - -Execute(The flow handler should process errors correctly.): - let g:actual = ale_linters#javascript#flow#Handle(347, [json_encode(g:flow_output)]) + let g:actual = ale_linters#javascript#flow#Handle(bufnr(''), [json_encode(g:flow_output)]) let g:expected = [ \ { \ 'lnum': 417, - \ 'bufnr': 347, \ 'type': 'E', \ 'col': 10, \ 'text': 'number: This type is incompatible with the expected return type of array type', \ }, \ { \ 'lnum': 419, - \ 'bufnr': 347, \ 'type': 'W', \ 'col': 3, \ 'text': 'unreachable code:', @@ -128,3 +128,107 @@ Execute(The flow handler should process errors correctly.): \] AssertEqual g:expected, g:actual + +Execute(The flow handler should fetch the correct location for the currently opened file, even when it's not in the first message.): + e! /Users/rav/Projects/vim-ale-flow/index.js + + let g:flow_output = { + \ "flowVersion": "0.44.0", + \ "errors": [{ + \ "operation": { + \ "context": " <Foo foo=\"bar\"/>, document.getElementById('foo')", + \ "descr": "React element `Foo`", + \ "type": "Blame", + \ "loc": { + \ "source": "/Users/rav/Projects/vim-ale-flow/index.js", + \ "type": "SourceFile", + \ "start": { + \ "line": 6, + \ "column": 3, + \ "offset": 92 + \ }, + \ "end": { + \ "line": 6, + \ "column": 18, + \ "offset": 108 + \ } + \ }, + \ "path": "/Users/rav/Projects/vim-ale-flow/index.js", + \ "line": 6, + \ "endline": 6, + \ "start": 3, + \ "end": 18 + \ }, + \ "kind": "infer", + \ "level": "error", + \ "message": [{ + \ "context": "module.exports = function(props: Props) {", + \ "descr": "property `bar`", + \ "type": "Blame", + \ "loc": { + \ "source": "/Users/rav/Projects/vim-ale-flow/foo.js", + \ "type": "SourceFile", + \ "start": { + \ "line": 9, + \ "column": 34, + \ "offset": 121 + \ }, + \ "end": { + \ "line": 9, + \ "column": 38, + \ "offset": 126 + \ } + \ }, + \ "path": "/Users/rav/Projects/vim-ale-flow/foo.js", + \ "line": 9, + \ "endline": 9, + \ "start": 34, + \ "end": 38 + \ }, { + \ "context": v:null, + \ "descr": "Property not found in", + \ "type": "Comment", + \ "path": "", + \ "line": 0, + \ "endline": 0, + \ "start": 1, + \ "end": 0 + \ }, { + \ "context": " <Foo foo=\"bar\"/>, document.getElementById('foo')", + \ "descr": "props of React element `Foo`", + \ "type": "Blame", + \ "loc": { + \ "source": "/Users/rav/Projects/vim-ale-flow/index.js", + \ "type": "SourceFile", + \ "start": { + \ "line": 6, + \ "column": 3, + \ "offset": 92 + \ }, + \ "end": { + \ "line": 6, + \ "column": 18, + \ "offset": 108 + \ } + \ }, + \ "path": "/Users/rav/Projects/vim-ale-flow/index.js", + \ "line": 6, + \ "endline": 6, + \ "start": 3, + \ "end": 18 + \ }] + \ }], + \ "passed": v:false + \} + + let g:actual = ale_linters#javascript#flow#Handle(bufnr(''), [json_encode(g:flow_output)]) + let g:expected = [ + \ { + \ 'lnum': 6, + \ 'col': 3, + \ 'type': 'E', + \ 'text': 'property `bar`: Property not found in props of React element `Foo` See also: React element `Foo`' + \ } + \] + + AssertEqual g:expected, g:actual |