--- old/test/native/GTestWrapper.java 2016-05-12 18:39:56.000000000 +0300 +++ new/test/native/GTestWrapper.java 2016-05-12 18:39:56.000000000 +0300 @@ -44,28 +44,42 @@ public class GTestWrapper { public static void main(String[] args) throws Throwable { - String nativePath = System.getProperty("test.nativepath"); - Path gtestLauncher = Paths.get(nativePath, "hotspot", "gtest"); - if (Platform.isServer()) { - gtestLauncher = gtestLauncher.resolve("server"); - } else if (Platform.isClient()) { - gtestLauncher = gtestLauncher.resolve("client"); - } else if (Platform.isMinimal()) { - gtestLauncher = gtestLauncher.resolve("minimal"); + // nativePath points either to /hotspot/jtreg/native or to /hotspot/gtest + Path nativePath = Paths.get(System.getProperty("test.nativepath")); + // let's assume it's /hotspot/gtest + Path path = getJVMVariantSubDir(nativePath); + if (!path.toFile().exists()) { + // maybe it is /hotspot/jtreg/native + path = getJVMVariantSubDir(nativePath.getParent() + .getParent() + .resolve("gtest")); } - gtestLauncher = gtestLauncher.resolve( - "gtestLauncher" + (Platform.isWindows() ? ".exe" : "")); + if (!path.toFile().exists()) { + throw new Error("TESTBUG: the library has not been found in " + nativePath); + } + path = path.resolve("gtestLauncher" + (Platform.isWindows() ? ".exe" : "")); List cmds = Stream.concat( Stream.of( - gtestLauncher.toString(), + path.toString(), "-jdk", System.getProperty("test.jdk")), - Arrays.stream(Utils.getTestJavaOpts())) + Arrays.stream(Utils.getTestJavaOpts()) + .filter(s -> s.startsWith("-X") || s.startsWith("-D"))) .collect(Collectors.toList()); ProcessBuilder builder = new ProcessBuilder(cmds); - builder.inheritIO(); - OutputAnalyzer oa = ProcessTools.executeProcess(builder); oa.shouldHaveExitValue(0); } + + private static Path getJVMVariantSubDir(Path root) { + if (Platform.isServer()) { + return root.resolve("server"); + } else if (Platform.isClient()) { + return root.resolve("client"); + } else if (Platform.isMinimal()) { + return root.resolve("minimal"); + } else { + throw new Error("TESTBUG: unsuppported vm variant"); + } + } }