langtools/test/tools/javac/modules/ProvidesTest.java
changeset 41942 260c724e5614
parent 40308 274367a99f98
child 42407 f3702cff2933
equal deleted inserted replaced
41941:a935ac3f5274 41942:260c724e5614
    22  */
    22  */
    23 
    23 
    24 /**
    24 /**
    25  * @test
    25  * @test
    26  * @summary simple tests of module provides
    26  * @summary simple tests of module provides
       
    27  * @bug 8168854
    27  * @library /tools/lib
    28  * @library /tools/lib
    28  * @modules
    29  * @modules
    29  *      jdk.compiler/com.sun.tools.javac.api
    30  *      jdk.compiler/com.sun.tools.javac.api
    30  *      jdk.compiler/com.sun.tools.javac.main
    31  *      jdk.compiler/com.sun.tools.javac.main
    31  * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase
    32  * @build toolbox.ToolBox toolbox.JavacTask ModuleTestBase
    37 import java.util.Arrays;
    38 import java.util.Arrays;
    38 import java.util.List;
    39 import java.util.List;
    39 
    40 
    40 import toolbox.JavacTask;
    41 import toolbox.JavacTask;
    41 import toolbox.Task;
    42 import toolbox.Task;
       
    43 import toolbox.Task.Expect;
    42 import toolbox.ToolBox;
    44 import toolbox.ToolBox;
    43 
    45 
    44 public class ProvidesTest extends ModuleTestBase {
    46 public class ProvidesTest extends ModuleTestBase {
    45     public static void main(String... args) throws Exception {
    47     public static void main(String... args) throws Exception {
    46         ProvidesTest t = new ProvidesTest();
    48         ProvidesTest t = new ProvidesTest();
   413     public void testServiceDefinitionInnerClass(Path base) throws Exception {
   415     public void testServiceDefinitionInnerClass(Path base) throws Exception {
   414         Path src = base.resolve("src");
   416         Path src = base.resolve("src");
   415         tb.writeJavaFiles(src,
   417         tb.writeJavaFiles(src,
   416                 "module m { provides p1.C1.InnerDefinition with p2.C2; }",
   418                 "module m { provides p1.C1.InnerDefinition with p2.C2; }",
   417                 "package p1; public class C1 { public class InnerDefinition { } }",
   419                 "package p1; public class C1 { public class InnerDefinition { } }",
   418                 "package p2; public class C2 extends p1.C1.InnerDefinition { }");
   420                 "package p2; public class C2 extends p1.C1.InnerDefinition { public C2() { new p1.C1().super(); } }");
   419 
   421 
   420         List<String> output = new JavacTask(tb)
   422         new JavacTask(tb)
   421                 .options("-XDrawDiagnostics")
   423                 .options("-XDrawDiagnostics")
   422                 .outdir(Files.createDirectories(base.resolve("classes")))
   424                 .outdir(Files.createDirectories(base.resolve("classes")))
   423                 .files(findJavaFiles(src))
   425                 .files(findJavaFiles(src))
   424                 .run(Task.Expect.FAIL)
   426                 .run(Expect.SUCCESS)
   425                 .writeAll()
   427                 .writeAll();
   426                 .getOutputLines(Task.OutputKind.DIRECT);
       
   427 
       
   428         List<String> expected = Arrays.asList(
       
   429                 "module-info.java:1:26: compiler.err.service.definition.is.inner: p1.C1.InnerDefinition",
       
   430                 "module-info.java:1:12: compiler.warn.service.provided.but.not.exported.or.used: p1.C1.InnerDefinition",
       
   431                 "C2.java:1:20: compiler.err.encl.class.required: p1.C1.InnerDefinition",
       
   432                 "2 errors",
       
   433                 "1 warning");
       
   434         if (!output.containsAll(expected)) {
       
   435             throw new Exception("Expected output not found");
       
   436         }
       
   437     }
   428     }
   438 }
   429 }