< prev index next >
test/tools/jlink/plugins/SystemModuleDescriptors/SystemModulesTest.java
Print this page
@@ -23,10 +23,12 @@
import java.lang.module.ModuleDescriptor;
import java.lang.module.ModuleDescriptor.*;
import java.lang.module.ModuleFinder;
import java.lang.module.ModuleReference;
+import java.io.IOException;
+import java.io.UncheckedIOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.List;
import java.util.Map;
@@ -38,11 +40,15 @@
import static org.testng.Assert.*;
/**
* @test
* @bug 8142968 8173381
+ * @library /lib/testlibrary
* @modules java.base/jdk.internal.misc
+ * @modules java.base/jdk.internal.module
+ * @modules java.base/jdk.internal.org.objectweb.asm
+ * @build ModuleTargetHelper
* @run testng SystemModulesTest
* @summary Verify the properties of ModuleDescriptor created
* by SystemModules
*/
@@ -60,23 +66,20 @@
Path jimage = Paths.get(System.getProperty("java.home"), "lib", "modules");
if (Files.notExists(jimage))
return;
ModuleFinder.ofSystem().findAll().stream()
- .map(ModuleReference::descriptor)
.forEach(this::checkAttributes);
}
// JMOD files are created with osName and osArch that may be different
// than os.name and os.arch system property
private boolean checkOSName(String name) {
if (name.equals(OS_NAME))
return true;
- if (OS_NAME.equals("Mac OS X")) {
- return name.equals("Darwin");
- } else if (OS_NAME.startsWith("Windows")) {
+ if (OS_NAME.startsWith("Windows")) {
return name.startsWith("Windows");
} else {
System.err.println("ERROR: " + name + " but expected: " + OS_NAME);
return false;
}
@@ -87,32 +90,32 @@
return true;
switch (OS_ARCH) {
case "i386":
case "x86":
- return name.equals("i586");
+ return name.equals("x86");
+ case "amd64":
+ return name.equals("x86_64");
default:
System.err.println("ERROR: " + name + " but expected: " + OS_ARCH);
return false;
}
}
- private void checkAttributes(ModuleDescriptor md) {
- System.out.format("%s %s %s %s%n", md.name(),
- md.osName(), md.osArch(), md.osVersion());
-
- if (md.name().equals("java.base")) {
- assertTrue(checkOSName(md.osName().get()));
- assertTrue(checkOSArch(md.osArch().get()));
- assertTrue(md.osVersion().isPresent());
+ private void checkAttributes(ModuleReference modRef) {
+ try {
+ if (modRef.descriptor().name().equals("java.base")) {
+ ModuleTargetHelper.ModuleTarget mt = ModuleTargetHelper.read(modRef);
+ assertTrue(checkOSName(mt.osName()));
+ assertTrue(checkOSArch(mt.osArch()));
} else {
- // target platform attribute is dropped by jlink plugin
- assertFalse(md.osName().isPresent());
- assertFalse(md.osArch().isPresent());
- assertFalse(md.osVersion().isPresent());
- assertTrue(md.packages().size() > 0
- || EMPTY_MODULES.contains(md.name()), md.name());
+ // target platform attribute is dropped by jlink plugin for other modules
+ ModuleTargetHelper.ModuleTarget mt = ModuleTargetHelper.read(modRef);
+ assertTrue(mt == null || (mt.osName() == null && mt.osArch() == null));
+ }
+ } catch (IOException exp) {
+ throw new UncheckedIOException(exp);
}
}
/**
* Verify ModuleDescriptor contains unmodifiable sets
< prev index next >