]> git.madduck.net Git - etc/vim.git/blob - .vim/bundle/ale/test/linter/test_javac.vader

madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

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.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

Merge commit 'a39f715c13be3352193ffd9c5b7536b8786eff64' as '.vim/bundle/vim-lsp'
[etc/vim.git] / .vim / bundle / ale / test / linter / test_javac.vader
1 Before:
2   call ale#assert#SetUpLinterTest('java', 'javac')
3   call ale#test#SetFilename('dummy.java')
4
5   let g:cp_sep = has('unix') ? ':' : ';'
6   let g:prefix = ale#Escape('javac') . ' -Xlint'
7
8   function! GetCommand(previous_output) abort
9     let l:command = ale_linters#java#javac#GetCommand(
10     \ bufnr(''),
11     \ a:previous_output
12     \)
13
14     let l:split_command = split(l:command)
15     let l:index = index(l:split_command, '-d')
16
17     let l:split_command[l:index + 1] = 'TEMP'
18
19     return join(l:split_command)
20   endfunction
21
22 After:
23   unlet! g:cp_sep
24   unlet! g:prefix
25
26   delfunction GetCommand
27
28   call ale#assert#TearDownLinterTest()
29
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'
33
34 Execute(The javac callback should use string type g:ale_java_javac_classpath correctly):
35   let g:ale_java_javac_classpath = 'foo.jar'
36
37   AssertLinter 'javac',
38   \ g:prefix
39   \   . ' -cp ' . ale#Escape('foo.jar')
40   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
41
42 Execute(The javac callback should use list type g:ale_java_javac_classpath correctly):
43   let g:ale_java_javac_classpath = ['foo.jar']
44
45   AssertLinter 'javac',
46   \ g:prefix
47   \   . ' -cp ' . ale#Escape('foo.jar')
48   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
49
50 Execute(The executable should be configurable):
51   let g:ale_java_javac_executable = 'foobar'
52
53   AssertLinter 'foobar',
54   \ ale#Escape('foobar') . ' -Xlint'
55   \ . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
56
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.',
61   \ '/foo/bar.jar',
62   \ '/xyz/abc.jar',
63   \], {})
64
65   AssertEqual
66   \ g:prefix
67   \   . ' -cp '
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')
71
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.',
77   \ '/foo/bar.jar',
78   \ '/xyz/abc.jar',
79   \], {})
80
81   AssertEqual
82   \ g:prefix
83   \   . ' -cp '
84   \   . ale#Escape(join(
85   \     [
86   \       '/foo/bar.jar',
87   \       '/xyz/abc.jar',
88   \       'configured.jar',
89   \     ],
90   \     g:cp_sep
91   \   ))
92   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
93   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
94
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.',
99   \ '/foo/bar.jar',
100   \ '/xyz/abc.jar',
101   \], {})
102
103   AssertEqual
104   \ g:prefix
105   \   . ' -cp '
106   \   . ale#Escape(join(
107   \     [
108   \       '/foo/bar.jar',
109   \       '/xyz/abc.jar',
110   \       'configured.jar',
111   \       'configured2.jar',
112   \     ],
113   \     g:cp_sep
114   \   ))
115   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
116   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
117
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.',
122   \ '/foo/bar.jar',
123   \ '/xyz/abc.jar',
124   \], {})
125
126   AssertEqual
127   \ g:prefix
128   \   . ' -cp '
129   \   . ale#Escape(join(
130   \     [
131   \       '/foo/bar.jar',
132   \       '/xyz/abc.jar',
133   \       'configured.jar',
134   \     ],
135   \     g:cp_sep
136   \   ))
137   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
138   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
139
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.',
144   \ '/foo/bar.jar',
145   \ '/xyz/abc.jar',
146   \], {})
147
148   AssertEqual
149   \ g:prefix
150   \   . ' -cp '
151   \   . ale#Escape(join(
152   \     [
153   \       '/foo/bar.jar',
154   \       '/xyz/abc.jar',
155   \       'configured.jar',
156   \       'configured2.jar',
157   \     ],
158   \     g:cp_sep
159   \   ))
160   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
161   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
162
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'
165
166   AssertLinter 'javac',
167   \ g:prefix
168   \   . ' -sourcepath ' . ale#Escape(
169   \     ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/')
170   \   )
171   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
172
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']
175
176   AssertLinter 'javac',
177   \ g:prefix
178   \   . ' -sourcepath ' . ale#Escape(
179   \     ale#path#Simplify(g:dir . '/../test-files/java/with_main/build/gen/main/')
180   \   )
181   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
182
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'
185
186   AssertLinter 'javac',
187   \ g:prefix
188   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
189
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(''))
194
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(''), [], {})
197
198   AssertEqual
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/'),
203   \   ], g:cp_sep))
204   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
205   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
206
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(''), [], {})
210
211   AssertEqual
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/')
217   \   ], g:cp_sep))
218   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
219   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
220
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(''), [], {})
223
224   AssertEqual
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/')
229   \   ], g:cp_sep))
230   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
231   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
232
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'
236   \ ]
237   let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [], {})
238
239   AssertEqual
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/')
245   \   ], g:cp_sep))
246   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
247   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
248
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(''))
253
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/')
258   \   )
259   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
260
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(''))
265
266   let b:command = ale_linters#java#javac#GetCommand(bufnr(''), [
267   \ '[DEBUG] Ignore this.',
268   \ '[INFO] Something we should ignore.',
269   \ '/foo/bar.jar',
270   \ '/xyz/abc.jar',
271   \], {})
272
273   AssertEqual
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/')
278   \   )
279   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t',
280   \ substitute(b:command, '%e', '\=ale#Escape(''javac'')', 'g')
281
282 Execute(The javac callback should use g:ale_java_javac_options correctly):
283   let g:ale_java_javac_options = '--anything --else'
284
285   AssertLinter 'javac',
286   \ g:prefix . ' -d ' . ale#Escape('TEMP_DIR') . ' --anything --else %t'
287
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(''))
294
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/'),
300   \   ], g:cp_sep))
301   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
302
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(''))
307
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/'),
313   \   ], g:cp_sep))
314   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'
315
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(''))
320
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/'),
325   \   ], g:cp_sep))
326   \   . ' -d ' . ale#Escape('TEMP_DIR') . ' %t'