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', \ ])