Before: Save $PATH Save $PATHEXT let $PATHEXT = '.' call ale#test#SetDirectory('/testplugin/test') runtime ale_linters/java/javac.vim let g:expected_wrapper = '' if has('unix') let g:expected_wrapper = 'mvnw' else let g:expected_wrapper = 'mvnw.cmd' endif After: Restore unlet! g:expected_wrapper call ale#test#RestoreDirectory() call ale#linter#Reset() Execute(Should use 'mvnw' in classpath command if available): call ale#test#SetFilename('maven-test-files/maven-java-project/module1/src/main/java/dummy1.java') AssertEqual \ [ \ ale#path#Simplify(g:dir . '/maven-test-files/maven-java-project/module1'), \ ale#Escape(ale#path#Simplify(g:dir . '/maven-test-files/maven-java-project/module1/' . g:expected_wrapper)) \ . ' dependency:build-classpath', \ ], \ ale#maven#BuildClasspathCommand(bufnr('')) Execute(Should use 'mvn' in classpath command if it is executable and 'mvnw' is unavailable): call ale#test#SetFilename('maven-test-files/maven-java-project/module2/src/main/java/dummy2.java') let $PATH .= (has('win32') ? ';' : ':') \ . ale#path#Simplify(g:dir . '/maven-test-files') AssertEqual \ [ \ ale#path#Simplify(g:dir . '/maven-test-files/maven-java-project/module2'), \ ale#Escape('mvn') \ . ' dependency:build-classpath', \ ], \ ale#maven#BuildClasspathCommand(bufnr('')) Execute(Should return empty string if maven cannot be executed): call ale#test#SetFilename('maven-test-files/non-maven-project/src/main/java/dummy.java') AssertEqual \ ['', ''], \ ale#maven#BuildClasspathCommand(bufnr(''))