equal
deleted
inserted
replaced
54 ModuleSourcePathTest t = new ModuleSourcePathTest(); |
54 ModuleSourcePathTest t = new ModuleSourcePathTest(); |
55 t.runTests(); |
55 t.runTests(); |
56 } |
56 } |
57 |
57 |
58 @Test |
58 @Test |
59 void testSourcePathConflict(Path base) throws Exception { |
59 public void testSourcePathConflict(Path base) throws Exception { |
60 Path sp = base.resolve("src"); |
60 Path sp = base.resolve("src"); |
61 Path msp = base.resolve("srcmodules"); |
61 Path msp = base.resolve("srcmodules"); |
62 |
62 |
63 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
63 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
64 .options("-XDrawDiagnostics", |
64 .options("-XDrawDiagnostics", |
72 if (!log.contains("cannot specify both -sourcepath and -modulesourcepath")) |
72 if (!log.contains("cannot specify both -sourcepath and -modulesourcepath")) |
73 throw new Exception("expected diagnostic not found"); |
73 throw new Exception("expected diagnostic not found"); |
74 } |
74 } |
75 |
75 |
76 @Test |
76 @Test |
77 void testUnnormalizedPath1(Path base) throws Exception { |
77 public void testUnnormalizedPath1(Path base) throws Exception { |
78 Path src = base.resolve("src"); |
78 Path src = base.resolve("src"); |
79 Path src_m1 = src.resolve("m1"); |
79 Path src_m1 = src.resolve("m1"); |
80 tb.writeJavaFiles(src_m1, "module m1 { }"); |
80 tb.writeJavaFiles(src_m1, "module m1 { }"); |
81 Path modules = base.resolve("modules"); |
81 Path modules = base.resolve("modules"); |
82 Files.createDirectories(modules); |
82 Files.createDirectories(modules); |
89 .run() |
89 .run() |
90 .writeAll(); |
90 .writeAll(); |
91 } |
91 } |
92 |
92 |
93 @Test |
93 @Test |
94 void testUnnormalizedPath2(Path base) throws Exception { |
94 public void testUnnormalizedPath2(Path base) throws Exception { |
95 Path src = base.resolve("src"); |
95 Path src = base.resolve("src"); |
96 Path src_m1 = src.resolve("m1"); |
96 Path src_m1 = src.resolve("m1"); |
97 tb.writeJavaFiles(src_m1, "module m1 { }"); |
97 tb.writeJavaFiles(src_m1, "module m1 { }"); |
98 Path modules = base.resolve("modules"); |
98 Path modules = base.resolve("modules"); |
99 Files.createDirectories(modules); |
99 Files.createDirectories(modules); |
113 .collect(Collectors.toList()) |
113 .collect(Collectors.toList()) |
114 .toArray(new Path[paths.length]); |
114 .toArray(new Path[paths.length]); |
115 } |
115 } |
116 |
116 |
117 @Test |
117 @Test |
118 void regularBraces(Path base) throws Exception { |
118 public void regularBraces(Path base) throws Exception { |
119 generateModules(base, "src1", "src2/inner_dir"); |
119 generateModules(base, "src1", "src2/inner_dir"); |
120 |
120 |
121 final Path modules = base.resolve("modules"); |
121 final Path modules = base.resolve("modules"); |
122 tb.createDirectories(modules); |
122 tb.createDirectories(modules); |
123 |
123 |
134 modules.resolve("m0/module-info.class"), |
134 modules.resolve("m0/module-info.class"), |
135 modules.resolve("m1/module-info.class")); |
135 modules.resolve("m1/module-info.class")); |
136 } |
136 } |
137 |
137 |
138 @Test |
138 @Test |
139 void mismatchedBraces(Path base) throws Exception { |
139 public void mismatchedBraces(Path base) throws Exception { |
140 final List<String> sourcePaths = Arrays.asList( |
140 final List<String> sourcePaths = Arrays.asList( |
141 "{", |
141 "{", |
142 "}", |
142 "}", |
143 "}{", |
143 "}{", |
144 "./}", |
144 "./}", |
163 throw new Exception("expected output for path [" + sourcepath + "] not found"); |
163 throw new Exception("expected output for path [" + sourcepath + "] not found"); |
164 } |
164 } |
165 } |
165 } |
166 |
166 |
167 @Test |
167 @Test |
168 void deepBraces(Path base) throws Exception { |
168 public void deepBraces(Path base) throws Exception { |
169 String[] modulePaths = {"src/src1", |
169 String[] modulePaths = {"src/src1", |
170 "src/src2", |
170 "src/src2", |
171 "src/src3", |
171 "src/src3", |
172 "src/srcB/src1", |
172 "src/srcB/src1", |
173 "src/srcB/src2/srcXX", |
173 "src/srcB/src2/srcXX", |
195 } |
195 } |
196 checkFiles(modules.resolve("m8/pkg8/A.class")); |
196 checkFiles(modules.resolve("m8/pkg8/A.class")); |
197 } |
197 } |
198 |
198 |
199 @Test |
199 @Test |
200 void fileInPath(Path base) throws Exception { |
200 public void fileInPath(Path base) throws Exception { |
201 Path src = base.resolve("src"); |
201 Path src = base.resolve("src"); |
202 tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }"); |
202 tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }"); |
203 tb.writeFile(base.resolve("dummy.txt"), ""); |
203 tb.writeFile(base.resolve("dummy.txt"), ""); |
204 |
204 |
205 final Path modules = base.resolve("modules"); |
205 final Path modules = base.resolve("modules"); |
216 checkFiles(modules.resolve("kettle$/electric/Heater.class")); |
216 checkFiles(modules.resolve("kettle$/electric/Heater.class")); |
217 checkFiles(modules.resolve("kettle$/module-info.class")); |
217 checkFiles(modules.resolve("kettle$/module-info.class")); |
218 } |
218 } |
219 |
219 |
220 @Test |
220 @Test |
221 void noAlternative(Path base) throws Exception { |
221 public void noAlternative(Path base) throws Exception { |
222 Path src = base.resolve("src"); |
222 Path src = base.resolve("src"); |
223 tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }"); |
223 tb.writeJavaFiles(src.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }"); |
224 |
224 |
225 final Path modules = base.resolve("modules"); |
225 final Path modules = base.resolve("modules"); |
226 tb.createDirectories(modules); |
226 tb.createDirectories(modules); |
236 checkFiles(modules.resolve("kettle$/electric/Heater.class")); |
236 checkFiles(modules.resolve("kettle$/electric/Heater.class")); |
237 checkFiles(modules.resolve("kettle$/module-info.class")); |
237 checkFiles(modules.resolve("kettle$/module-info.class")); |
238 } |
238 } |
239 |
239 |
240 @Test |
240 @Test |
241 void noChoice(Path base) throws Exception { |
241 public void noChoice(Path base) throws Exception { |
242 tb.writeJavaFiles(base.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }"); |
242 tb.writeJavaFiles(base.resolve("kettle$"), "module kettle$ { }", "package electric; class Heater { }"); |
243 |
243 |
244 final Path modules = base.resolve("modules"); |
244 final Path modules = base.resolve("modules"); |
245 tb.createDirectories(modules); |
245 tb.createDirectories(modules); |
246 |
246 |
255 checkFiles(modules.resolve("kettle$/electric/Heater.class")); |
255 checkFiles(modules.resolve("kettle$/electric/Heater.class")); |
256 checkFiles(modules.resolve("kettle$/module-info.class")); |
256 checkFiles(modules.resolve("kettle$/module-info.class")); |
257 } |
257 } |
258 |
258 |
259 @Test |
259 @Test |
260 void nestedModules(Path src) throws Exception { |
260 public void nestedModules(Path src) throws Exception { |
261 Path carModule = src.resolve("car"); |
261 Path carModule = src.resolve("car"); |
262 tb.writeJavaFiles(carModule, "module car { }", "package light; class Headlight { }"); |
262 tb.writeJavaFiles(carModule, "module car { }", "package light; class Headlight { }"); |
263 tb.writeJavaFiles(carModule.resolve("engine"), "module engine { }", "package flat; class Piston { }"); |
263 tb.writeJavaFiles(carModule.resolve("engine"), "module engine { }", "package flat; class Piston { }"); |
264 |
264 |
265 final Path modules = src.resolve("modules"); |
265 final Path modules = src.resolve("modules"); |
275 checkFiles(modules.resolve("car/light/Headlight.class")); |
275 checkFiles(modules.resolve("car/light/Headlight.class")); |
276 checkFiles(modules.resolve("engine/flat/Piston.class")); |
276 checkFiles(modules.resolve("engine/flat/Piston.class")); |
277 } |
277 } |
278 |
278 |
279 @Test |
279 @Test |
280 void relativePaths(Path base) throws Exception { |
280 public void relativePaths(Path base) throws Exception { |
281 Path src = base.resolve("src"); |
281 Path src = base.resolve("src"); |
282 tb.writeJavaFiles(src.resolve("kettle"), "module kettle { }", "package electric; class Heater { }"); |
282 tb.writeJavaFiles(src.resolve("kettle"), "module kettle { }", "package electric; class Heater { }"); |
283 |
283 |
284 final Path modules = base.resolve("modules"); |
284 final Path modules = base.resolve("modules"); |
285 tb.createDirectories(modules); |
285 tb.createDirectories(modules); |
294 checkFiles(modules.resolve("kettle/electric/Heater.class")); |
294 checkFiles(modules.resolve("kettle/electric/Heater.class")); |
295 checkFiles(modules.resolve("kettle/module-info.class")); |
295 checkFiles(modules.resolve("kettle/module-info.class")); |
296 } |
296 } |
297 |
297 |
298 @Test |
298 @Test |
299 void duplicatePaths(Path base) throws Exception { |
299 public void duplicatePaths(Path base) throws Exception { |
300 Path src = base.resolve("src"); |
300 Path src = base.resolve("src"); |
301 tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }"); |
301 tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }"); |
302 |
302 |
303 final Path modules = base.resolve("modules"); |
303 final Path modules = base.resolve("modules"); |
304 tb.createDirectories(modules); |
304 tb.createDirectories(modules); |
313 |
313 |
314 checkFiles(modules.resolve("m1/module-info.class")); |
314 checkFiles(modules.resolve("m1/module-info.class")); |
315 } |
315 } |
316 |
316 |
317 @Test |
317 @Test |
318 void notExistentPaths(Path base) throws Exception { |
318 public void notExistentPaths(Path base) throws Exception { |
319 tb.writeJavaFiles(base.resolve("m1"), "module m1 { requires m0; }", "package a; class A { }"); |
319 tb.writeJavaFiles(base.resolve("m1"), "module m1 { requires m0; }", "package a; class A { }"); |
320 |
320 |
321 final Path modules = base.resolve("modules"); |
321 final Path modules = base.resolve("modules"); |
322 tb.createDirectories(modules); |
322 tb.createDirectories(modules); |
323 |
323 |
332 if (!log.contains("compiler.err.module.not.found: m0")) |
332 if (!log.contains("compiler.err.module.not.found: m0")) |
333 throw new Exception("expected output for not existent module source path not found"); |
333 throw new Exception("expected output for not existent module source path not found"); |
334 } |
334 } |
335 |
335 |
336 @Test |
336 @Test |
337 void notExistentPathShouldBeSkipped(Path base) throws Exception { |
337 public void notExistentPathShouldBeSkipped(Path base) throws Exception { |
338 tb.writeJavaFiles(base.resolve("m1"), "module m1 { }", "package a; class A { }"); |
338 tb.writeJavaFiles(base.resolve("m1"), "module m1 { }", "package a; class A { }"); |
339 |
339 |
340 final Path modules = base.resolve("modules"); |
340 final Path modules = base.resolve("modules"); |
341 tb.createDirectories(modules); |
341 tb.createDirectories(modules); |
342 |
342 |
350 |
350 |
351 checkFiles(modules.resolve("m1/module-info.class")); |
351 checkFiles(modules.resolve("m1/module-info.class")); |
352 } |
352 } |
353 |
353 |
354 @Test |
354 @Test |
355 void commas(Path base) throws Exception { |
355 public void commas(Path base) throws Exception { |
356 Path src = base.resolve("src"); |
356 Path src = base.resolve("src"); |
357 tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }"); |
357 tb.writeJavaFiles(src.resolve("m1"), "module m1 { }", "package a; class A { }"); |
358 |
358 |
359 final Path modules = base.resolve("modules"); |
359 final Path modules = base.resolve("modules"); |
360 tb.createDirectories(modules); |
360 tb.createDirectories(modules); |
369 |
369 |
370 checkFiles(modules.resolve("m1/module-info.class")); |
370 checkFiles(modules.resolve("m1/module-info.class")); |
371 } |
371 } |
372 |
372 |
373 @Test |
373 @Test |
374 void asterisk(Path base) throws Exception { |
374 public void asterisk(Path base) throws Exception { |
375 tb.writeJavaFiles(base.resolve("kettle").resolve("classes"), "module kettle { }", |
375 tb.writeJavaFiles(base.resolve("kettle").resolve("classes"), "module kettle { }", |
376 "package electric; class Heater { }"); |
376 "package electric; class Heater { }"); |
377 |
377 |
378 final Path modules = base.resolve("modules"); |
378 final Path modules = base.resolve("modules"); |
379 tb.createDirectories(modules); |
379 tb.createDirectories(modules); |
389 checkFiles(modules.resolve("kettle/electric/Heater.class")); |
389 checkFiles(modules.resolve("kettle/electric/Heater.class")); |
390 checkFiles(modules.resolve("kettle/module-info.class")); |
390 checkFiles(modules.resolve("kettle/module-info.class")); |
391 } |
391 } |
392 |
392 |
393 @Test |
393 @Test |
394 void asteriskInDifferentSets(Path base) throws Exception { |
394 public void asteriskInDifferentSets(Path base) throws Exception { |
395 Path src = base.resolve("src"); |
395 Path src = base.resolve("src"); |
396 final Path module = src.resolve("kettle"); |
396 final Path module = src.resolve("kettle"); |
397 tb.writeJavaFiles(module.resolve("classes"), "module kettle { }", "package electric; class Heater { }"); |
397 tb.writeJavaFiles(module.resolve("classes"), "module kettle { }", "package electric; class Heater { }"); |
398 tb.writeJavaFiles(module.resolve("gensrc"), "package model; class Java { }"); |
398 tb.writeJavaFiles(module.resolve("gensrc"), "package model; class Java { }"); |
399 tb.writeJavaFiles(module.resolve("special/classes"), "package gas; class Heater { }"); |
399 tb.writeJavaFiles(module.resolve("special/classes"), "package gas; class Heater { }"); |
415 checkFiles(modules.resolve("kettle/model/Java.class")); |
415 checkFiles(modules.resolve("kettle/model/Java.class")); |
416 checkFiles(modules.resolve("kettle/module-info.class")); |
416 checkFiles(modules.resolve("kettle/module-info.class")); |
417 } |
417 } |
418 |
418 |
419 @Test |
419 @Test |
420 void asteriskIllegalUse(Path base) throws Exception { |
420 public void asteriskIllegalUse(Path base) throws Exception { |
421 final List<String> sourcePaths = Arrays.asList( |
421 final List<String> sourcePaths = Arrays.asList( |
422 "*", |
422 "*", |
423 "**", |
423 "**", |
424 "***", |
424 "***", |
425 "*.*", |
425 "*.*", |