All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@git.madduck.net.
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
2 call ale#assert#SetUpLinterTest('java', 'javac')
3 call ale#test#SetFilename('dummy.java')
5 let g:cp_sep = has('unix') ? ':' : ';'
6 let g:prefix = ale#Escape('javac') . ' -Xlint'
8 function! GetCommand(previous_output) abort
9 let l:command = ale_linters#java#javac#GetCommand(
14 let l:split_command = split(l:command)
15 let l:index = index(l:split_command, '-d')
17 let l:split_command[l:index + 1] = 'TEMP'
19 return join(l:split_command)
26 delfunction GetCommand
28 call ale#assert#TearDownLinterTest()
30 Execute(The javac callback should return the correct default value):
31 AssertLinterCwd '%s:h'
32 AssertLinter 'javac', g:prefix . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
34 Execute(The javac callback should use string type g:ale_java_javac_classpath correctly):
35 let g:ale_java_javac_classpath = 'foo.jar'
39 \ . ' -cp ' . ale#Escape('foo.jar')
40 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
42 Execute(The javac callback should use list type g:ale_java_javac_classpath correctly):
43 let g:ale_java_javac_classpath = ['foo.jar']
47 \ . ' -cp ' . ale#Escape('foo.jar')
48 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
50 Execute(The executable should be configurable):
51 let g:ale_java_javac_executable = 'foobar'
53 AssertLinter 'foobar',
54 \ ale#Escape('foobar') . ' -Xlint'
55 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
57 Execute(The javac callback should include discovered classpaths):
58 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
59 \ '[DEBUG] Ignore this.',
60 \ '[INFO] Something we should ignore.',
68 \ . ale#Escape(join(['/foo/bar.jar', '/xyz/abc.jar'], g:cp_sep))
69 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
70 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
72 Execute(The javac callback should combine discovered classpaths and manual ones):
73 let g:ale_java_javac_classpath = 'configured.jar'
74 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
75 \ '[DEBUG] Ignore this.',
76 \ '[INFO] Something we should ignore.',
92 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
93 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
95 let g:ale_java_javac_classpath = 'configured.jar' . g:cp_sep . 'configured2.jar'
96 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
97 \ '[DEBUG] Ignore this.',
98 \ '[INFO] Something we should ignore.',
115 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
116 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
118 let g:ale_java_javac_classpath = ['configured.jar']
119 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
120 \ '[DEBUG] Ignore this.',
121 \ '[INFO] Something we should ignore.',
137 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
138 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
140 let g:ale_java_javac_classpath = ['configured.jar', 'configured2.jar']
141 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
142 \ '[DEBUG] Ignore this.',
143 \ '[INFO] Something we should ignore.',
160 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
161 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
163 Execute(The javac callback should use string type g:ale_java_javac_sourcepath correctly):
164 let g:ale_java_javac_sourcepath = '../test-files/java/with_main/build/gen/main'
166 AssertLinter 'javac',
168 \ . ' -sourcepath ' . ale#Escape(
169 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/')
171 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
173 Execute(The javac callback should use list type g:ale_java_javac_sourcepath correctly):
174 let g:ale_java_javac_sourcepath = ['../test-files/java/with_main/build/gen/main']
176 AssertLinter 'javac',
178 \ . ' -sourcepath ' . ale#Escape(
179 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/')
181 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
183 Execute(The javac callback shouldn't add -sourcepath when g:ale_java_javac_sourcepath variable path doesn't exist):
184 let g:ale_java_javac_sourcepath = '../test-files/java/with_main/build/gen3/main'
186 AssertLinter 'javac',
188 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
190 Execute(The javac callback should combine discovered sourcepath and manual ones):
191 call ale#engine#Cleanup(bufnr(''))
192 call ale#test#SetFilename('../test-files/java/with_main/src/main/java/com/something/dummy.java')
193 call ale#engine#InitBufferInfo(bufnr(''))
195 let g:ale_java_javac_sourcepath = '../test-files/java/with_main/build/gen/main'
196 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
199 \ ale#Escape('javac') . ' -Xlint'
200 \ . ' -sourcepath ' . ale#Escape(join([
201 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/'),
202 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/'),
204 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
205 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
207 let g:ale_java_javac_sourcepath = '../test-files/java/with_main/build/gen/main'
208 \ . g:cp_sep . '../test-files/java/with_main/build/gen2/main'
209 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
212 \ ale#Escape('javac') . ' -Xlint'
213 \ . ' -sourcepath ' . ale#Escape(join([
214 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/'),
215 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/'),
216 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen2/main/')
218 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
219 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
221 let g:ale_java_javac_sourcepath = ['../test-files/java/with_main/build/gen/main']
222 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
225 \ ale#Escape('javac') . ' -Xlint'
226 \ . ' -sourcepath ' . ale#Escape(join([
227 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/'),
228 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/')
230 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
231 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
233 let g:ale_java_javac_sourcepath = [
234 \ '../test-files/java/with_main/build/gen/main',
235 \ '../test-files/java/with_main/build/gen2/main'
237 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
240 \ ale#Escape('javac') . ' -Xlint'
241 \ . ' -sourcepath ' . ale#Escape(join([
242 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/'),
243 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/'),
244 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen2/main/')
246 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
247 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
249 Execute(The javac callback should detect source directories):
250 call ale#engine#Cleanup(bufnr(''))
251 noautocmd e! ../test-files/java/with_main/src/main/java/com/something/dummy
252 call ale#engine#InitBufferInfo(bufnr(''))
254 AssertLinter 'javac',
255 \ ale#Escape('javac') . ' -Xlint'
256 \ . ' -sourcepath ' . ale#Escape(
257 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/')
259 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
261 Execute(The javac callback should combine detected source directories and classpaths):
262 call ale#engine#Cleanup(bufnr(''))
263 call ale#test#SetFilename('../test-files/java/with_main/src/main/java/com/something/dummy.java')
264 call ale#engine#InitBufferInfo(bufnr(''))
266 let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
267 \ '[DEBUG] Ignore this.',
268 \ '[INFO] Something we should ignore.',
274 \ ale#Escape('javac') . ' -Xlint'
275 \ . ' -cp ' . ale#Escape(join(['/foo/bar.jar', '/xyz/abc.jar'], g:cp_sep))
276 \ . ' -sourcepath ' . ale#Escape(
277 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/')
279 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
280 \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
282 Execute(The javac callback should use g:ale_java_javac_options correctly):
283 let g:ale_java_javac_options = '--anything --else'
285 AssertLinter 'javac',
286 \ g:prefix . ' -d ' . ale#Escape('TEMP_DIR') . ' --anything --else %t'
288 Execute(The javac callback should include src/test/java for test paths):
289 call ale#engine#Cleanup(bufnr(''))
290 " The test path is only included for test files.
291 " Regular Java files shouldn't import from tests.
292 noautocmd e! ../test-files/java/with_main/src/test/java/com/something/dummy
293 call ale#engine#InitBufferInfo(bufnr(''))
295 AssertLinter 'javac',
296 \ ale#Escape('javac') . ' -Xlint'
297 \ . ' -sourcepath ' . ale#Escape(join([
298 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/main/java/'),
299 \ ale#path#Simplify(g:dir . '/../test-files/java/with_main/src/test/java/'),
301 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
303 Execute(The javac callback should include src/main/jaxb when available):
304 call ale#engine#Cleanup(bufnr(''))
305 noautocmd e! ../test-files/java/with_jaxb/src/main/java/com/something/dummy
306 call ale#engine#InitBufferInfo(bufnr(''))
308 AssertLinter 'javac',
309 \ ale#Escape('javac') . ' -Xlint'
310 \ . ' -sourcepath ' . ale#Escape(join([
311 \ ale#path#Simplify(g:dir . '/../test-files/java/with_jaxb/src/main/java/'),
312 \ ale#path#Simplify(g:dir . '/../test-files/java/with_jaxb/src/main/jaxb/'),
314 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
316 Execute(The javac callback should add -sourcepath even if src/java/main doesn't exist):
317 call ale#engine#Cleanup(bufnr(''))
318 call ale#test#SetFilename('../test-files/java/no_main/src/test/java/com/something/dummy.java')
319 call ale#engine#InitBufferInfo(bufnr(''))
321 AssertLinter 'javac',
322 \ ale#Escape('javac') . ' -Xlint'
323 \ . ' -sourcepath ' . ale#Escape(join([
324 \ ale#path#Simplify(g:dir . '/../test-files/java/no_main/src/test/java/'),
326 \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'