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", "-modulesourcepath", 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 }
|
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 }
|