8169069: Module system implementation refresh (11/2016)

Co-authored-by: Jonathan Gibbons <jonathan.gibbons@oracle.com>
Co-authored-by: Jan Lahoda <jan.lahoda@oracle.com>
Co-authored-by: Mandy Chung <mandy.chung@oracle.com>
Co-authored-by: Bhavesh Patel <bhavesh.x.patel@oracle.com>
Co-authored-by: Andrey Nazarov <andrey.x.nazarov@oracle.com>
Reviewed-by: mcimadamore, jjg, mchung, anazarov
This commit is contained in:
Alan Bateman 2016-12-01 09:02:42 +00:00
parent 51f50b64e5
commit 22e233b2e9
214 changed files with 5453 additions and 1175 deletions

View file

@ -24,8 +24,9 @@
/*
* @test
* @summary Module attribute tests
* @bug 8080878
* @modules jdk.compiler/com.sun.tools.javac.api
* @bug 8080878 8161906 8162713
* @modules java.compiler
* jdk.compiler/com.sun.tools.javac.api
* jdk.compiler/com.sun.tools.javac.main
* jdk.compiler/com.sun.tools.javac.util
* jdk.jdeps/com.sun.tools.classfile
@ -56,7 +57,7 @@ public class ModuleTest extends ModuleTestBase {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.exports("pack")
.write(base);
tb.writeJavaFiles(base, "package pack; public class C extends java.util.ArrayList{}");
tb.writeJavaFiles(base, "package pack; public class C extends java.util.ArrayList{ }");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@ -67,11 +68,15 @@ public class ModuleTest extends ModuleTestBase {
.exports("pack")
.exports("pack2")
.exports("pack3")
.exports("pack4")
.exports("pack5")
.write(base);
tb.writeJavaFiles(base,
"package pack; public class A {}",
"package pack2; public class B {}",
"package pack3; public class C {}");
"package pack; public class A { }",
"package pack2; public class B { }",
"package pack3; public class C { }",
"package pack4; public class C { }",
"package pack5; public class C { }");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@ -81,7 +86,17 @@ public class ModuleTest extends ModuleTestBase {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.exportsTo("pack", "jdk.compiler")
.write(base);
tb.writeJavaFiles(base, "package pack; public class A {}");
tb.writeJavaFiles(base, "package pack; public class A { }");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@Test
public void testQualifiedDynamicExports(Path base) throws Exception {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.exportsTo("pack", "jdk.compiler")
.write(base);
tb.writeJavaFiles(base, "package pack; public class A { }");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@ -89,14 +104,18 @@ public class ModuleTest extends ModuleTestBase {
@Test
public void testSeveralQualifiedExports(Path base) throws Exception {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.exportsTo("pack", "jdk.compiler, java.xml")
.exportsTo("pack2", "java.xml")
.exportsTo("pack", "jdk.compiler, jdk.jdeps")
.exportsTo("pack2", "jdk.jdeps")
.exportsTo("pack3", "jdk.compiler")
.exportsTo("pack4", "jdk.compiler, jdk.jdeps")
.exportsTo("pack5", "jdk.compiler")
.write(base);
tb.writeJavaFiles(base,
"package pack; public class A {}",
"package pack2; public class B {}",
"package pack3; public class C {}");
"package pack3; public class C {}",
"package pack4; public class C {}",
"package pack5; public class C {}");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@ -111,9 +130,18 @@ public class ModuleTest extends ModuleTestBase {
}
@Test
public void testRequiresPublic(Path base) throws Exception {
public void testRequiresTransitive(Path base) throws Exception {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.requiresPublic("java.xml")
.requires("jdk.jdeps", RequiresFlag.TRANSITIVE)
.write(base);
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@Test
public void testRequiresStatic(Path base) throws Exception {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.requires("jdk.jdeps", RequiresFlag.STATIC)
.write(base);
compile(base);
testModuleAttribute(base, moduleDescriptor);
@ -122,13 +150,20 @@ public class ModuleTest extends ModuleTestBase {
@Test
public void testSeveralRequires(Path base) throws Exception {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.requiresPublic("java.xml")
.requires("java.compiler")
.requires("jdk.jdeps", RequiresFlag.TRANSITIVE)
.requires("jdk.compiler")
.requiresPublic("jdk.scripting.nashorn")
.write(base);
compile(base);
testModuleAttribute(base, moduleDescriptor);
.requires("m2", RequiresFlag.STATIC)
.requires("m3")
.requires("m4", RequiresFlag.TRANSITIVE)
.requires("m5", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
.write(base.resolve("m1"));
tb.writeJavaFiles(base.resolve("m2"), "module m2 { }");
tb.writeJavaFiles(base.resolve("m3"), "module m3 { }");
tb.writeJavaFiles(base.resolve("m4"), "module m4 { }");
tb.writeJavaFiles(base.resolve("m5"), "module m5 { }");
compile(base, "--module-source-path", base.toString(),
"-d", base.toString());
testModuleAttribute(base.resolve("m1"), moduleDescriptor);
}
@Test
@ -136,7 +171,7 @@ public class ModuleTest extends ModuleTestBase {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.provides("java.util.Collection", "pack2.D")
.write(base);
tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{}");
tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{ }");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@ -146,15 +181,11 @@ public class ModuleTest extends ModuleTestBase {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.provides("java.util.Collection", "pack2.D")
.provides("java.util.List", "pack2.D")
.requires("java.logging")
.provides("java.util.logging.Logger", "pack2.C")
.requires("jdk.compiler")
.provides("com.sun.tools.javac.Main", "pack2.C")
.write(base);
tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{}",
"package pack2; public class C extends java.util.logging.Logger{ " +
"public C() { super(\"\",\"\"); } \n" +
"C(String a,String b){" +
" super(a,b);" +
"}}");
tb.writeJavaFiles(base, "package pack2; public class D extends java.util.ArrayList{ }",
"package pack2; public class C extends com.sun.tools.javac.Main{ }");
compile(base);
testModuleAttribute(base, moduleDescriptor);
}
@ -173,8 +204,8 @@ public class ModuleTest extends ModuleTestBase {
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.uses("java.util.List")
.uses("java.util.Collection")
.requires("java.logging")
.uses("java.util.logging.Logger")
.requires("jdk.compiler")
.uses("javax.tools.JavaCompiler")
.write(base);
compile(base);
testModuleAttribute(base, moduleDescriptor);
@ -182,26 +213,44 @@ public class ModuleTest extends ModuleTestBase {
@Test
public void testComplex(Path base) throws Exception {
Path m1 = base.resolve("m1");
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1")
.exports("pack1")
.exportsTo("packTo1", "java.xml")
.exports("pack3")
.exportsTo("packTo1", "m2")
.exportsTo("packTo3", "m3")
.requires("jdk.compiler")
.requiresPublic("java.xml")
.provides("java.util.List", "pack1.C")
.requires("m2", RequiresFlag.TRANSITIVE)
.requires("m3", RequiresFlag.STATIC)
.requires("m4", RequiresFlag.TRANSITIVE, RequiresFlag.STATIC)
.provides("java.util.List", "pack1.C", "pack2.D")
.uses("java.util.List")
.uses("java.nio.file.Path")
.provides("java.util.List", "pack2.D")
.requiresPublic("java.desktop")
.requires("jdk.jdeps", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
.requires("m5", RequiresFlag.STATIC)
.requires("m6", RequiresFlag.TRANSITIVE)
.requires("java.compiler")
.exportsTo("packTo4", "java.compiler")
.exportsTo("packTo2", "java.compiler")
.exports("pack4")
.exports("pack2")
.write(base);
tb.writeJavaFiles(base, "package pack1; public class C extends java.util.ArrayList{}",
"package pack2; public class D extends java.util.ArrayList{}");
tb.writeJavaFiles(base,
.write(m1);
tb.writeJavaFiles(m1, "package pack1; public class C extends java.util.ArrayList{ }",
"package pack2; public class D extends java.util.ArrayList{ }",
"package pack3; public class D extends java.util.ArrayList{ }",
"package pack4; public class D extends java.util.ArrayList{ }");
tb.writeJavaFiles(m1,
"package packTo1; public class T1 {}",
"package packTo2; public class T2 {}");
compile(base);
testModuleAttribute(base, moduleDescriptor);
"package packTo2; public class T2 {}",
"package packTo3; public class T3 {}",
"package packTo4; public class T4 {}");
tb.writeJavaFiles(base.resolve("m2"), "module m2 { }");
tb.writeJavaFiles(base.resolve("m3"), "module m3 { }");
tb.writeJavaFiles(base.resolve("m4"), "module m4 { }");
tb.writeJavaFiles(base.resolve("m5"), "module m5 { }");
tb.writeJavaFiles(base.resolve("m6"), "module m6 { }");
compile(base, "--module-source-path", base.toString(),
"-d", base.toString());
testModuleAttribute(m1, moduleDescriptor);
}
}