--- old/jdk/test/java/lang/StackTraceElement/ModuleFrames.java 2016-12-09 17:14:54.729635837 -0800 +++ new/jdk/test/java/lang/StackTraceElement/ModuleFrames.java 2016-12-09 17:14:54.525635839 -0800 @@ -27,6 +27,9 @@ * @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; @@ -47,11 +50,27 @@ 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\""); } }