--- /dev/null
+Before:
+ Save $PATH
+ Save $PATHEXT
+
+ let $PATHEXT = '.'
+
+ call ale#test#SetDirectory('/testplugin/test')
+ runtime ale_linters/kotlin/kotlinc.vim
+
+ let g:command_tail = ' -I ' . ale#Escape(ale#gradle#GetInitPath())
+ \ . ' -q printClasspath'
+
+ let g:gradle_init_path = ale#path#Simplify(g:dir . '../../autoload/ale/gradle/init.gradle')
+
+After:
+ Restore
+
+ unlet! g:gradle_init_path
+ unlet! g:command_tail
+
+ call ale#test#RestoreDirectory()
+ call ale#linter#Reset()
+
+Execute(Should return 'gradlew' command if project includes gradle wapper):
+ call ale#test#SetFilename('test-files/gradle/wrapped-project/src/main/kotlin/dummy.kt')
+
+ AssertEqual
+ \ [
+ \ ale#path#Simplify(g:dir . '/test-files/gradle/wrapped-project'),
+ \ ale#Escape(ale#path#Simplify(g:dir . '/test-files/gradle/wrapped-project/gradlew'))
+ \ . g:command_tail,
+ \ ],
+ \ ale#gradle#BuildClasspathCommand(bufnr(''))
+
+Execute(Should return 'gradle' command if project does not include gradle wapper):
+ call ale#test#SetFilename('test-files/gradle/unwrapped-project/src/main/kotlin/dummy.kt')
+ let $PATH .= (has('win32') ? ';' : ':')
+ \ . ale#path#Simplify(g:dir . '/test-files/gradle')
+
+ AssertEqual
+ \ [
+ \ ale#path#Simplify(g:dir . '/test-files/gradle/unwrapped-project'),
+ \ ale#Escape('gradle') . g:command_tail
+ \ ],
+ \ ale#gradle#BuildClasspathCommand(bufnr(''))
+
+Execute(Should return empty string if gradle cannot be executed):
+ call ale#test#SetFilename('test-files/gradle/non-gradle-project/src/main/kotlin/dummy.kt')
+
+ AssertEqual
+ \ ['', ''],
+ \ ale#gradle#BuildClasspathCommand(bufnr(''))