langtools/test/tools/javac/modules/ServiceProvidedButNotExportedOrUsedTest.java
changeset 36778 e04318f39f92
parent 36526 3b41f1c69604
child 37758 3ecf9b414e05
equal deleted inserted replaced
36777:28d33fb9097f 36778:e04318f39f92
    27  * @summary Javac doesn't report warnings/errors if module provides unexported service and doesn't use it itself
    27  * @summary Javac doesn't report warnings/errors if module provides unexported service and doesn't use it itself
    28  * @library /tools/lib
    28  * @library /tools/lib
    29  * @modules
    29  * @modules
    30  *      jdk.compiler/com.sun.tools.javac.api
    30  *      jdk.compiler/com.sun.tools.javac.api
    31  *      jdk.compiler/com.sun.tools.javac.main
    31  *      jdk.compiler/com.sun.tools.javac.main
    32  *      jdk.jdeps/com.sun.tools.javap
    32  * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase
    33  * @build ToolBox ModuleTestBase
       
    34  * @run main ServiceProvidedButNotExportedOrUsedTest
    33  * @run main ServiceProvidedButNotExportedOrUsedTest
    35  */
    34  */
    36 
    35 
    37 import java.nio.file.Files;
    36 import java.nio.file.Files;
    38 import java.nio.file.Path;
    37 import java.nio.file.Path;
    39 import java.util.Arrays;
    38 import java.util.Arrays;
    40 import java.util.List;
    39 import java.util.List;
       
    40 
       
    41 import toolbox.JavacTask;
       
    42 import toolbox.Task;
       
    43 import toolbox.ToolBox;
    41 
    44 
    42 public class ServiceProvidedButNotExportedOrUsedTest extends ModuleTestBase {
    45 public class ServiceProvidedButNotExportedOrUsedTest extends ModuleTestBase {
    43     public static void main(String... args) throws Exception {
    46     public static void main(String... args) throws Exception {
    44         ServiceProvidedButNotExportedOrUsedTest t = new ServiceProvidedButNotExportedOrUsedTest();
    47         ServiceProvidedButNotExportedOrUsedTest t = new ServiceProvidedButNotExportedOrUsedTest();
    45         t.runTests();
    48         t.runTests();
    53                 "package p1; public class C1 { }",
    56                 "package p1; public class C1 { }",
    54                 "package p2; public class C2 extends p1.C1 { }");
    57                 "package p2; public class C2 extends p1.C1 { }");
    55         Path classes = base.resolve("classes");
    58         Path classes = base.resolve("classes");
    56         Files.createDirectories(classes);
    59         Files.createDirectories(classes);
    57 
    60 
    58         List<String> output = tb.new JavacTask()
    61         List<String> output = new JavacTask(tb)
    59                 .outdir(classes)
    62                 .outdir(classes)
    60                 .options("-Werror", "-XDrawDiagnostics")
    63                 .options("-Werror", "-XDrawDiagnostics")
    61                 .files(findJavaFiles(src))
    64                 .files(findJavaFiles(src))
    62                 .run(ToolBox.Expect.FAIL)
    65                 .run(Task.Expect.FAIL)
    63                 .writeAll()
    66                 .writeAll()
    64                 .getOutputLines(ToolBox.OutputKind.DIRECT);
    67                 .getOutputLines(Task.OutputKind.DIRECT);
    65         List<String> expected = Arrays.asList(
    68         List<String> expected = Arrays.asList(
    66                 "module-info.java:1:12: compiler.warn.service.provided.but.not.exported.or.used: p1.C1",
    69                 "module-info.java:1:12: compiler.warn.service.provided.but.not.exported.or.used: p1.C1",
    67                 "- compiler.err.warnings.and.werror",
    70                 "- compiler.err.warnings.and.werror",
    68                 "1 error",
    71                 "1 error",
    69                 "1 warning");
    72                 "1 warning");
    84                 "module m3 { requires m1; exports p2; }",
    87                 "module m3 { requires m1; exports p2; }",
    85                 "package p2; public class C2 extends p1.C1 { }");
    88                 "package p2; public class C2 extends p1.C1 { }");
    86         Path modules = base.resolve("modules");
    89         Path modules = base.resolve("modules");
    87         Files.createDirectories(modules);
    90         Files.createDirectories(modules);
    88 
    91 
    89         List<String> output = tb.new JavacTask()
    92         List<String> output = new JavacTask(tb)
    90                 .options("-XDrawDiagnostics", "-modulesourcepath", src.toString())
    93                 .options("-XDrawDiagnostics", "-modulesourcepath", src.toString())
    91                 .outdir(modules)
    94                 .outdir(modules)
    92                 .files(findJavaFiles(src))
    95                 .files(findJavaFiles(src))
    93                 .run(ToolBox.Expect.FAIL)
    96                 .run(Task.Expect.FAIL)
    94                 .writeAll()
    97                 .writeAll()
    95                 .getOutputLines(ToolBox.OutputKind.DIRECT);
    98                 .getOutputLines(Task.OutputKind.DIRECT);
    96         List<String> expected = Arrays.asList(
    99         List<String> expected = Arrays.asList(
    97                 "module-info.java:1:39: compiler.err.service.implementation.not.in.right.module: m3",
   100                 "module-info.java:1:39: compiler.err.service.implementation.not.in.right.module: m3",
    98                 "1 error");
   101                 "1 error");
    99         if (!output.containsAll(expected)) {
   102         if (!output.containsAll(expected)) {
   100             throw new Exception("Expected output not found");
   103             throw new Exception("Expected output not found");