< prev index next >
jdk/test/java/lang/StackTraceElement/ModuleFrames.java
Print this page
@@ -25,10 +25,13 @@
* @test
* @summary Stack trace should have module information
* @run testng ModuleFrames
*/
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
import java.util.Arrays;
import org.testng.annotations.Test;
import static org.testng.Assert.*;
@@ -45,15 +48,31 @@
StackTraceElement thisFrame = findFrame(this.getClass().getName(), stack);
assertEquals(topFrame.getModuleName(), "java.base",
"Expected top frame to be in module java.base");
- assertTrue(topFrame.toString().contains("java.base"),
- "Expected toString of top frame to include java.base");
+ assertTrue(topFrame.toString().startsWith("java.base"),
+ "Expected toString of top frame to omit loader name, start with module name: java.base");
+
+ assertTrue(!topFrame.toString().contains("@"),
+ "Expected toString of top frame not to include module version ('@')");
+
+ Path home = Paths.get(System.getProperty("java.home"));
+ boolean isImage = Files.exists(home.resolve("lib").resolve("modules"));
+ if (isImage) {
+ assertTrue(!topFrame.getModuleVersion().isEmpty(),
+ "Expected non-empty STE.getModuleVersion() for top frame");
+ }
assertNull(thisFrame.getModuleName(),
"Expected frame for test not to have a module name");
+
+ assertTrue(thisFrame.toString().startsWith(this.getClass().getName()),
+ "Expected toString to start with class name (no loader or module name");
+
+ assertEquals(thisFrame.getClassLoaderName(), "app",
+ "Expect STE to have loader name of \"app\"");
}
}
private static StackTraceElement findFrame(String cn, StackTraceElement[] stack) {
return Arrays.stream(stack)
< prev index next >