7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @library /test/lib 27 * @modules jdk.compiler 28 * @build AddExportsTest jdk.test.lib.compiler.CompilerUtils 29 * @run testng AddExportsTest 30 * @summary Basic tests for java --add-exports 31 */ 32 33 import java.nio.file.Path; 34 import java.nio.file.Paths; 35 import java.util.stream.Stream; 36 37 import jdk.test.lib.compiler.CompilerUtils; 38 import jdk.test.lib.process.OutputAnalyzer; 39 import static jdk.test.lib.process.ProcessTools.*; 40 41 import org.testng.annotations.BeforeTest; 42 import org.testng.annotations.DataProvider; 43 import org.testng.annotations.Test; 44 import static org.testng.Assert.*; 45 46 47 @Test 48 public class AddExportsTest { 49 50 private static final String TEST_SRC = System.getProperty("test.src"); 51 52 private static final Path SRC_DIR = Paths.get(TEST_SRC, "src"); 53 private static final Path MODS_DIR = Paths.get("mods"); 54 55 // test module m1 that uses Unsafe 56 private static final String TEST1_MODULE = "m1"; 57 private static final String TEST1_MAIN_CLASS = "jdk.test1.Main"; 58 59 60 61 // test module m3 uses m4 internals 62 private static final String TEST3_MODULE = "m3"; 63 private static final String TEST3_MAIN_CLASS = "jdk.test3.Main"; 64 private static final String TEST4_MODULE = "m4"; 65 66 67 @BeforeTest 68 public void compileTestModules() throws Exception { 69 70 // javac -d mods/m1 src/m1/** 71 boolean compiled = CompilerUtils.compile( 72 SRC_DIR.resolve(TEST1_MODULE), 73 MODS_DIR.resolve(TEST1_MODULE), 74 "--add-exports", "java.base/jdk.internal.misc=m1"); 75 assertTrue(compiled, "module " + TEST1_MODULE + " did not compile"); 76 77 78 79 // javac -d mods/m3 src/m3/** 80 compiled = CompilerUtils.compile( 81 SRC_DIR.resolve(TEST3_MODULE), 82 MODS_DIR.resolve(TEST3_MODULE)); 83 assertTrue(compiled, "module " + TEST3_MODULE + " did not compile"); 84 85 // javac -d mods/m4 src/m4/** 86 compiled = CompilerUtils.compile( 87 SRC_DIR.resolve(TEST4_MODULE), 88 MODS_DIR.resolve(TEST4_MODULE)); 89 assertTrue(compiled, "module " + TEST4_MODULE + " did not compile"); 90 } 91 92 /** 93 * Sanity check with -version 94 */ 95 public void testSanity() throws Exception { 96 97 int exitValue 129 /** 130 * Run named module that uses jdk.internal.misc.Unsafe 131 */ 132 public void testNamedModule() throws Exception { 133 134 // java --add-exports java.base/jdk.internal.misc=test \ 135 // --module-path mods -m $TESTMODULE/$MAIN_CLASS 136 137 String mid = TEST1_MODULE + "/" + TEST1_MAIN_CLASS; 138 int exitValue = 139 executeTestJava("--add-exports", "java.base/jdk.internal.misc=" + TEST1_MODULE, 140 "--module-path", MODS_DIR.toString(), 141 "-m", mid) 142 .outputTo(System.out) 143 .errorTo(System.out) 144 .getExitValue(); 145 146 assertTrue(exitValue == 0); 147 } 148 149 150 151 /** 152 * Test --add-exports with module that is added to the set of root modules 153 * with --add-modules. 154 */ 155 public void testWithAddMods() throws Exception { 156 157 // java --add-exports m4/jdk.test4=m3 --module-path mods -m ... 158 String mid = TEST3_MODULE + "/" + TEST3_MAIN_CLASS; 159 int exitValue = executeTestJava( 160 "--add-exports", "m4/jdk.test4=m3", 161 "--module-path", MODS_DIR.toString(), 162 "--add-modules", TEST4_MODULE, 163 "-m", mid) 164 .outputTo(System.out) 165 .errorTo(System.out) 166 .getExitValue(); 167 168 assertTrue(exitValue == 0); 169 } | 7 * published by the Free Software Foundation. 8 * 9 * This code is distributed in the hope that it will be useful, but WITHOUT 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 12 * version 2 for more details (a copy is included in the LICENSE file that 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 /** 25 * @test 26 * @library /test/lib 27 * @modules java.compiler 28 * jdk.compiler 29 * @build AddExportsTest jdk.test.lib.compiler.CompilerUtils 30 * @run testng AddExportsTest 31 * @summary Basic tests for java --add-exports 32 */ 33 34 import java.nio.file.Path; 35 import java.nio.file.Paths; 36 import java.util.stream.Stream; 37 38 import jdk.test.lib.compiler.CompilerUtils; 39 import jdk.test.lib.process.OutputAnalyzer; 40 import static jdk.test.lib.process.ProcessTools.*; 41 42 import org.testng.annotations.BeforeTest; 43 import org.testng.annotations.DataProvider; 44 import org.testng.annotations.Test; 45 import static org.testng.Assert.*; 46 47 48 @Test 49 public class AddExportsTest { 50 51 private static final String TEST_SRC = System.getProperty("test.src"); 52 53 private static final Path SRC_DIR = Paths.get(TEST_SRC, "src"); 54 private static final Path MODS_DIR = Paths.get("mods"); 55 private static final Path UPGRADE_MODS_DIRS = Paths.get("upgrademods"); 56 57 // test module m1 that uses Unsafe 58 private static final String TEST1_MODULE = "m1"; 59 private static final String TEST1_MAIN_CLASS = "jdk.test1.Main"; 60 61 // test module m2 uses java.compiler internals 62 private static final String TEST2_MODULE = "m2"; 63 private static final String TEST2_MAIN_CLASS = "jdk.test2.Main"; 64 65 // test module m3 uses m4 internals 66 private static final String TEST3_MODULE = "m3"; 67 private static final String TEST3_MAIN_CLASS = "jdk.test3.Main"; 68 private static final String TEST4_MODULE = "m4"; 69 70 71 @BeforeTest 72 public void compileTestModules() throws Exception { 73 74 // javac -d mods/m1 src/m1/** 75 boolean compiled = CompilerUtils.compile( 76 SRC_DIR.resolve(TEST1_MODULE), 77 MODS_DIR.resolve(TEST1_MODULE), 78 "--add-exports", "java.base/jdk.internal.misc=m1"); 79 assertTrue(compiled, "module " + TEST1_MODULE + " did not compile"); 80 81 // javac -d upgrademods/java.compiler src/java.compiler/** 82 compiled = CompilerUtils.compile( 83 SRC_DIR.resolve("java.compiler"), 84 UPGRADE_MODS_DIRS.resolve("java.compiler")); 85 assertTrue(compiled, "module java.compiler did not compile"); 86 87 // javac --upgrade-module-path upgrademods -d mods/m2 src/m2/** 88 compiled = CompilerUtils.compile( 89 SRC_DIR.resolve(TEST2_MODULE), 90 MODS_DIR.resolve(TEST2_MODULE), 91 "--upgrade-module-path", UPGRADE_MODS_DIRS.toString(), 92 "--add-exports", "java.compiler/javax.tools.internal=m2"); 93 assertTrue(compiled, "module " + TEST2_MODULE + " did not compile"); 94 95 // javac -d mods/m3 src/m3/** 96 compiled = CompilerUtils.compile( 97 SRC_DIR.resolve(TEST3_MODULE), 98 MODS_DIR.resolve(TEST3_MODULE)); 99 assertTrue(compiled, "module " + TEST3_MODULE + " did not compile"); 100 101 // javac -d mods/m4 src/m4/** 102 compiled = CompilerUtils.compile( 103 SRC_DIR.resolve(TEST4_MODULE), 104 MODS_DIR.resolve(TEST4_MODULE)); 105 assertTrue(compiled, "module " + TEST4_MODULE + " did not compile"); 106 } 107 108 /** 109 * Sanity check with -version 110 */ 111 public void testSanity() throws Exception { 112 113 int exitValue 145 /** 146 * Run named module that uses jdk.internal.misc.Unsafe 147 */ 148 public void testNamedModule() throws Exception { 149 150 // java --add-exports java.base/jdk.internal.misc=test \ 151 // --module-path mods -m $TESTMODULE/$MAIN_CLASS 152 153 String mid = TEST1_MODULE + "/" + TEST1_MAIN_CLASS; 154 int exitValue = 155 executeTestJava("--add-exports", "java.base/jdk.internal.misc=" + TEST1_MODULE, 156 "--module-path", MODS_DIR.toString(), 157 "-m", mid) 158 .outputTo(System.out) 159 .errorTo(System.out) 160 .getExitValue(); 161 162 assertTrue(exitValue == 0); 163 } 164 165 /** 166 * Test --add-exports with upgraded module 167 */ 168 public void testWithUpgradedModule() throws Exception { 169 170 // java --add-exports java.compiler/javax.tools.internal=m2 171 // --upgrade-module-path upgrademods --module-path mods -m ... 172 String mid = TEST2_MODULE + "/" + TEST2_MAIN_CLASS; 173 int exitValue = executeTestJava( 174 "--add-exports", "java.compiler/javax.tools.internal=m2", 175 "--upgrade-module-path", UPGRADE_MODS_DIRS.toString(), 176 "--module-path", MODS_DIR.toString(), 177 "-m", mid) 178 .outputTo(System.out) 179 .errorTo(System.out) 180 .getExitValue(); 181 182 assertTrue(exitValue == 0); 183 } 184 185 /** 186 * Test --add-exports with module that is added to the set of root modules 187 * with --add-modules. 188 */ 189 public void testWithAddMods() throws Exception { 190 191 // java --add-exports m4/jdk.test4=m3 --module-path mods -m ... 192 String mid = TEST3_MODULE + "/" + TEST3_MAIN_CLASS; 193 int exitValue = executeTestJava( 194 "--add-exports", "m4/jdk.test4=m3", 195 "--module-path", MODS_DIR.toString(), 196 "--add-modules", TEST4_MODULE, 197 "-m", mid) 198 .outputTo(System.out) 199 .errorTo(System.out) 200 .getExitValue(); 201 202 assertTrue(exitValue == 0); 203 } |