61 List<String> output = new JavacTask(tb) 62 .outdir(classes) 63 .options("-Werror", "-XDrawDiagnostics") 64 .files(findJavaFiles(src)) 65 .run(Task.Expect.FAIL) 66 .writeAll() 67 .getOutputLines(Task.OutputKind.DIRECT); 68 List<String> expected = Arrays.asList( 69 "module-info.java:1:12: compiler.warn.service.provided.but.not.exported.or.used: p1.C1", 70 "- compiler.err.warnings.and.werror", 71 "1 error", 72 "1 warning"); 73 if (!output.containsAll(expected)) { 74 throw new Exception("Expected output not found"); 75 } 76 } 77 78 @Test 79 public void testImplementationMustBeInSameModuleAsProvidesDirective(Path base) throws Exception { 80 Path src = base.resolve("src"); 81 tb.writeJavaFiles(src.resolve("m1"), 82 "module m1 { exports p1; }", 83 "package p1; public class C1 { }"); 84 tb.writeJavaFiles(src.resolve("m2"), 85 "module m2 { requires m1; requires m3; provides p1.C1 with p2.C2; }"); 86 tb.writeJavaFiles(src.resolve("m3"), 87 "module m3 { requires m1; exports p2; }", 88 "package p2; public class C2 extends p1.C1 { }"); 89 Path modules = base.resolve("modules"); 90 Files.createDirectories(modules); 91 92 List<String> output = new JavacTask(tb) 93 .options("-XDrawDiagnostics", "--module-source-path", src.toString()) 94 .outdir(modules) 95 .files(findJavaFiles(src)) 96 .run(Task.Expect.FAIL) 97 .writeAll() 98 .getOutputLines(Task.OutputKind.DIRECT); 99 List<String> expected = Arrays.asList( 100 "module-info.java:1:39: compiler.err.service.implementation.not.in.right.module: m3", 101 "1 error"); 102 if (!output.containsAll(expected)) { 103 throw new Exception("Expected output not found"); 104 } 105 } 106 } | 61 List<String> output = new JavacTask(tb) 62 .outdir(classes) 63 .options("-Werror", "-XDrawDiagnostics") 64 .files(findJavaFiles(src)) 65 .run(Task.Expect.FAIL) 66 .writeAll() 67 .getOutputLines(Task.OutputKind.DIRECT); 68 List<String> expected = Arrays.asList( 69 "module-info.java:1:12: compiler.warn.service.provided.but.not.exported.or.used: p1.C1", 70 "- compiler.err.warnings.and.werror", 71 "1 error", 72 "1 warning"); 73 if (!output.containsAll(expected)) { 74 throw new Exception("Expected output not found"); 75 } 76 } 77 78 @Test 79 public void testImplementationMustBeInSameModuleAsProvidesDirective(Path base) throws Exception { 80 Path src = base.resolve("src"); 81 tb.writeJavaFiles(src.resolve("m1x"), 82 "module m1x { exports p1; }", 83 "package p1; public class C1 { }"); 84 tb.writeJavaFiles(src.resolve("m2x"), 85 "module m2x { requires m1x; requires m3x; provides p1.C1 with p2.C2; }"); 86 tb.writeJavaFiles(src.resolve("m3x"), 87 "module m3x { requires m1x; exports p2; }", 88 "package p2; public class C2 extends p1.C1 { }"); 89 Path modules = base.resolve("modules"); 90 Files.createDirectories(modules); 91 92 List<String> output = new JavacTask(tb) 93 .options("-XDrawDiagnostics", "--module-source-path", src.toString()) 94 .outdir(modules) 95 .files(findJavaFiles(src)) 96 .run(Task.Expect.FAIL) 97 .writeAll() 98 .getOutputLines(Task.OutputKind.DIRECT); 99 List<String> expected = Arrays.asList( 100 "module-info.java:1:42: compiler.err.service.implementation.not.in.right.module: m3x", 101 "1 error"); 102 if (!output.containsAll(expected)) { 103 throw new Exception("Expected output not found"); 104 } 105 } 106 } |