mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8170250: update/improve testing of classfile module attribute
Reviewed-by: jjg, jlahoda
This commit is contained in:
parent
a0dee349e1
commit
408d7e99f7
3 changed files with 290 additions and 56 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2015, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2015, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
|
@ -24,7 +24,7 @@
|
|||
/*
|
||||
* @test
|
||||
* @summary Module attribute tests
|
||||
* @bug 8080878 8161906 8162713
|
||||
* @bug 8080878 8161906 8162713 8170250
|
||||
* @modules java.compiler
|
||||
* jdk.compiler/com.sun.tools.javac.api
|
||||
* jdk.compiler/com.sun.tools.javac.main
|
||||
|
@ -52,6 +52,28 @@ public class ModuleTest extends ModuleTestBase {
|
|||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOpenEmptyModule(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m", ModuleFlag.OPEN)
|
||||
.write(base);
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testModuleName(Path base) throws Exception {
|
||||
testName("module.name", base.resolve("dot"));
|
||||
testName("module.exports.component.subcomponent.more.dots", base.resolve("dots"));
|
||||
testName("moduleName", base.resolve("noDots"));
|
||||
}
|
||||
|
||||
private void testName(String name, Path path) throws Exception{
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor(name)
|
||||
.write(path);
|
||||
compile(path);
|
||||
testModuleAttribute(path, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testExports(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
|
||||
|
@ -91,16 +113,6 @@ public class ModuleTest extends ModuleTestBase {
|
|||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQualifiedDynamicExports(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
|
||||
.exportsTo("pack", "jdk.compiler")
|
||||
.write(base);
|
||||
tb.writeJavaFiles(base, "package pack; public class A { }");
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSeveralQualifiedExports(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
|
||||
|
@ -120,6 +132,47 @@ public class ModuleTest extends ModuleTestBase {
|
|||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOpens(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("module.name")
|
||||
.opens("pack")
|
||||
.write(base);
|
||||
tb.writeJavaFiles(base, "package pack; public class C extends java.util.ArrayList{ }");
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testQualifiedOpens(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
|
||||
.opensTo("pack", "jdk.compiler")
|
||||
.write(base);
|
||||
tb.writeJavaFiles(base, "package pack; public class A { }");
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testSeveralOpens(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("module.m1.name")
|
||||
.opensTo("pack", "jdk.compiler, jdk.jdeps")
|
||||
.opensTo("pack2", "jdk.jdeps")
|
||||
.opensTo("pack3", "jdk.compiler")
|
||||
.opensTo("pack4", "jdk.compiler, jdk.jdeps")
|
||||
.opensTo("pack5", "jdk.compiler")
|
||||
.opens("pack6")
|
||||
.write(base);
|
||||
tb.writeJavaFiles(base,
|
||||
"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 {}",
|
||||
"package pack6; public class C {}");
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testRequires(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
|
||||
|
@ -182,10 +235,12 @@ public class ModuleTest extends ModuleTestBase {
|
|||
.provides("java.util.Collection", "pack2.D")
|
||||
.provides("java.util.List", "pack2.D")
|
||||
.requires("jdk.compiler")
|
||||
.provides("javax.tools.FileObject", "pack2.E")
|
||||
.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 com.sun.tools.javac.Main{ }");
|
||||
"package pack2; public class C extends com.sun.tools.javac.Main{ }",
|
||||
"package pack2; public class E extends javax.tools.SimpleJavaFileObject{ public E(){ super(null,null); } }");
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
}
|
||||
|
@ -203,9 +258,10 @@ public class ModuleTest extends ModuleTestBase {
|
|||
public void testSeveralUses(Path base) throws Exception {
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m")
|
||||
.uses("java.util.List")
|
||||
.uses("java.util.Collection")
|
||||
.uses("java.util.Collection") // from java.base
|
||||
.requires("jdk.compiler")
|
||||
.uses("javax.tools.JavaCompiler")
|
||||
.uses("javax.tools.JavaCompiler") // from java.compiler
|
||||
.uses("com.sun.tools.javac.Main") // from jdk.compiler
|
||||
.write(base);
|
||||
compile(base);
|
||||
testModuleAttribute(base, moduleDescriptor);
|
||||
|
@ -216,9 +272,52 @@ public class ModuleTest extends ModuleTestBase {
|
|||
Path m1 = base.resolve("m1x");
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1x")
|
||||
.exports("pack1")
|
||||
.exports("pack3")
|
||||
.opens("pack3")
|
||||
.exportsTo("packTo1", "m2x")
|
||||
.opensTo("packTo1", "m2x") // the same as exportsTo
|
||||
.opensTo("packTo3", "m3x")
|
||||
.requires("jdk.compiler")
|
||||
.requires("m2x", RequiresFlag.TRANSITIVE)
|
||||
.requires("m3x", RequiresFlag.STATIC)
|
||||
.requires("m4x", RequiresFlag.TRANSITIVE, RequiresFlag.STATIC)
|
||||
.provides("java.util.List", "pack1.C", "pack2.D")
|
||||
.uses("java.util.List")
|
||||
.uses("java.nio.file.Path")
|
||||
.requires("jdk.jdeps", RequiresFlag.STATIC, RequiresFlag.TRANSITIVE)
|
||||
.requires("m5x", RequiresFlag.STATIC)
|
||||
.requires("m6x", RequiresFlag.TRANSITIVE)
|
||||
.requires("java.compiler")
|
||||
.opensTo("packTo4", "java.compiler")
|
||||
.exportsTo("packTo2", "java.compiler")
|
||||
.opens("pack2") // same as exports
|
||||
.opens("pack4")
|
||||
.exports("pack2")
|
||||
.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 {}",
|
||||
"package packTo3; public class T3 {}",
|
||||
"package packTo4; public class T4 {}");
|
||||
tb.writeJavaFiles(base.resolve("m2x"), "module m2x { }");
|
||||
tb.writeJavaFiles(base.resolve("m3x"), "module m3x { }");
|
||||
tb.writeJavaFiles(base.resolve("m4x"), "module m4x { }");
|
||||
tb.writeJavaFiles(base.resolve("m5x"), "module m5x { }");
|
||||
tb.writeJavaFiles(base.resolve("m6x"), "module m6x { }");
|
||||
compile(base, "--module-source-path", base.toString(),
|
||||
"-d", base.toString());
|
||||
testModuleAttribute(m1, moduleDescriptor);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testOpenComplexModule(Path base) throws Exception {
|
||||
Path m1 = base.resolve("m1x");
|
||||
ModuleDescriptor moduleDescriptor = new ModuleDescriptor("m1x", ModuleFlag.OPEN)
|
||||
.exports("pack1")
|
||||
.exportsTo("packTo1", "m2x")
|
||||
.exportsTo("packTo3", "m3x")
|
||||
.requires("jdk.compiler")
|
||||
.requires("m2x", RequiresFlag.TRANSITIVE)
|
||||
.requires("m3x", RequiresFlag.STATIC)
|
||||
|
@ -230,9 +329,7 @@ public class ModuleTest extends ModuleTestBase {
|
|||
.requires("m5x", RequiresFlag.STATIC)
|
||||
.requires("m6x", RequiresFlag.TRANSITIVE)
|
||||
.requires("java.compiler")
|
||||
.exportsTo("packTo4", "java.compiler")
|
||||
.exportsTo("packTo2", "java.compiler")
|
||||
.exports("pack4")
|
||||
.exports("pack2")
|
||||
.write(m1);
|
||||
tb.writeJavaFiles(m1, "package pack1; public class C extends java.util.ArrayList{ }",
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue