+Before:
+ runtime ale_linters/java/javac.vim
+
+ call ale#test#SetDirectory('/testplugin/test')
+ call ale#test#SetFilename('dummy.java')
+
+After:
+ call ale#test#RestoreDirectory()
+ call ale#linter#Reset()
+
+Execute(The javac handler should handle cannot find symbol errors):
+ AssertEqual
+ \ [
+ \ {
+ \ 'filename': ale#path#Simplify('/tmp/vLPr4Q5/33/foo.java'),
+ \ 'lnum': 1,
+ \ 'text': 'error: some error',
+ \ 'type': 'E',
+ \ },
+ \ {
+ \ 'filename': ale#path#Simplify('/tmp/vLPr4Q5/33/foo.java'),
+ \ 'lnum': 2,
+ \ 'col': 5,
+ \ 'text': 'error: cannot find symbol: BadName',
+ \ 'type': 'E',
+ \ },
+ \ {
+ \ 'filename': ale#path#Simplify('/tmp/vLPr4Q5/33/foo.java'),
+ \ 'lnum': 34,
+ \ 'col': 5,
+ \ 'text': 'error: cannot find symbol: BadName2',
+ \ 'type': 'E',
+ \ },
+ \ {
+ \ 'filename': ale#path#Simplify('/tmp/vLPr4Q5/33/foo.java'),
+ \ 'lnum': 37,
+ \ 'text': 'warning: some warning',
+ \ 'type': 'W',
+ \ },
+ \ {
+ \ 'filename': ale#path#Simplify('/tmp/vLPr4Q5/33/foo.java'),
+ \ 'lnum': 42,
+ \ 'col': 11,
+ \ 'text': 'error: cannot find symbol: bar()',
+ \ 'type': 'E',
+ \ },
+ \ {
+ \ 'filename': ale#path#Simplify('/tmp/vLPr4Q5/33/foo.java'),
+ \ 'lnum': 58,
+ \ 'col': 19,
+ \ 'text': 'error: incompatible types: Bar cannot be converted to Foo',
+ \ 'type': 'E',
+ \ },
+ \ ],
+ \ ale_linters#java#javac#Handle(bufnr(''), [
+ \ '/tmp/vLPr4Q5/33/foo.java:1: error: some error',
+ \ '/tmp/vLPr4Q5/33/foo.java:2: error: cannot find symbol',
+ \ ' BadName foo() {',
+ \ ' ^',
+ \ ' symbol: class BadName',
+ \ ' location: class Bar',
+ \ '/tmp/vLPr4Q5/33/foo.java:34: error: cannot find symbol',
+ \ ' BadName2 foo() {',
+ \ ' ^',
+ \ ' symbol: class BadName2',
+ \ ' location: class Bar',
+ \ '/tmp/vLPr4Q5/33/foo.java:37: warning: some warning',
+ \ '/tmp/vLPr4Q5/33/foo.java:42: error: cannot find symbol',
+ \ ' this.bar();',
+ \ ' ^',
+ \ ' symbol: method bar()',
+ \ '/tmp/vLPr4Q5/33/foo.java:58: error: incompatible types: Bar cannot be converted to Foo',
+ \ ' this.setFoo(bar);',
+ \ ' ^',
+ \ '6 errors',
+ \ ])
+
+Execute(The javac handler should resolve files from different directories):
+ AssertEqual
+ \ [
+ \ {
+ \ 'filename': ale#path#Simplify(g:dir . '/Foo.java'),
+ \ 'lnum': 1,
+ \ 'text': 'error: some error',
+ \ 'type': 'E',
+ \ },
+ \ {
+ \ 'filename': ale#path#Simplify(g:dir . '/Bar.java'),
+ \ 'lnum': 1,
+ \ 'text': 'error: some error',
+ \ 'type': 'E',
+ \ },
+ \ ],
+ \ ale_linters#java#javac#Handle(bufnr(''), [
+ \ './Foo.java:1: error: some error',
+ \ './Bar.java:1: error: some error',
+ \ ])