137 138 List<String> expected = Arrays.asList("module-info.java:1:20: compiler.err.report.access: p.C.A, protected, p.C", 139 "1 error"); 140 if (!output.containsAll(expected)) { 141 throw new Exception("Expected output not found"); 142 } 143 } 144 145 @Test 146 public void testMulti(Path base) throws Exception { 147 Path src = base.resolve("src"); 148 tb.writeJavaFiles(src.resolve("m1"), 149 "module m1 { exports p; }", 150 "package p; public class C { }"); 151 tb.writeJavaFiles(src.resolve("m2"), 152 "module m2 { requires m1; uses p.C; }"); 153 Path modules = base.resolve("modules"); 154 Files.createDirectories(modules); 155 156 new JavacTask(tb) 157 .options("-modulesourcepath", src.toString()) 158 .outdir(modules) 159 .files(findJavaFiles(src)) 160 .run(Task.Expect.SUCCESS) 161 .writeAll(); 162 } 163 164 @Test 165 public void testMultiOnModulePath(Path base) throws Exception { 166 Path modSrc = base.resolve("modSrc"); 167 Path modules = base.resolve("modules"); 168 new ModuleBuilder(tb, "m1") 169 .exports("p") 170 .classes("package p; public class C { }") 171 .build(modules); 172 new ModuleBuilder(tb, "m2") 173 .requires("m1") 174 .uses("p.C") 175 .write(modSrc); 176 177 new JavacTask(tb) 178 .options("-mp", modules.toString()) 179 .outdir(modules) 180 .files(findJavaFiles(modSrc.resolve("m2"))) 181 .run(Task.Expect.SUCCESS) 182 .writeAll(); 183 } 184 185 @Test 186 public void testMultiOnModulePathInner(Path base) throws Exception { 187 Path modSrc = base.resolve("modSrc"); 188 Path modules = base.resolve("modules"); 189 new ModuleBuilder(tb, "m1") 190 .exports("p") 191 .classes("package p; public class C { public class Inner { } }") 192 .build(modules); 193 new ModuleBuilder(tb, "m2") 194 .requires("m1") 195 .uses("p.C.Inner") 196 .write(modSrc); 197 198 new JavacTask(tb) 199 .options("-mp", modules.toString()) 200 .outdir(modules) 201 .files(findJavaFiles(modSrc.resolve("m2"))) 202 .run(Task.Expect.SUCCESS) 203 .writeAll(); 204 } 205 206 @Test 207 public void testDuplicateUses(Path base) throws Exception { 208 Path src = base.resolve("src"); 209 tb.writeJavaFiles(src.resolve("m"), 210 "module m { uses p.C; uses p.C; }", 211 "package p; public class C { }"); 212 213 List<String> output = new JavacTask(tb) 214 .options("-XDrawDiagnostics") 215 .outdir(Files.createDirectories(base.resolve("classes"))) 216 .files(findJavaFiles(src)) 217 .run(Task.Expect.FAIL) 218 .writeAll() 219 .getOutputLines(Task.OutputKind.DIRECT); 238 .run(Task.Expect.FAIL) 239 .writeAll() 240 .getOutputLines(Task.OutputKind.DIRECT); 241 Collection<?> expected = Arrays.asList("module-info.java:1:18: compiler.err.cant.resolve.location: kindname.class, NotExist, , , (compiler.misc.location: kindname.package, p, null)", 242 "1 error"); 243 if (!output.containsAll(expected)) { 244 throw new Exception("Expected output not found"); 245 } 246 } 247 248 @Test 249 public void testUsesUnexportedService(Path base) throws Exception { 250 Path src = base.resolve("src"); 251 tb.writeJavaFiles(src.resolve("m1"), 252 "module m1 { }", 253 "package p; public class C { }"); 254 tb.writeJavaFiles(src.resolve("m2"), 255 "module m2 { requires m1; uses p.C; }"); 256 257 List<String> output = new JavacTask(tb) 258 .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) 259 .outdir(Files.createDirectories(base.resolve("modules"))) 260 .files(findJavaFiles(src)) 261 .run(Task.Expect.FAIL) 262 .writeAll() 263 .getOutputLines(Task.OutputKind.DIRECT); 264 265 List<String> expected = Arrays.asList("module-info.java:1:32: compiler.err.not.def.access.package.cant.access: p.C, p", 266 "1 error"); 267 if (!output.containsAll(expected)) { 268 throw new Exception("Expected output not found"); 269 } 270 } 271 272 @Test 273 public void testUsesUnexportedButProvidedService(Path base) throws Exception { 274 Path src = base.resolve("src"); 275 tb.writeJavaFiles(src.resolve("m1"), 276 "module m1 { provides p.C with p.C; }", 277 "package p; public class C { }"); 278 tb.writeJavaFiles(src.resolve("m2"), 279 "module m2 { requires m1; uses p.C; }"); 280 281 List<String> output = new JavacTask(tb) 282 .options("-XDrawDiagnostics", "-modulesourcepath", src.toString()) 283 .outdir(Files.createDirectories(base.resolve("modules"))) 284 .files(findJavaFiles(src)) 285 .run(Task.Expect.FAIL) 286 .writeAll() 287 .getOutputLines(Task.OutputKind.DIRECT); 288 289 List<String> expected = Arrays.asList("module-info.java:1:32: compiler.err.not.def.access.package.cant.access: p.C, p", 290 "1 error"); 291 if (!output.containsAll(expected)) { 292 throw new Exception("Expected output not found"); 293 } 294 } 295 } | 137 138 List<String> expected = Arrays.asList("module-info.java:1:20: compiler.err.report.access: p.C.A, protected, p.C", 139 "1 error"); 140 if (!output.containsAll(expected)) { 141 throw new Exception("Expected output not found"); 142 } 143 } 144 145 @Test 146 public void testMulti(Path base) throws Exception { 147 Path src = base.resolve("src"); 148 tb.writeJavaFiles(src.resolve("m1"), 149 "module m1 { exports p; }", 150 "package p; public class C { }"); 151 tb.writeJavaFiles(src.resolve("m2"), 152 "module m2 { requires m1; uses p.C; }"); 153 Path modules = base.resolve("modules"); 154 Files.createDirectories(modules); 155 156 new JavacTask(tb) 157 .options("--module-source-path", src.toString()) 158 .outdir(modules) 159 .files(findJavaFiles(src)) 160 .run(Task.Expect.SUCCESS) 161 .writeAll(); 162 } 163 164 @Test 165 public void testMultiOnModulePath(Path base) throws Exception { 166 Path modSrc = base.resolve("modSrc"); 167 Path modules = base.resolve("modules"); 168 new ModuleBuilder(tb, "m1") 169 .exports("p") 170 .classes("package p; public class C { }") 171 .build(modules); 172 new ModuleBuilder(tb, "m2") 173 .requires("m1") 174 .uses("p.C") 175 .write(modSrc); 176 177 new JavacTask(tb) 178 .options("-p", modules.toString()) 179 .outdir(modules) 180 .files(findJavaFiles(modSrc.resolve("m2"))) 181 .run(Task.Expect.SUCCESS) 182 .writeAll(); 183 } 184 185 @Test 186 public void testMultiOnModulePathInner(Path base) throws Exception { 187 Path modSrc = base.resolve("modSrc"); 188 Path modules = base.resolve("modules"); 189 new ModuleBuilder(tb, "m1") 190 .exports("p") 191 .classes("package p; public class C { public class Inner { } }") 192 .build(modules); 193 new ModuleBuilder(tb, "m2") 194 .requires("m1") 195 .uses("p.C.Inner") 196 .write(modSrc); 197 198 new JavacTask(tb) 199 .options("-p", modules.toString()) 200 .outdir(modules) 201 .files(findJavaFiles(modSrc.resolve("m2"))) 202 .run(Task.Expect.SUCCESS) 203 .writeAll(); 204 } 205 206 @Test 207 public void testDuplicateUses(Path base) throws Exception { 208 Path src = base.resolve("src"); 209 tb.writeJavaFiles(src.resolve("m"), 210 "module m { uses p.C; uses p.C; }", 211 "package p; public class C { }"); 212 213 List<String> output = new JavacTask(tb) 214 .options("-XDrawDiagnostics") 215 .outdir(Files.createDirectories(base.resolve("classes"))) 216 .files(findJavaFiles(src)) 217 .run(Task.Expect.FAIL) 218 .writeAll() 219 .getOutputLines(Task.OutputKind.DIRECT); 238 .run(Task.Expect.FAIL) 239 .writeAll() 240 .getOutputLines(Task.OutputKind.DIRECT); 241 Collection<?> expected = Arrays.asList("module-info.java:1:18: compiler.err.cant.resolve.location: kindname.class, NotExist, , , (compiler.misc.location: kindname.package, p, null)", 242 "1 error"); 243 if (!output.containsAll(expected)) { 244 throw new Exception("Expected output not found"); 245 } 246 } 247 248 @Test 249 public void testUsesUnexportedService(Path base) throws Exception { 250 Path src = base.resolve("src"); 251 tb.writeJavaFiles(src.resolve("m1"), 252 "module m1 { }", 253 "package p; public class C { }"); 254 tb.writeJavaFiles(src.resolve("m2"), 255 "module m2 { requires m1; uses p.C; }"); 256 257 List<String> output = new JavacTask(tb) 258 .options("-XDrawDiagnostics", "--module-source-path", src.toString()) 259 .outdir(Files.createDirectories(base.resolve("modules"))) 260 .files(findJavaFiles(src)) 261 .run(Task.Expect.FAIL) 262 .writeAll() 263 .getOutputLines(Task.OutputKind.DIRECT); 264 265 List<String> expected = Arrays.asList("module-info.java:1:32: compiler.err.not.def.access.package.cant.access: p.C, p", 266 "1 error"); 267 if (!output.containsAll(expected)) { 268 throw new Exception("Expected output not found"); 269 } 270 } 271 272 @Test 273 public void testUsesUnexportedButProvidedService(Path base) throws Exception { 274 Path src = base.resolve("src"); 275 tb.writeJavaFiles(src.resolve("m1"), 276 "module m1 { provides p.C with p.C; }", 277 "package p; public class C { }"); 278 tb.writeJavaFiles(src.resolve("m2"), 279 "module m2 { requires m1; uses p.C; }"); 280 281 List<String> output = new JavacTask(tb) 282 .options("-XDrawDiagnostics", "--module-source-path", src.toString()) 283 .outdir(Files.createDirectories(base.resolve("modules"))) 284 .files(findJavaFiles(src)) 285 .run(Task.Expect.FAIL) 286 .writeAll() 287 .getOutputLines(Task.OutputKind.DIRECT); 288 289 List<String> expected = Arrays.asList("module-info.java:1:32: compiler.err.not.def.access.package.cant.access: p.C, p", 290 "1 error"); 291 if (!output.containsAll(expected)) { 292 throw new Exception("Expected output not found"); 293 } 294 } 295 } |