/* * Copyright (c) 2016, 2021, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
publicclass GTestWrapper { publicstaticvoid main(String[] args) throws Throwable { // gtestLauncher is located in <test_image>/hotspot/gtest/<vm_variant>/ // nativePath points either to <test_image>/hotspot/jtreg/native or to <test_image>/hotspot/gtest
Path nativePath = Paths.get(Utils.TEST_NATIVE_PATH);
String jvmVariantDir = getJVMVariantSubDir(); // let's assume it's <test_image>/hotspot/gtest
Path path = nativePath.resolve(jvmVariantDir); if (!path.toFile().exists()) { // maybe it is <test_image>/hotspot/jtreg/native
path = nativePath.getParent()
.getParent()
.resolve("gtest")
.resolve(jvmVariantDir);
} if (!path.toFile().exists()) { thrownew Error("TESTBUG: the library has not been found in " + nativePath + ". Did you forget to use --with-gtest to configure?");
}
// The GTestWrapper was started using the normal java launcher, which // may have set LD_LIBRARY_PATH or LIBPATH to point to the jdk libjvm. In // that case, prepend the path with the location of the gtest library."
ArrayList<String> command = new ArrayList<>();
command.add(execPath.toAbsolutePath().toString());
command.add("-jdk");
command.add(Utils.TEST_JDK);
command.add("--gtest_output=xml:" + resultFile);
command.add("--gtest_catch_exceptions=0"); for (String a : args) {
command.add(a);
}
pb.command(command); int exitCode = ProcessTools.executeCommand(pb).getExitValue(); if (exitCode != 0) {
List<String> failedTests = failedTests(resultFile);
String message = "gtest execution failed; exit code = " + exitCode + "."; if (!failedTests.isEmpty()) {
message += " the failed tests: " + failedTests;
} thrownew AssertionError(message);
}
}
privatestatic List<String> failedTests(Path xml) { if (!Files.exists(xml)) {
System.err.println("WARNING: test result file (" + xml + ") hasn't been found");
}
try { returnnew GTestResultParser(xml).failedTests();
} catch (Throwable t) {
System.err.println("WARNING: failed to parse result file (" + xml + ") " + t);
t.printStackTrace();
} return Collections.emptyList();
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.