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 } |