< prev index next >

langtools/test/tools/javac/modules/ModulesAndClassPathTest.java

Print this page




  29  *          jdk.compiler/com.sun.tools.javac.main
  30  * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase
  31  * @run main ModulesAndClassPathTest
  32  */
  33 
  34 import java.io.File;
  35 import java.nio.file.Files;
  36 import java.nio.file.Path;
  37 import java.util.Arrays;
  38 import java.util.List;
  39 import java.util.Set;
  40 
  41 import javax.annotation.processing.AbstractProcessor;
  42 import javax.annotation.processing.RoundEnvironment;
  43 import javax.annotation.processing.SupportedAnnotationTypes;
  44 import javax.lang.model.element.TypeElement;
  45 
  46 import toolbox.JarTask;
  47 import toolbox.JavacTask;
  48 import toolbox.Task;
  49 import toolbox.ToolBox;
  50 
  51 public class ModulesAndClassPathTest extends ModuleTestBase {
  52 
  53     public static void main(String... args) throws Exception {
  54         new ModulesAndClassPathTest().runTests();
  55     }
  56 
  57     @Test
  58     public void testModulesAndClassPath(Path base) throws Exception {
  59         Path jar = prepareTestJar(base);
  60 
  61         Path moduleSrc = base.resolve("module-src");
  62         Path m1 = moduleSrc.resolve("m1");
  63 
  64         Path classes = base.resolve("classes");
  65 
  66         Files.createDirectories(classes);
  67 
  68         tb.writeJavaFiles(m1,
  69                           "module m1 { }",
  70                           "package impl; public class Impl { api.Api api; }");
  71 
  72         List<String> modLog = new JavacTask(tb)
  73                                 .options("-classpath", jar.toString(),
  74                                          "-XDrawDiagnostics")
  75                                 .outdir(classes)
  76                                 .files(findJavaFiles(moduleSrc))
  77                                 .run(Task.Expect.FAIL)
  78                                 .writeAll()
  79                                 .getOutputLines(Task.OutputKind.DIRECT);
  80 
  81         List<String> expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api",
  82                                               "1 error");
  83 
  84         if (!expected.equals(modLog)) {
  85             throw new Exception("unexpected output: " + modLog);
  86         }
  87 
  88         new JavacTask(tb)
  89           .options("-classpath", jar.toString(),
  90                    "-XaddReads:m1=ALL-UNNAMED")
  91           .outdir(classes)
  92           .files(findJavaFiles(moduleSrc))
  93           .run()
  94           .writeAll()
  95           .getOutputLines(Task.OutputKind.DIRECT);
  96 
  97         new JavacTask(tb)
  98           .options("-classpath", jar.toString() + File.pathSeparator + System.getProperty("test.classes"),
  99                    "-XaddReads:m1=ALL-UNNAMED",
 100                    "-processor", ProcessorImpl.class.getName())
 101           .outdir(classes)
 102           .files(findJavaFiles(moduleSrc))
 103           .run()
 104           .writeAll()
 105           .getOutputLines(Task.OutputKind.DIRECT);
 106     }
 107 
 108     @Test
 109     public void testImplicitSourcePathModuleInfo(Path base) throws Exception {
 110         Path jar = prepareTestJar(base);
 111 
 112         Path moduleSrc = base.resolve("module-src");
 113         Path m1 = moduleSrc.resolve("m1");
 114 
 115         Path classes = base.resolve("classes");
 116 
 117         Files.createDirectories(classes);
 118 
 119         tb.writeJavaFiles(m1,
 120                           "module m1 { }",
 121                           "package impl; public class Impl { api.Api api; }");
 122 
 123         List<String> modLog = new JavacTask(tb)
 124                                 .options("-classpath", jar.toString(),
 125                                          "-sourcepath", m1.toString(),
 126                                          "-XDrawDiagnostics")
 127                                 .outdir(classes)
 128                                 .files(m1.resolve("impl").resolve("Impl.java"))
 129                                 .run(Task.Expect.FAIL)
 130                                 .writeAll()
 131                                 .getOutputLines(Task.OutputKind.DIRECT);
 132 
 133         List<String> expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api",
 134                                               "1 error");
 135 
 136         if (!expected.equals(modLog)) {
 137             throw new Exception("unexpected output: " + modLog);
 138         }
 139     }
 140 
 141     @Test
 142     public void testModuleInfoFromOutput(Path base) throws Exception {
 143         Path jar = prepareTestJar(base);
 144 
 145         Path moduleSrc = base.resolve("module-src");
 146         Path m1 = moduleSrc.resolve("m1");
 147 
 148         Path classes = base.resolve("classes");
 149 
 150         Files.createDirectories(classes);
 151 
 152         tb.writeJavaFiles(m1,
 153                           "module m1 { }",
 154                           "package impl; public class Impl { api.Api api; }");
 155 
 156         new JavacTask(tb)
 157           .options("-classpath", jar.toString(),
 158                    "-XDrawDiagnostics")
 159           .outdir(classes)
 160           .files(m1.resolve("module-info.java"))
 161           .run()
 162           .writeAll()
 163           .getOutputLines(Task.OutputKind.DIRECT);
 164 
 165         List<String> modLog = new JavacTask(tb)
 166                                 .options("-classpath", jar.toString(),
 167                                          "-XDrawDiagnostics")
 168                                 .outdir(classes)
 169                                 .files(m1.resolve("impl").resolve("Impl.java"))
 170                                 .run(Task.Expect.FAIL)
 171                                 .writeAll()
 172                                 .getOutputLines(Task.OutputKind.DIRECT);
 173 
 174         List<String> expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api",
 175                                               "1 error");
 176 
 177         if (!expected.equals(modLog)) {
 178             throw new Exception("unexpected output: " + modLog);
 179         }
 180     }
 181 
 182     private Path prepareTestJar(Path base) throws Exception {
 183         Path legacySrc = base.resolve("legacy-src");
 184         tb.writeJavaFiles(legacySrc,
 185                           "package api; public abstract class Api {}");
 186         Path legacyClasses = base.resolve("legacy-classes");




  29  *          jdk.compiler/com.sun.tools.javac.main
  30  * @build toolbox.ToolBox toolbox.JarTask toolbox.JavacTask ModuleTestBase
  31  * @run main ModulesAndClassPathTest
  32  */
  33 
  34 import java.io.File;
  35 import java.nio.file.Files;
  36 import java.nio.file.Path;
  37 import java.util.Arrays;
  38 import java.util.List;
  39 import java.util.Set;
  40 
  41 import javax.annotation.processing.AbstractProcessor;
  42 import javax.annotation.processing.RoundEnvironment;
  43 import javax.annotation.processing.SupportedAnnotationTypes;
  44 import javax.lang.model.element.TypeElement;
  45 
  46 import toolbox.JarTask;
  47 import toolbox.JavacTask;
  48 import toolbox.Task;

  49 
  50 public class ModulesAndClassPathTest extends ModuleTestBase {
  51 
  52     public static void main(String... args) throws Exception {
  53         new ModulesAndClassPathTest().runTests();
  54     }
  55 
  56     @Test
  57     public void testModulesAndClassPath(Path base) throws Exception {
  58         Path jar = prepareTestJar(base);
  59 
  60         Path moduleSrc = base.resolve("module-src");
  61         Path m1 = moduleSrc.resolve("m1");
  62 
  63         Path classes = base.resolve("classes");
  64 
  65         Files.createDirectories(classes);
  66 
  67         tb.writeJavaFiles(m1,
  68                           "module m1 { }",
  69                           "package impl; public class Impl { api.Api api; }");
  70 
  71         List<String> modLog = new JavacTask(tb)
  72                                 .options("--class-path", jar.toString(),
  73                                          "-XDrawDiagnostics")
  74                                 .outdir(classes)
  75                                 .files(findJavaFiles(moduleSrc))
  76                                 .run(Task.Expect.FAIL)
  77                                 .writeAll()
  78                                 .getOutputLines(Task.OutputKind.DIRECT);
  79 
  80         List<String> expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api",
  81                                               "1 error");
  82 
  83         if (!expected.equals(modLog)) {
  84             throw new Exception("unexpected output: " + modLog);
  85         }
  86 
  87         new JavacTask(tb)
  88           .options("--class-path", jar.toString(),
  89                    "--add-reads", "m1=ALL-UNNAMED")
  90           .outdir(classes)
  91           .files(findJavaFiles(moduleSrc))
  92           .run()
  93           .writeAll()
  94           .getOutputLines(Task.OutputKind.DIRECT);
  95 
  96         new JavacTask(tb)
  97           .options("--class-path", jar.toString() + File.pathSeparator + System.getProperty("test.classes"),
  98                    "--add-reads", "m1=ALL-UNNAMED",
  99                    "-processor", ProcessorImpl.class.getName())
 100           .outdir(classes)
 101           .files(findJavaFiles(moduleSrc))
 102           .run()
 103           .writeAll()
 104           .getOutputLines(Task.OutputKind.DIRECT);
 105     }
 106 
 107     @Test
 108     public void testImplicitSourcePathModuleInfo(Path base) throws Exception {
 109         Path jar = prepareTestJar(base);
 110 
 111         Path moduleSrc = base.resolve("module-src");
 112         Path m1 = moduleSrc.resolve("m1");
 113 
 114         Path classes = base.resolve("classes");
 115 
 116         Files.createDirectories(classes);
 117 
 118         tb.writeJavaFiles(m1,
 119                           "module m1 { }",
 120                           "package impl; public class Impl { api.Api api; }");
 121 
 122         List<String> modLog = new JavacTask(tb)
 123                                 .options("--class-path", jar.toString(),
 124                                          "-sourcepath", m1.toString(),
 125                                          "-XDrawDiagnostics")
 126                                 .outdir(classes)
 127                                 .files(m1.resolve("impl").resolve("Impl.java"))
 128                                 .run(Task.Expect.FAIL)
 129                                 .writeAll()
 130                                 .getOutputLines(Task.OutputKind.DIRECT);
 131 
 132         List<String> expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api",
 133                                               "1 error");
 134 
 135         if (!expected.equals(modLog)) {
 136             throw new Exception("unexpected output: " + modLog);
 137         }
 138     }
 139 
 140     @Test
 141     public void testModuleInfoFromOutput(Path base) throws Exception {
 142         Path jar = prepareTestJar(base);
 143 
 144         Path moduleSrc = base.resolve("module-src");
 145         Path m1 = moduleSrc.resolve("m1");
 146 
 147         Path classes = base.resolve("classes");
 148 
 149         Files.createDirectories(classes);
 150 
 151         tb.writeJavaFiles(m1,
 152                           "module m1 { }",
 153                           "package impl; public class Impl { api.Api api; }");
 154 
 155         new JavacTask(tb)
 156           .options("--class-path", jar.toString(),
 157                    "-XDrawDiagnostics")
 158           .outdir(classes)
 159           .files(m1.resolve("module-info.java"))
 160           .run()
 161           .writeAll()
 162           .getOutputLines(Task.OutputKind.DIRECT);
 163 
 164         List<String> modLog = new JavacTask(tb)
 165                                 .options("--class-path", jar.toString(),
 166                                          "-XDrawDiagnostics")
 167                                 .outdir(classes)
 168                                 .files(m1.resolve("impl").resolve("Impl.java"))
 169                                 .run(Task.Expect.FAIL)
 170                                 .writeAll()
 171                                 .getOutputLines(Task.OutputKind.DIRECT);
 172 
 173         List<String> expected = Arrays.asList("Impl.java:1:38: compiler.err.doesnt.exist: api",
 174                                               "1 error");
 175 
 176         if (!expected.equals(modLog)) {
 177             throw new Exception("unexpected output: " + modLog);
 178         }
 179     }
 180 
 181     private Path prepareTestJar(Path base) throws Exception {
 182         Path legacySrc = base.resolve("legacy-src");
 183         tb.writeJavaFiles(legacySrc,
 184                           "package api; public abstract class Api {}");
 185         Path legacyClasses = base.resolve("legacy-classes");


< prev index next >