< prev index next >

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

Print this page




  43 import toolbox.ToolBox;
  44 
  45 public class MultiModuleModeTest extends ModuleTestBase {
  46 
  47     public static void main(String... args) throws Exception {
  48         new MultiModuleModeTest().runTests();
  49     }
  50 
  51     @Test
  52     public void testDuplicateModules(Path base) throws Exception {
  53         Path src = base.resolve("src");
  54         Path src_m1 = src.resolve("m1");
  55         tb.writeJavaFiles(src_m1, "module m1 { }");
  56         Path src_m2 = src.resolve("m2");
  57         tb.writeJavaFiles(src_m2, "module m1 { }");
  58         Path classes = base.resolve("classes");
  59         tb.createDirectories(classes);
  60 
  61         String log = new JavacTask(tb)
  62                 .options("-XDrawDiagnostics",
  63                         "-modulesourcepath", src.toString())
  64                 .outdir(classes)
  65                 .files(findJavaFiles(src))
  66                 .run(Task.Expect.FAIL)
  67                 .writeAll()
  68                 .getOutput(Task.OutputKind.DIRECT);
  69 
  70         if (!log.contains("module-info.java:1:1: compiler.err.duplicate.module: m1"))
  71             throw new Exception("expected output not found");
  72     }
  73 
  74     @Test
  75     public void testCantFindModule(Path base) throws Exception {
  76         Path src = base.resolve("src");
  77         Path src_m1 = src.resolve("m1");
  78         tb.writeJavaFiles(src_m1, "module m1 { }");
  79         Path misc = base.resolve("misc");
  80         tb.writeJavaFiles(misc, "package p; class C { }");
  81         Path classes = base.resolve("classes");
  82         tb.createDirectories(classes);
  83 
  84         String log = new JavacTask(tb)
  85                 .options("-XDrawDiagnostics",
  86                         "-modulesourcepath", src.toString())
  87                 .outdir(classes)
  88                 .files(join(findJavaFiles(src), findJavaFiles(misc)))
  89                 .run(Task.Expect.FAIL)
  90                 .writeAll()
  91                 .getOutput(Task.OutputKind.DIRECT);
  92 
  93         if (!log.contains("C.java:1:1: compiler.err.unnamed.pkg.not.allowed.named.modules"))
  94             throw new Exception("expected output not found");
  95     }
  96 
  97     @Test
  98     public void testModuleNameMismatch(Path base) throws Exception {
  99         Path src = base.resolve("src");
 100         Path src_m1 = src.resolve("m1");
 101         tb.writeJavaFiles(src_m1, "module m2 { }");
 102         Path classes = base.resolve("classes");
 103         tb.createDirectories(classes);
 104 
 105         String log = new JavacTask(tb)
 106                 .options("-XDrawDiagnostics",
 107                         "-modulesourcepath", src.toString())
 108                 .outdir(classes)
 109                 .files(findJavaFiles(src))
 110                 .run(Task.Expect.FAIL)
 111                 .writeAll()
 112                 .getOutput(Task.OutputKind.DIRECT);
 113 
 114         if (!log.contains("module-info.java:1:8: compiler.err.module.name.mismatch: m2, m1"))
 115             throw new Exception("expected output not found");
 116     }
 117 
 118     @Test
 119     public void testImplicitModuleSource(Path base) throws Exception {
 120         Path src = base.resolve("src");
 121         tb.writeJavaFiles(src.resolve("m1"), "module m1 { }");
 122         tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; }");
 123         Path modules = base.resolve("modules");
 124         Files.createDirectories(modules);
 125 
 126         new JavacTask(tb)
 127                 .options("-modulesourcepath", src.toString())
 128                 .outdir(modules)
 129                 .files(src.resolve("m2/module-info.java"))
 130                 .run()
 131                 .writeAll();
 132     }
 133 
 134     @Test
 135     public void testImplicitModuleClass(Path base) throws Exception {
 136         Path src1 = base.resolve("src1");
 137         tb.writeJavaFiles(src1.resolve("m1"), "module m1 { }");
 138         Path modules1 = base.resolve("modules1");
 139         Files.createDirectories(modules1);
 140 
 141         new JavacTask(tb)
 142                 .options("-modulesourcepath", src1.toString())
 143                 .outdir(modules1)
 144                 .files(src1.resolve("m1/module-info.java"))
 145                 .run()
 146                 .writeAll();
 147 
 148         Path src2= base.resolve("src2");
 149         tb.writeJavaFiles(src2.resolve("m2"), "module m2 { requires m1; }");
 150         Path modules2 = base.resolve("modules2");
 151         Files.createDirectories(modules2);
 152 
 153         new JavacTask(tb)
 154                 .options("-modulepath", modules1.toString(),
 155                         "-modulesourcepath", src2.toString())
 156                 .outdir(modules2)
 157                 .files(src2.resolve("m2/module-info.java"))
 158                 .run()
 159                 .writeAll();
 160     }
 161 
 162     Path[] join(Path[] a, Path[] b) {
 163         List<Path> result = new ArrayList<>();
 164         result.addAll(Arrays.asList(a));
 165         result.addAll(Arrays.asList(b));
 166         return result.toArray(new Path[result.size()]);
 167     }
 168 }


  43 import toolbox.ToolBox;
  44 
  45 public class MultiModuleModeTest extends ModuleTestBase {
  46 
  47     public static void main(String... args) throws Exception {
  48         new MultiModuleModeTest().runTests();
  49     }
  50 
  51     @Test
  52     public void testDuplicateModules(Path base) throws Exception {
  53         Path src = base.resolve("src");
  54         Path src_m1 = src.resolve("m1");
  55         tb.writeJavaFiles(src_m1, "module m1 { }");
  56         Path src_m2 = src.resolve("m2");
  57         tb.writeJavaFiles(src_m2, "module m1 { }");
  58         Path classes = base.resolve("classes");
  59         tb.createDirectories(classes);
  60 
  61         String log = new JavacTask(tb)
  62                 .options("-XDrawDiagnostics",
  63                         "--module-source-path", src.toString())
  64                 .outdir(classes)
  65                 .files(findJavaFiles(src))
  66                 .run(Task.Expect.FAIL)
  67                 .writeAll()
  68                 .getOutput(Task.OutputKind.DIRECT);
  69 
  70         if (!log.contains("module-info.java:1:1: compiler.err.duplicate.module: m1"))
  71             throw new Exception("expected output not found");
  72     }
  73 
  74     @Test
  75     public void testCantFindModule(Path base) throws Exception {
  76         Path src = base.resolve("src");
  77         Path src_m1 = src.resolve("m1");
  78         tb.writeJavaFiles(src_m1, "module m1 { }");
  79         Path misc = base.resolve("misc");
  80         tb.writeJavaFiles(misc, "package p; class C { }");
  81         Path classes = base.resolve("classes");
  82         tb.createDirectories(classes);
  83 
  84         String log = new JavacTask(tb)
  85                 .options("-XDrawDiagnostics",
  86                         "--module-source-path", src.toString())
  87                 .outdir(classes)
  88                 .files(join(findJavaFiles(src), findJavaFiles(misc)))
  89                 .run(Task.Expect.FAIL)
  90                 .writeAll()
  91                 .getOutput(Task.OutputKind.DIRECT);
  92 
  93         if (!log.contains("C.java:1:1: compiler.err.unnamed.pkg.not.allowed.named.modules"))
  94             throw new Exception("expected output not found");
  95     }
  96 
  97     @Test
  98     public void testModuleNameMismatch(Path base) throws Exception {
  99         Path src = base.resolve("src");
 100         Path src_m1 = src.resolve("m1");
 101         tb.writeJavaFiles(src_m1, "module m2 { }");
 102         Path classes = base.resolve("classes");
 103         tb.createDirectories(classes);
 104 
 105         String log = new JavacTask(tb)
 106                 .options("-XDrawDiagnostics",
 107                         "--module-source-path", src.toString())
 108                 .outdir(classes)
 109                 .files(findJavaFiles(src))
 110                 .run(Task.Expect.FAIL)
 111                 .writeAll()
 112                 .getOutput(Task.OutputKind.DIRECT);
 113 
 114         if (!log.contains("module-info.java:1:8: compiler.err.module.name.mismatch: m2, m1"))
 115             throw new Exception("expected output not found");
 116     }
 117 
 118     @Test
 119     public void testImplicitModuleSource(Path base) throws Exception {
 120         Path src = base.resolve("src");
 121         tb.writeJavaFiles(src.resolve("m1"), "module m1 { }");
 122         tb.writeJavaFiles(src.resolve("m2"), "module m2 { requires m1; }");
 123         Path modules = base.resolve("modules");
 124         Files.createDirectories(modules);
 125 
 126         new JavacTask(tb)
 127                 .options("--module-source-path", src.toString())
 128                 .outdir(modules)
 129                 .files(src.resolve("m2/module-info.java"))
 130                 .run()
 131                 .writeAll();
 132     }
 133 
 134     @Test
 135     public void testImplicitModuleClass(Path base) throws Exception {
 136         Path src1 = base.resolve("src1");
 137         tb.writeJavaFiles(src1.resolve("m1"), "module m1 { }");
 138         Path modules1 = base.resolve("modules1");
 139         Files.createDirectories(modules1);
 140 
 141         new JavacTask(tb)
 142                 .options("--module-source-path", src1.toString())
 143                 .outdir(modules1)
 144                 .files(src1.resolve("m1/module-info.java"))
 145                 .run()
 146                 .writeAll();
 147 
 148         Path src2= base.resolve("src2");
 149         tb.writeJavaFiles(src2.resolve("m2"), "module m2 { requires m1; }");
 150         Path modules2 = base.resolve("modules2");
 151         Files.createDirectories(modules2);
 152 
 153         new JavacTask(tb)
 154                 .options("--module-path", modules1.toString(),
 155                         "--module-source-path", src2.toString())
 156                 .outdir(modules2)
 157                 .files(src2.resolve("m2/module-info.java"))
 158                 .run()
 159                 .writeAll();
 160     }
 161 
 162     Path[] join(Path[] a, Path[] b) {
 163         List<Path> result = new ArrayList<>();
 164         result.addAll(Arrays.asList(a));
 165         result.addAll(Arrays.asList(b));
 166         return result.toArray(new Path[result.size()]);
 167     }
 168 }
< prev index next >