69 } |
66 } |
70 |
67 |
71 @Test |
68 @Test |
72 public void testEmptyItem(Path base) throws Exception { |
69 public void testEmptyItem(Path base) throws Exception { |
73 Path src = base.resolve("src"); |
70 Path src = base.resolve("src"); |
74 Path src_m1 = src.resolve("m1"); |
71 Path src_m1 = src.resolve("m1x"); |
75 tb.writeJavaFiles(src_m1, |
72 tb.writeJavaFiles(src_m1, |
76 "module m1 { }", |
73 "module m1x { }", |
77 "package p1; public class C1 { }"); |
74 "package p1; public class C1 { }"); |
78 Path src_m2 = src.resolve("m2"); |
75 Path src_m2 = src.resolve("m2x"); |
79 tb.writeJavaFiles(src_m2, |
76 tb.writeJavaFiles(src_m2, |
80 "module m2 { }", |
77 "module m2x { }", |
81 "package p2; class C2 { p1.C1 c1; }"); |
78 "package p2; class C2 { p1.C1 c1; }"); |
82 Path src_m3 = src.resolve("m3"); |
79 Path src_m3 = src.resolve("m3x"); |
83 tb.writeJavaFiles(src_m3, |
80 tb.writeJavaFiles(src_m3, |
84 "module m3 { }", |
81 "module m3x { }", |
85 "package p3; class C3 { p1.C1 c1; }"); |
82 "package p3; class C3 { p1.C1 c1; }"); |
86 Path classes = base.resolve("classes"); |
83 Path classes = base.resolve("classes"); |
87 tb.createDirectories(classes); |
84 tb.createDirectories(classes); |
88 |
85 |
89 testEmptyItem(src, classes, "m1/p1=,m2,m3"); |
86 testEmptyItem(src, classes, "m1x/p1=,m2x,m3x"); |
90 testEmptyItem(src, classes, "m1/p1=m2,,m3"); |
87 testEmptyItem(src, classes, "m1x/p1=m2x,,m3x"); |
91 testEmptyItem(src, classes, "m1/p1=m2,m3,"); |
88 testEmptyItem(src, classes, "m1x/p1=m2x,m3x,"); |
92 } |
89 } |
93 |
90 |
94 void testEmptyItem(Path src, Path classes, String option) throws Exception { |
91 void testEmptyItem(Path src, Path classes, String option) throws Exception { |
95 new JavacTask(tb) |
92 new JavacTask(tb) |
96 .options("--module-source-path", src.toString(), |
93 .options("--module-source-path", src.toString(), |
102 } |
99 } |
103 |
100 |
104 @Test |
101 @Test |
105 public void testEmptyList(Path base) throws Exception { |
102 public void testEmptyList(Path base) throws Exception { |
106 Path src = base.resolve("src"); |
103 Path src = base.resolve("src"); |
107 Path src_m1 = src.resolve("m1"); |
104 Path src_m1 = src.resolve("m1x"); |
108 tb.writeJavaFiles(src_m1, |
105 tb.writeJavaFiles(src_m1, |
109 "module m1 { exports p1; }", |
106 "module m1x { exports p1; }", |
110 "package p1; public class C1 { }"); |
107 "package p1; public class C1 { }"); |
111 Path classes = base.resolve("classes"); |
108 Path classes = base.resolve("classes"); |
112 tb.createDirectories(classes); |
109 tb.createDirectories(classes); |
113 |
110 |
114 testEmptyList(src, classes, "m1/p1="); |
111 testEmptyList(src, classes, "m1x/p1="); |
115 testEmptyList(src, classes, "m1/p1=,"); |
112 testEmptyList(src, classes, "m1x/p1=,"); |
116 } |
113 } |
117 |
114 |
118 void testEmptyList(Path src, Path classes, String option) throws Exception { |
115 void testEmptyList(Path src, Path classes, String option) throws Exception { |
119 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
116 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
120 .options("--module-source-path", src.toString(), |
117 .options("--module-source-path", src.toString(), |
130 } |
127 } |
131 |
128 |
132 @Test |
129 @Test |
133 public void testMissingSourceParts(Path base) throws Exception { |
130 public void testMissingSourceParts(Path base) throws Exception { |
134 Path src = base.resolve("src"); |
131 Path src = base.resolve("src"); |
135 Path src_m1 = src.resolve("m1"); |
132 Path src_m1 = src.resolve("m1x"); |
136 tb.writeJavaFiles(src_m1, |
133 tb.writeJavaFiles(src_m1, |
137 "module m1 { exports p1; }", |
134 "module m1x { exports p1; }", |
138 "package p1; public class C1 { }"); |
135 "package p1; public class C1 { }"); |
139 Path src_m2 = src.resolve("m2"); |
136 Path src_m2 = src.resolve("m2x"); |
140 tb.writeJavaFiles(src_m2, |
137 tb.writeJavaFiles(src_m2, |
141 "module m2 { }", |
138 "module m2x { }", |
142 "package p2; class C2 { p1.C1 c1; }"); |
139 "package p2; class C2 { p1.C1 c1; }"); |
143 Path classes = base.resolve("classes"); |
140 Path classes = base.resolve("classes"); |
144 tb.createDirectories(classes); |
141 tb.createDirectories(classes); |
145 |
142 |
146 testMissingSourcePart(src, classes, "=m2"); |
143 testMissingSourcePart(src, classes, "=m2x"); |
147 testMissingSourcePart(src, classes, "/=m2"); |
144 testMissingSourcePart(src, classes, "/=m2x"); |
148 testMissingSourcePart(src, classes, "m1/=m2"); |
145 testMissingSourcePart(src, classes, "m1x/=m2x"); |
149 testMissingSourcePart(src, classes, "/p1=m2"); |
146 testMissingSourcePart(src, classes, "/p1=m2x"); |
150 testMissingSourcePart(src, classes, "m1p1=m2"); |
147 testMissingSourcePart(src, classes, "m1xp1=m2x"); |
151 } |
148 } |
152 |
149 |
153 private void testMissingSourcePart(Path src, Path classes, String option) throws Exception { |
150 private void testMissingSourcePart(Path src, Path classes, String option) throws Exception { |
154 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
151 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
155 .options("--module-source-path", src.toString(), |
152 .options("--module-source-path", src.toString(), |
165 } |
162 } |
166 |
163 |
167 @Test |
164 @Test |
168 public void testBadSourceParts(Path base) throws Exception { |
165 public void testBadSourceParts(Path base) throws Exception { |
169 Path src = base.resolve("src"); |
166 Path src = base.resolve("src"); |
170 Path src_m1 = src.resolve("m1"); |
167 Path src_m1 = src.resolve("m1x"); |
171 tb.writeJavaFiles(src_m1, |
168 tb.writeJavaFiles(src_m1, |
172 "module m1 { exports p1; }", |
169 "module m1x { exports p1; }", |
173 "package p1; public class C1 { }"); |
170 "package p1; public class C1 { }"); |
174 Path src_m2 = src.resolve("m2"); |
171 Path src_m2 = src.resolve("m2x"); |
175 tb.writeJavaFiles(src_m2, |
172 tb.writeJavaFiles(src_m2, |
176 "module m2 { }", |
173 "module m2x { }", |
177 "package p2; class C2 { p1.C1 c1; }"); |
174 "package p2; class C2 { p1.C1 c1; }"); |
178 Path classes = base.resolve("classes"); |
175 Path classes = base.resolve("classes"); |
179 tb.createDirectories(classes); |
176 tb.createDirectories(classes); |
180 |
177 |
181 testBadSourcePart(src, classes, "m!/p1=m2", "m!"); |
178 testBadSourcePart(src, classes, "m!/p1=m2x", "m!"); |
182 testBadSourcePart(src, classes, "m1/p!=m2", "p!"); |
179 testBadSourcePart(src, classes, "m1x/p!=m2x", "p!"); |
183 } |
180 } |
184 |
181 |
185 private void testBadSourcePart(Path src, Path classes, String option, String badName) |
182 private void testBadSourcePart(Path src, Path classes, String option, String badName) |
186 throws Exception { |
183 throws Exception { |
187 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
184 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
199 } |
196 } |
200 |
197 |
201 @Test |
198 @Test |
202 public void testBadTarget(Path base) throws Exception { |
199 public void testBadTarget(Path base) throws Exception { |
203 Path src = base.resolve("src"); |
200 Path src = base.resolve("src"); |
204 Path src_m1 = src.resolve("m1"); |
201 Path src_m1 = src.resolve("m1x"); |
205 tb.writeJavaFiles(src_m1, |
202 tb.writeJavaFiles(src_m1, |
206 "module m1 { exports p1; }", |
203 "module m1x { exports p1; }", |
207 "package p1; public class C1 { }"); |
204 "package p1; public class C1 { }"); |
208 Path classes = base.resolve("classes"); |
205 Path classes = base.resolve("classes"); |
209 tb.createDirectories(classes); |
206 tb.createDirectories(classes); |
210 |
207 |
211 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
208 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
212 .options("-XDrawDiagnostics", |
209 .options("-XDrawDiagnostics", |
213 "--module-source-path", src.toString(), |
210 "--module-source-path", src.toString(), |
214 "--add-exports", "m1/p1=m!") |
211 "--add-exports", "m1x/p1=m!") |
215 .outdir(classes) |
212 .outdir(classes) |
216 .files(findJavaFiles(src)) |
213 .files(findJavaFiles(src)) |
217 .run() |
214 .run() |
218 .writeAll() |
215 .writeAll() |
219 .getOutput(Task.OutputKind.DIRECT); |
216 .getOutput(Task.OutputKind.DIRECT); |
223 } |
220 } |
224 |
221 |
225 @Test |
222 @Test |
226 public void testSourceNotFound(Path base) throws Exception { |
223 public void testSourceNotFound(Path base) throws Exception { |
227 Path src = base.resolve("src"); |
224 Path src = base.resolve("src"); |
228 Path src_m1 = src.resolve("m1"); |
225 Path src_m1 = src.resolve("m1x"); |
229 tb.writeJavaFiles(src_m1, |
226 tb.writeJavaFiles(src_m1, |
230 "module m1 { }"); |
227 "module m1x { }"); |
231 Path classes = base.resolve("classes"); |
228 Path classes = base.resolve("classes"); |
232 tb.createDirectories(classes); |
229 tb.createDirectories(classes); |
233 |
230 |
234 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
231 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
235 .options("-XDrawDiagnostics", |
232 .options("-XDrawDiagnostics", |
236 "--module-source-path", src.toString(), |
233 "--module-source-path", src.toString(), |
237 "--add-exports", "DoesNotExist/p=m1") |
234 "--add-exports", "DoesNotExist/p=m1x") |
238 .outdir(classes) |
235 .outdir(classes) |
239 .files(findJavaFiles(src)) |
236 .files(findJavaFiles(src)) |
240 .run() |
237 .run() |
241 .writeAll() |
238 .writeAll() |
242 .getOutput(Task.OutputKind.DIRECT); |
239 .getOutput(Task.OutputKind.DIRECT); |
246 } |
243 } |
247 |
244 |
248 @Test |
245 @Test |
249 public void testTargetNotFound(Path base) throws Exception { |
246 public void testTargetNotFound(Path base) throws Exception { |
250 Path src = base.resolve("src"); |
247 Path src = base.resolve("src"); |
251 Path src_m1 = src.resolve("m1"); |
248 Path src_m1 = src.resolve("m1x"); |
252 tb.writeJavaFiles(src_m1, |
249 tb.writeJavaFiles(src_m1, |
253 "module m1 { }", |
250 "module m1x { }", |
254 "package p1; class C1 { }"); |
251 "package p1; class C1 { }"); |
255 Path classes = base.resolve("classes"); |
252 Path classes = base.resolve("classes"); |
256 tb.createDirectories(classes); |
253 tb.createDirectories(classes); |
257 |
254 |
258 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
255 String log = new JavacTask(tb, Task.Mode.CMDLINE) |
259 .options("-XDrawDiagnostics", |
256 .options("-XDrawDiagnostics", |
260 "--module-source-path", src.toString(), |
257 "--module-source-path", src.toString(), |
261 "--add-exports", "m1/p1=DoesNotExist") |
258 "--add-exports", "m1x/p1=DoesNotExist") |
262 .outdir(classes) |
259 .outdir(classes) |
263 .files(findJavaFiles(src)) |
260 .files(findJavaFiles(src)) |
264 .run() |
261 .run() |
265 .writeAll() |
262 .writeAll() |
266 .getOutput(Task.OutputKind.DIRECT); |
263 .getOutput(Task.OutputKind.DIRECT); |
270 } |
267 } |
271 |
268 |
272 @Test |
269 @Test |
273 public void testDuplicate(Path base) throws Exception { |
270 public void testDuplicate(Path base) throws Exception { |
274 Path src = base.resolve("src"); |
271 Path src = base.resolve("src"); |
275 Path src_m1 = src.resolve("m1"); |
272 Path src_m1 = src.resolve("m1x"); |
276 tb.writeJavaFiles(src_m1, |
273 tb.writeJavaFiles(src_m1, |
277 "module m1 { }", |
274 "module m1x { }", |
278 "package p1; public class C1 { }"); |
275 "package p1; public class C1 { }"); |
279 Path src_m2 = src.resolve("m2"); |
276 Path src_m2 = src.resolve("m2x"); |
280 tb.writeJavaFiles(src_m2, |
277 tb.writeJavaFiles(src_m2, |
281 "module m2 { }", |
278 "module m2x { }", |
282 "package p2; class C2 { p1.C1 c1; }"); |
279 "package p2; class C2 { p1.C1 c1; }"); |
283 Path classes = base.resolve("classes"); |
280 Path classes = base.resolve("classes"); |
284 tb.createDirectories(classes); |
281 tb.createDirectories(classes); |
285 |
282 |
286 new JavacTask(tb) |
283 new JavacTask(tb) |
287 .options("--module-source-path", src.toString(), |
284 .options("--module-source-path", src.toString(), |
288 "--add-exports", "m1/p1=m2,m2") |
285 "--add-exports", "m1x/p1=m2x,m2x") |
289 .outdir(classes) |
286 .outdir(classes) |
290 .files(findJavaFiles(src)) |
287 .files(findJavaFiles(src)) |
291 .run() |
288 .run() |
292 .writeAll(); |
289 .writeAll(); |
293 } |
290 } |
294 |
291 |
295 @Test |
292 @Test |
296 public void testRepeated_SameTarget(Path base) throws Exception { |
293 public void testRepeated_SameTarget(Path base) throws Exception { |
297 Path src = base.resolve("src"); |
294 Path src = base.resolve("src"); |
298 Path src_m1 = src.resolve("m1"); |
295 Path src_m1 = src.resolve("m1x"); |
299 tb.writeJavaFiles(src_m1, |
296 tb.writeJavaFiles(src_m1, |
300 "module m1 { }", |
297 "module m1x { }", |
301 "package p1; public class C1 { }"); |
298 "package p1; public class C1 { }"); |
302 Path src_m2 = src.resolve("m2"); |
299 Path src_m2 = src.resolve("m2x"); |
303 tb.writeJavaFiles(src_m2, |
300 tb.writeJavaFiles(src_m2, |
304 "module m2 { }", |
301 "module m2x { }", |
305 "package p2; class C2 { p1.C1 c1; }"); |
302 "package p2; class C2 { p1.C1 c1; }"); |
306 Path classes = base.resolve("classes"); |
303 Path classes = base.resolve("classes"); |
307 tb.createDirectories(classes); |
304 tb.createDirectories(classes); |
308 |
305 |
309 new JavacTask(tb) |
306 new JavacTask(tb) |
310 .options("--module-source-path", src.toString(), |
307 .options("--module-source-path", src.toString(), |
311 "--add-exports", "m1/p1=m2", |
308 "--add-exports", "m1x/p1=m2x", |
312 "--add-exports", "m1/p1=m2") |
309 "--add-exports", "m1x/p1=m2x") |
313 .outdir(classes) |
310 .outdir(classes) |
314 .files(findJavaFiles(src)) |
311 .files(findJavaFiles(src)) |
315 .run() |
312 .run() |
316 .writeAll(); |
313 .writeAll(); |
317 } |
314 } |
318 |
315 |
319 @Test |
316 @Test |
320 public void testRepeated_DifferentTarget(Path base) throws Exception { |
317 public void testRepeated_DifferentTarget(Path base) throws Exception { |
321 Path src = base.resolve("src"); |
318 Path src = base.resolve("src"); |
322 Path src_m1 = src.resolve("m1"); |
319 Path src_m1 = src.resolve("m1x"); |
323 tb.writeJavaFiles(src_m1, |
320 tb.writeJavaFiles(src_m1, |
324 "module m1 { }", |
321 "module m1x { }", |
325 "package p1; public class C1 { }"); |
322 "package p1; public class C1 { }"); |
326 Path src_m2 = src.resolve("m2"); |
323 Path src_m2 = src.resolve("m2x"); |
327 tb.writeJavaFiles(src_m2, |
324 tb.writeJavaFiles(src_m2, |
328 "module m2 { }", |
325 "module m2x { }", |
329 "package p2; class C2 { p1.C1 c1; }"); |
326 "package p2; class C2 { p1.C1 c1; }"); |
330 Path src_m3 = src.resolve("m3"); |
327 Path src_m3 = src.resolve("m3x"); |
331 tb.writeJavaFiles(src_m3, |
328 tb.writeJavaFiles(src_m3, |
332 "module m3 { }", |
329 "module m3x { }", |
333 "package p3; class C3 { p1.C1 c1; }"); |
330 "package p3; class C3 { p1.C1 c1; }"); |
334 Path classes = base.resolve("classes"); |
331 Path classes = base.resolve("classes"); |
335 tb.createDirectories(classes); |
332 tb.createDirectories(classes); |
336 |
333 |
337 new JavacTask(tb) |
334 new JavacTask(tb) |
338 .options("--module-source-path", src.toString(), |
335 .options("--module-source-path", src.toString(), |
339 "--add-exports", "m1/p1=m2", |
336 "--add-exports", "m1x/p1=m2x", |
340 "--add-exports", "m1/p1=m3") |
337 "--add-exports", "m1x/p1=m3x") |
341 .outdir(classes) |
338 .outdir(classes) |
342 .files(findJavaFiles(src)) |
339 .files(findJavaFiles(src)) |
343 .run() |
340 .run() |
344 .writeAll(); |
341 .writeAll(); |
345 } |
342 } |