Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
PojavLauncherTeam
GitHub Repository: PojavLauncherTeam/mobile
Path: blob/master/test/jdk/tools/jlink/plugins/SystemModuleDescriptors/CompiledVersionTest.java
41153 views
1
/*
2
* Copyright (c) 2016, 2018, Oracle and/or its affiliates. All rights reserved.
3
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4
*
5
* This code is free software; you can redistribute it and/or modify it
6
* under the terms of the GNU General Public License version 2 only, as
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
import java.io.File;
25
import java.nio.file.Files;
26
import java.nio.file.Path;
27
import java.nio.file.Paths;
28
import java.util.Arrays;
29
import java.util.stream.Collectors;
30
import java.util.stream.Stream;
31
32
import jdk.test.lib.compiler.CompilerUtils;
33
import jdk.test.lib.util.FileUtils;
34
import static jdk.test.lib.process.ProcessTools.*;
35
36
37
import org.testng.annotations.BeforeTest;
38
import org.testng.annotations.Test;
39
import static org.testng.Assert.*;
40
41
/**
42
* @test
43
* @library /test/lib
44
* @modules jdk.compiler jdk.jlink
45
* @build jdk.test.lib.compiler.CompilerUtils
46
* jdk.test.lib.util.FileUtils
47
* jdk.test.lib.Platform
48
* CompiledVersionTest jdk.test.lib.process.ProcessTools
49
* @run testng CompiledVersionTest
50
*/
51
52
public class CompiledVersionTest {
53
private static final String JAVA_HOME = System.getProperty("java.home");
54
private static final String TEST_SRC = System.getProperty("test.src");
55
56
private static final Path SRC_DIR = Paths.get(TEST_SRC, "src");
57
private static final Path MODS_DIR = Paths.get("mods");
58
private static final Path IMAGE = Paths.get("image");
59
private static final Path JMODS = Paths.get(JAVA_HOME, "jmods");
60
private static final String MAIN_MID = "test/jdk.test.Main";
61
62
// the names of the modules in this test
63
private static String[] modules = new String[] { "m1", "m2", "test"};
64
private static String[] versions = new String[] { "1.0", "2-ea", "3-internal"};
65
66
67
private static boolean hasJmods() {
68
if (!Files.exists(JMODS)) {
69
System.err.println("Test skipped. NO jmods directory");
70
return false;
71
}
72
return true;
73
}
74
75
/*
76
* Compiles all modules used by the test
77
*/
78
@BeforeTest
79
public void compileAll() throws Throwable {
80
if (!hasJmods()) return;
81
82
for (int i=0; i < modules.length; i++) {
83
String mn = modules[i];
84
String version = versions[i];
85
Path msrc = SRC_DIR.resolve(mn);
86
if (version.equals("0")) {
87
assertTrue(CompilerUtils.compile(msrc, MODS_DIR,
88
"--add-exports", "java.base/jdk.internal.module=m1",
89
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=m1",
90
"--module-source-path", SRC_DIR.toString()));
91
} else {
92
assertTrue(CompilerUtils.compile(msrc, MODS_DIR,
93
"--add-exports", "java.base/jdk.internal.module=m1",
94
"--add-exports", "java.base/jdk.internal.org.objectweb.asm=m1",
95
"--module-source-path", SRC_DIR.toString(),
96
"--module-version", version));
97
}
98
}
99
100
if (Files.exists(IMAGE)) {
101
FileUtils.deleteFileTreeUnchecked(IMAGE);
102
}
103
104
createImage(IMAGE, modules);
105
}
106
107
private void createImage(Path outputDir, String... modules) throws Throwable {
108
Path jlink = Paths.get(JAVA_HOME, "bin", "jlink");
109
String mp = JMODS.toString() + File.pathSeparator + MODS_DIR.toString();
110
assertTrue(executeProcess(jlink.toString(), "--output", outputDir.toString(),
111
"--add-modules", Arrays.stream(modules).collect(Collectors.joining(",")),
112
"--module-path", mp)
113
.outputTo(System.out)
114
.errorTo(System.out)
115
.getExitValue() == 0);
116
}
117
118
/*
119
* Test the image created when linking with a module with
120
* no Packages attribute
121
*/
122
@Test
123
public void testCompiledVersions() throws Throwable {
124
if (!hasJmods()) return;
125
126
Path java = IMAGE.resolve("bin").resolve("java");
127
Stream<String> options = Stream.concat(
128
Stream.of(java.toString(), "-m", MAIN_MID, String.valueOf(modules.length)),
129
Stream.concat(Arrays.stream(modules), Arrays.stream(versions))
130
);
131
132
assertTrue(executeProcess(options.toArray(String[]::new))
133
.outputTo(System.out)
134
.errorTo(System.out)
135
.getExitValue() == 0);
136
}
137
}
138
139