< prev index next >

test/tools/javac/classfiles/attributes/Module/ModuleTest.java

Print this page




  29  *          jdk.compiler/com.sun.tools.javac.api
  30  *          jdk.compiler/com.sun.tools.javac.main
  31  *          jdk.compiler/com.sun.tools.javac.util
  32  *          jdk.jdeps/com.sun.tools.classfile
  33  * @library /tools/lib ../lib /tools/javac/lib
  34  * @build toolbox.ToolBox toolbox.JavacTask toolbox.ToolBox
  35  *      TestBase TestResult ModuleTestBase
  36  * @run main ModuleTest
  37  */
  38 
  39 import java.nio.file.Path;
  40 
  41 public class ModuleTest extends ModuleTestBase {
  42 
  43     public static void main(String[] args) throws Exception {
  44         new ModuleTest().run();
  45     }
  46 
  47     @Test
  48     public void testEmptyModule(Path base) throws Exception {
  49         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
  50                 .write(base);
  51         compile(base);
  52         testModuleAttribute(base, moduleDescriptor);
  53     }
  54 
  55     @Test
  56     public void testExports(Path base) throws Exception {
  57         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
  58                 .exports("pack")
  59                 .write(base);
  60         tb.writeJavaFiles(base, "package pack; public class C extends java.util.ArrayList{ }");
  61         compile(base);
  62         testModuleAttribute(base, moduleDescriptor);
  63     }
  64 
  65     @Test
  66     public void testSeveralExports(Path base) throws Exception {
  67         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
  68                 .exports("pack")
  69                 .exports("pack2")
  70                 .exports("pack3")
  71                 .exports("pack4")
  72                 .exports("pack5")
  73                 .write(base);
  74         tb.writeJavaFiles(base,
  75                 "package pack; public class A { }",
  76                 "package pack2; public class B { }",
  77                 "package pack3; public class C { }",
  78                 "package pack4; public class C { }",
  79                 "package pack5; public class C { }");
  80         compile(base);
  81         testModuleAttribute(base, moduleDescriptor);
  82     }
  83 
  84     @Test
  85     public void testQualifiedExports(Path base) throws Exception {
  86         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
  87                 .exportsTo("pack", "jdk.compiler")
  88                 .write(base);
  89         tb.writeJavaFiles(base, "package pack; public class A { }");
  90         compile(base);
  91         testModuleAttribute(base, moduleDescriptor);
  92     }
  93 
  94     @Test
  95     public void testQualifiedDynamicExports(Path base) throws Exception {
  96         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
  97                 .exportsTo("pack", "jdk.compiler")
  98                 .write(base);
  99         tb.writeJavaFiles(base, "package pack; public class A { }");
 100         compile(base);
 101         testModuleAttribute(base, moduleDescriptor);
 102     }
 103 
 104     @Test
 105     public void testSeveralQualifiedExports(Path base) throws Exception {
 106         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 107                 .exportsTo("pack", "jdk.compiler, jdk.jdeps")
 108                 .exportsTo("pack2", "jdk.jdeps")
 109                 .exportsTo("pack3", "jdk.compiler")
 110                 .exportsTo("pack4", "jdk.compiler, jdk.jdeps")
 111                 .exportsTo("pack5", "jdk.compiler")
 112                 .write(base);
 113         tb.writeJavaFiles(base,
 114                 "package pack; public class A {}",
 115                 "package pack2; public class B {}",
 116                 "package pack3; public class C {}",
 117                 "package pack4; public class C {}",
 118                 "package pack5; public class C {}");
 119         compile(base);
 120         testModuleAttribute(base, moduleDescriptor);
 121     }
 122 
 123     @Test
 124     public void testRequires(Path base) throws Exception {
 125         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 126                 .requires("jdk.compiler")
 127                 .write(base);
 128         compile(base);
 129         testModuleAttribute(base, moduleDescriptor);
 130     }
 131 
 132     @Test
 133     public void testRequiresTransitive(Path base) throws Exception {
 134         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 135                 .requires("jdk.jdeps", RequiresFlag.TRANSITIVE)
 136                 .write(base);
 137         compile(base);
 138         testModuleAttribute(base, moduleDescriptor);
 139     }
 140 
 141     @Test
 142     public void testRequiresStatic(Path base) throws Exception {
 143         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 144                 .requires("jdk.jdeps", RequiresFlag.STATIC)
 145                 .write(base);
 146         compile(base);
 147         testModuleAttribute(base, moduleDescriptor);
 148     }
 149 
 150     @Test
 151     public void testSeveralRequires(Path base) throws Exception {
 152         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 153                 .requires("jdk.jdeps", RequiresFlag.TRANSITIVE)
 154                 .requires("jdk.compiler")
 155                 .requires("m2", RequiresFlag.STATIC)
 156                 .requires("m3")
 157                 .requires("m4", RequiresFlag.TRANSITIVE)
 158                 .requires("m5", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
 159                 .write(base.resolve("m1"));
 160         tb.writeJavaFiles(base.resolve("m2"), "module m2 { }");
 161         tb.writeJavaFiles(base.resolve("m3"), "module m3 { }");
 162         tb.writeJavaFiles(base.resolve("m4"), "module m4 { }");
 163         tb.writeJavaFiles(base.resolve("m5"), "module m5 { }");
 164         compile(base, "--module-source-path", base.toString(),
 165                 "-d", base.toString());
 166         testModuleAttribute(base.resolve("m1"), moduleDescriptor);
 167     }
 168 
 169     @Test
 170     public void testProvides(Path base) throws Exception {
 171         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 172                 .provides("java.util.Collection", "pack2.D")
 173                 .write(base);
 174         tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{ }");
 175         compile(base);
 176         testModuleAttribute(base, moduleDescriptor);
 177     }
 178 
 179     @Test
 180     public void testSeveralProvides(Path base) throws Exception {
 181         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 182                 .provides("java.util.Collection", "pack2.D")
 183                 .provides("java.util.List", "pack2.D")
 184                 .requires("jdk.compiler")
 185                 .provides("com.sun.tools.javac.Main", "pack2.C")
 186                 .write(base);
 187         tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{ }",
 188                 "package pack2; public class C extends com.sun.tools.javac.Main{ }");
 189         compile(base);
 190         testModuleAttribute(base, moduleDescriptor);
 191     }
 192 
 193     @Test
 194     public void testUses(Path base) throws Exception {
 195         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 196                 .uses("java.util.List")
 197                 .write(base);
 198         compile(base);
 199         testModuleAttribute(base, moduleDescriptor);
 200     }
 201 
 202     @Test
 203     public void testSeveralUses(Path base) throws Exception {
 204         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 205                 .uses("java.util.List")
 206                 .uses("java.util.Collection")
 207                 .requires("jdk.compiler")
 208                 .uses("javax.tools.JavaCompiler")
 209                 .write(base);
 210         compile(base);
 211         testModuleAttribute(base, moduleDescriptor);
 212     }
 213 
 214     @Test
 215     public void testComplex(Path base) throws Exception {
 216         Path m1 = base.resolve("m1");
 217         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
 218                 .exports("pack1")
 219                 .exports("pack3")
 220                 .exportsTo("packTo1", "m2")
 221                 .exportsTo("packTo3", "m3")
 222                 .requires("jdk.compiler")
 223                 .requires("m2", RequiresFlag.TRANSITIVE)
 224                 .requires("m3", RequiresFlag.STATIC)
 225                 .requires("m4", RequiresFlag.TRANSITIVE, RequiresFlag.STATIC)
 226                 .provides("java.util.List", "pack1.C", "pack2.D")
 227                 .uses("java.util.List")
 228                 .uses("java.nio.file.Path")
 229                 .requires("jdk.jdeps", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
 230                 .requires("m5", RequiresFlag.STATIC)
 231                 .requires("m6", RequiresFlag.TRANSITIVE)
 232                 .requires("java.compiler")
 233                 .exportsTo("packTo4", "java.compiler")
 234                 .exportsTo("packTo2", "java.compiler")
 235                 .exports("pack4")
 236                 .exports("pack2")
 237                 .write(m1);
 238         tb.writeJavaFiles(m1, "package pack1; public class C extends java.util.ArrayList{ }",
 239                 "package pack2; public class D extends java.util.ArrayList{ }",
 240                 "package pack3; public class D extends java.util.ArrayList{ }",
 241                 "package pack4; public class D extends java.util.ArrayList{ }");
 242         tb.writeJavaFiles(m1,
 243                 "package packTo1; public class T1 {}",
 244                 "package packTo2; public class T2 {}",
 245                 "package packTo3; public class T3 {}",
 246                 "package packTo4; public class T4 {}");
 247         tb.writeJavaFiles(base.resolve("m2"), "module m2 { }");
 248         tb.writeJavaFiles(base.resolve("m3"), "module m3 { }");
 249         tb.writeJavaFiles(base.resolve("m4"), "module m4 { }");
 250         tb.writeJavaFiles(base.resolve("m5"), "module m5 { }");
 251         tb.writeJavaFiles(base.resolve("m6"), "module m6 { }");
 252         compile(base, "--module-source-path", base.toString(),
 253                 "-d", base.toString());
 254         testModuleAttribute(m1, moduleDescriptor);
 255     }
 256 }


  29  *          jdk.compiler/com.sun.tools.javac.api
  30  *          jdk.compiler/com.sun.tools.javac.main
  31  *          jdk.compiler/com.sun.tools.javac.util
  32  *          jdk.jdeps/com.sun.tools.classfile
  33  * @library /tools/lib ../lib /tools/javac/lib
  34  * @build toolbox.ToolBox toolbox.JavacTask toolbox.ToolBox
  35  *      TestBase TestResult ModuleTestBase
  36  * @run main ModuleTest
  37  */
  38 
  39 import java.nio.file.Path;
  40 
  41 public class ModuleTest extends ModuleTestBase {
  42 
  43     public static void main(String[] args) throws Exception {
  44         new ModuleTest().run();
  45     }
  46 
  47     @Test
  48     public void testEmptyModule(Path base) throws Exception {
  49         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
  50                 .write(base);
  51         compile(base);
  52         testModuleAttribute(base, moduleDescriptor);
  53     }
  54 
  55     @Test
  56     public void testExports(Path base) throws Exception {
  57         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
  58                 .exports("pack")
  59                 .write(base);
  60         tb.writeJavaFiles(base, "package pack; public class C extends java.util.ArrayList{ }");
  61         compile(base);
  62         testModuleAttribute(base, moduleDescriptor);
  63     }
  64 
  65     @Test
  66     public void testSeveralExports(Path base) throws Exception {
  67         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
  68                 .exports("pack")
  69                 .exports("pack2")
  70                 .exports("pack3")
  71                 .exports("pack4")
  72                 .exports("pack5")
  73                 .write(base);
  74         tb.writeJavaFiles(base,
  75                 "package pack; public class A { }",
  76                 "package pack2; public class B { }",
  77                 "package pack3; public class C { }",
  78                 "package pack4; public class C { }",
  79                 "package pack5; public class C { }");
  80         compile(base);
  81         testModuleAttribute(base, moduleDescriptor);
  82     }
  83 
  84     @Test
  85     public void testQualifiedExports(Path base) throws Exception {
  86         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
  87                 .exportsTo("pack", "jdk.compiler")
  88                 .write(base);
  89         tb.writeJavaFiles(base, "package pack; public class A { }");
  90         compile(base);
  91         testModuleAttribute(base, moduleDescriptor);
  92     }
  93 
  94     @Test
  95     public void testQualifiedDynamicExports(Path base) throws Exception {
  96         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
  97                 .exportsTo("pack", "jdk.compiler")
  98                 .write(base);
  99         tb.writeJavaFiles(base, "package pack; public class A { }");
 100         compile(base);
 101         testModuleAttribute(base, moduleDescriptor);
 102     }
 103 
 104     @Test
 105     public void testSeveralQualifiedExports(Path base) throws Exception {
 106         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 107                 .exportsTo("pack", "jdk.compiler, jdk.jdeps")
 108                 .exportsTo("pack2", "jdk.jdeps")
 109                 .exportsTo("pack3", "jdk.compiler")
 110                 .exportsTo("pack4", "jdk.compiler, jdk.jdeps")
 111                 .exportsTo("pack5", "jdk.compiler")
 112                 .write(base);
 113         tb.writeJavaFiles(base,
 114                 "package pack; public class A {}",
 115                 "package pack2; public class B {}",
 116                 "package pack3; public class C {}",
 117                 "package pack4; public class C {}",
 118                 "package pack5; public class C {}");
 119         compile(base);
 120         testModuleAttribute(base, moduleDescriptor);
 121     }
 122 
 123     @Test
 124     public void testRequires(Path base) throws Exception {
 125         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 126                 .requires("jdk.compiler")
 127                 .write(base);
 128         compile(base);
 129         testModuleAttribute(base, moduleDescriptor);
 130     }
 131 
 132     @Test
 133     public void testRequiresTransitive(Path base) throws Exception {
 134         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 135                 .requires("jdk.jdeps", RequiresFlag.TRANSITIVE)
 136                 .write(base);
 137         compile(base);
 138         testModuleAttribute(base, moduleDescriptor);
 139     }
 140 
 141     @Test
 142     public void testRequiresStatic(Path base) throws Exception {
 143         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 144                 .requires("jdk.jdeps", RequiresFlag.STATIC)
 145                 .write(base);
 146         compile(base);
 147         testModuleAttribute(base, moduleDescriptor);
 148     }
 149 
 150     @Test
 151     public void testSeveralRequires(Path base) throws Exception {
 152         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1x")
 153                 .requires("jdk.jdeps", RequiresFlag.TRANSITIVE)
 154                 .requires("jdk.compiler")
 155                 .requires("m2x", RequiresFlag.STATIC)
 156                 .requires("m3x")
 157                 .requires("m4x", RequiresFlag.TRANSITIVE)
 158                 .requires("m5x", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
 159                 .write(base.resolve("m1x"));
 160         tb.writeJavaFiles(base.resolve("m2x"), "module m2x { }");
 161         tb.writeJavaFiles(base.resolve("m3x"), "module m3x { }");
 162         tb.writeJavaFiles(base.resolve("m4x"), "module m4x { }");
 163         tb.writeJavaFiles(base.resolve("m5x"), "module m5x { }");
 164         compile(base, "--module-source-path", base.toString(),
 165                 "-d", base.toString());
 166         testModuleAttribute(base.resolve("m1x"), moduleDescriptor);
 167     }
 168 
 169     @Test
 170     public void testProvides(Path base) throws Exception {
 171         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 172                 .provides("java.util.Collection", "pack2.D")
 173                 .write(base);
 174         tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{ }");
 175         compile(base);
 176         testModuleAttribute(base, moduleDescriptor);
 177     }
 178 
 179     @Test
 180     public void testSeveralProvides(Path base) throws Exception {
 181         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 182                 .provides("java.util.Collection", "pack2.D")
 183                 .provides("java.util.List", "pack2.D")
 184                 .requires("jdk.compiler")
 185                 .provides("com.sun.tools.javac.Main", "pack2.C")
 186                 .write(base);
 187         tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{ }",
 188                 "package pack2; public class C extends com.sun.tools.javac.Main{ }");
 189         compile(base);
 190         testModuleAttribute(base, moduleDescriptor);
 191     }
 192 
 193     @Test
 194     public void testUses(Path base) throws Exception {
 195         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 196                 .uses("java.util.List")
 197                 .write(base);
 198         compile(base);
 199         testModuleAttribute(base, moduleDescriptor);
 200     }
 201 
 202     @Test
 203     public void testSeveralUses(Path base) throws Exception {
 204         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
 205                 .uses("java.util.List")
 206                 .uses("java.util.Collection")
 207                 .requires("jdk.compiler")
 208                 .uses("javax.tools.JavaCompiler")
 209                 .write(base);
 210         compile(base);
 211         testModuleAttribute(base, moduleDescriptor);
 212     }
 213 
 214     @Test
 215     public void testComplex(Path base) throws Exception {
 216         Path m1 = base.resolve("m1x");
 217         ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1x")
 218                 .exports("pack1")
 219                 .exports("pack3")
 220                 .exportsTo("packTo1", "m2x")
 221                 .exportsTo("packTo3", "m3x")
 222                 .requires("jdk.compiler")
 223                 .requires("m2x", RequiresFlag.TRANSITIVE)
 224                 .requires("m3x", RequiresFlag.STATIC)
 225                 .requires("m4x", RequiresFlag.TRANSITIVE, RequiresFlag.STATIC)
 226                 .provides("java.util.List", "pack1.C", "pack2.D")
 227                 .uses("java.util.List")
 228                 .uses("java.nio.file.Path")
 229                 .requires("jdk.jdeps", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
 230                 .requires("m5x", RequiresFlag.STATIC)
 231                 .requires("m6x", RequiresFlag.TRANSITIVE)
 232                 .requires("java.compiler")
 233                 .exportsTo("packTo4", "java.compiler")
 234                 .exportsTo("packTo2", "java.compiler")
 235                 .exports("pack4")
 236                 .exports("pack2")
 237                 .write(m1);
 238         tb.writeJavaFiles(m1, "package pack1; public class C extends java.util.ArrayList{ }",
 239                 "package pack2; public class D extends java.util.ArrayList{ }",
 240                 "package pack3; public class D extends java.util.ArrayList{ }",
 241                 "package pack4; public class D extends java.util.ArrayList{ }");
 242         tb.writeJavaFiles(m1,
 243                 "package packTo1; public class T1 {}",
 244                 "package packTo2; public class T2 {}",
 245                 "package packTo3; public class T3 {}",
 246                 "package packTo4; public class T4 {}");
 247         tb.writeJavaFiles(base.resolve("m2x"), "module m2x { }");
 248         tb.writeJavaFiles(base.resolve("m3x"), "module m3x { }");
 249         tb.writeJavaFiles(base.resolve("m4x"), "module m4x { }");
 250         tb.writeJavaFiles(base.resolve("m5x"), "module m5x { }");
 251         tb.writeJavaFiles(base.resolve("m6x"), "module m6x { }");
 252         compile(base, "--module-source-path", base.toString(),
 253                 "-d", base.toString());
 254         testModuleAttribute(m1, moduleDescriptor);
 255     }
 256 }
< prev index next >