25 import java.io.PrintWriter;
26 import java.io.StringWriter;
27 import java.lang.module.ModuleDescriptor;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.spi.ToolProvider;
35 import java.util.stream.Stream;
36
37 import jdk.tools.jlink.plugin.Plugin;
38 import jdk.tools.jlink.internal.PluginRepository;
39 import tests.Helper;
40 import tests.JImageGenerator;
41
42 /*
43 * @test
44 * @summary Test image creation
45 * @author Jean-Francois Denise
46 * @library ../lib
47 * @modules java.base/jdk.internal.jimage
48 * jdk.jdeps/com.sun.tools.classfile
49 * jdk.jlink/jdk.tools.jlink.internal
50 * jdk.jlink/jdk.tools.jlink.plugin
51 * jdk.jlink/jdk.tools.jimage
52 * jdk.compiler
53 * @build tests.*
54 * @run main/othervm -Xmx1g JLinkTest
55 */
56 public class JLinkTest {
57 static final ToolProvider JLINK_TOOL = ToolProvider.findFirst("jlink")
58 .orElseThrow(() ->
59 new RuntimeException("jlink tool not found")
60 );
61
62 // number of built-in plugins from jdk.jlink module
63 private static int getNumJlinkPlugins() {
64 ModuleDescriptor desc = Plugin.class.getModule().getDescriptor();
89 List<Plugin> builtInPlugins = new ArrayList<>();
90 builtInPlugins.addAll(PluginRepository.getPlugins(ModuleLayer.boot()));
91 totalPlugins = builtInPlugins.size();
92 // actual num. of plugins loaded from jdk.jlink module
93 int actualJLinkPlugins = 0;
94 for (Plugin p : builtInPlugins) {
95 p.getState();
96 p.getType();
97 if (isOfJLinkModule(p)) {
98 actualJLinkPlugins++;
99 }
100 }
101 if (expectedJLinkPlugins != actualJLinkPlugins) {
102 throw new AssertionError("Actual plugins loaded from jdk.jlink: " +
103 actualJLinkPlugins + " which doesn't match expected number : " +
104 expectedJLinkPlugins);
105 }
106 }
107
108 {
109 String moduleName = "bug8134651";
110 JImageGenerator.getJLinkTask()
111 .modulePath(helper.defaultModulePath())
112 .output(helper.createNewImageDir(moduleName))
113 .addMods("leaf1")
114 .call().assertSuccess();
115 JImageGenerator.getJLinkTask()
116 .modulePath(helper.defaultModulePath())
117 .addMods("leaf1")
118 .option("--output")
119 .call().assertFailure("Error: no value given for --output");
120 JImageGenerator.getJLinkTask()
121 .modulePath("")
122 .output(helper.createNewImageDir(moduleName))
123 .addMods("leaf1")
124 .call().assertFailure("Error: no value given for --module-path");
125 }
126
127 {
128 String moduleName = "m"; // 8163382
129 Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
130 JImageGenerator.getJLinkTask()
131 .modulePath(helper.defaultModulePath())
132 .output(helper.createNewImageDir(moduleName))
133 .addMods("m")
134 .call().assertSuccess();
135 moduleName = "mod";
136 jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
137 JImageGenerator.getJLinkTask()
138 .modulePath(helper.defaultModulePath())
139 .output(helper.createNewImageDir(moduleName))
140 .addMods("m")
141 .call().assertSuccess();
142 }
143
144 {
|
25 import java.io.PrintWriter;
26 import java.io.StringWriter;
27 import java.lang.module.ModuleDescriptor;
28 import java.nio.file.Files;
29 import java.nio.file.Path;
30 import java.nio.file.Paths;
31 import java.util.ArrayList;
32 import java.util.Collections;
33 import java.util.List;
34 import java.util.spi.ToolProvider;
35 import java.util.stream.Stream;
36
37 import jdk.tools.jlink.plugin.Plugin;
38 import jdk.tools.jlink.internal.PluginRepository;
39 import tests.Helper;
40 import tests.JImageGenerator;
41
42 /*
43 * @test
44 * @summary Test image creation
45 * @bug 8189777
46 * @author Jean-Francois Denise
47 * @library ../lib
48 * @modules java.base/jdk.internal.jimage
49 * jdk.jdeps/com.sun.tools.classfile
50 * jdk.jlink/jdk.tools.jlink.internal
51 * jdk.jlink/jdk.tools.jlink.plugin
52 * jdk.jlink/jdk.tools.jimage
53 * jdk.compiler
54 * @build tests.*
55 * @run main/othervm -Xmx1g JLinkTest
56 */
57 public class JLinkTest {
58 static final ToolProvider JLINK_TOOL = ToolProvider.findFirst("jlink")
59 .orElseThrow(() ->
60 new RuntimeException("jlink tool not found")
61 );
62
63 // number of built-in plugins from jdk.jlink module
64 private static int getNumJlinkPlugins() {
65 ModuleDescriptor desc = Plugin.class.getModule().getDescriptor();
90 List<Plugin> builtInPlugins = new ArrayList<>();
91 builtInPlugins.addAll(PluginRepository.getPlugins(ModuleLayer.boot()));
92 totalPlugins = builtInPlugins.size();
93 // actual num. of plugins loaded from jdk.jlink module
94 int actualJLinkPlugins = 0;
95 for (Plugin p : builtInPlugins) {
96 p.getState();
97 p.getType();
98 if (isOfJLinkModule(p)) {
99 actualJLinkPlugins++;
100 }
101 }
102 if (expectedJLinkPlugins != actualJLinkPlugins) {
103 throw new AssertionError("Actual plugins loaded from jdk.jlink: " +
104 actualJLinkPlugins + " which doesn't match expected number : " +
105 expectedJLinkPlugins);
106 }
107 }
108
109 {
110 // No --module-path specified. $JAVA_HOME/jmods should be assumed.
111 // The following should succeed as it uses only system modules.
112 String imageDir = "bug818977-no-modulepath";
113 JImageGenerator.getJLinkTask()
114 .output(helper.createNewImageDir(imageDir))
115 .addMods("jdk.scripting.nashorn")
116 .call().assertSuccess();
117 }
118
119 {
120 // invalid --module-path specified. java.base not found it it.
121 // $JAVA_HOME/jmods should be added automatically.
122 // The following should succeed as it uses only system modules.
123 String imageDir = "bug8189777-invalid-modulepath";
124 JImageGenerator.getJLinkTask()
125 .modulePath("does_not_exist_path")
126 .output(helper.createNewImageDir(imageDir))
127 .addMods("jdk.scripting.nashorn")
128 .call().assertSuccess();
129 }
130
131 {
132 String moduleName = "bug8134651";
133 JImageGenerator.getJLinkTask()
134 .modulePath(helper.defaultModulePath())
135 .output(helper.createNewImageDir(moduleName))
136 .addMods("leaf1")
137 .call().assertSuccess();
138 JImageGenerator.getJLinkTask()
139 .modulePath(helper.defaultModulePath())
140 .addMods("leaf1")
141 .option("--output")
142 .call().assertFailure("Error: no value given for --output");
143 JImageGenerator.getJLinkTask()
144 .modulePath("")
145 .output(helper.createNewImageDir(moduleName))
146 .addMods("leaf1")
147 .call().assertFailure("Error: no value given for --module-path");
148 // do not include standard module path - should be added automatically
149 JImageGenerator.getJLinkTask()
150 .modulePath(helper.defaultModulePath(false))
151 .output(helper.createNewImageDir(moduleName))
152 .addMods("leaf1")
153 .call().assertSuccess();
154 // no --module-path. default sys mod path is assumed - but that won't contain 'leaf1' module
155 JImageGenerator.getJLinkTask()
156 .output(helper.createNewImageDir(moduleName))
157 .addMods("leaf1")
158 .call().assertFailure("Error: Module leaf1 not found");
159 }
160
161 {
162 String moduleName = "m"; // 8163382
163 Path jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
164 JImageGenerator.getJLinkTask()
165 .modulePath(helper.defaultModulePath())
166 .output(helper.createNewImageDir(moduleName))
167 .addMods("m")
168 .call().assertSuccess();
169 moduleName = "mod";
170 jmod = helper.generateDefaultJModule(moduleName).assertSuccess();
171 JImageGenerator.getJLinkTask()
172 .modulePath(helper.defaultModulePath())
173 .output(helper.createNewImageDir(moduleName))
174 .addMods("m")
175 .call().assertSuccess();
176 }
177
178 {
|