6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package com.oracle.java.testlibrary;
25
26 import java.io.File;
27
28 public final class JDKToolFinder {
29
30 private JDKToolFinder() {
31 }
32
33 /**
34 * Returns the full path to an executable in jdk/bin based on System
35 * property {@code compile.jdk} (set by jtreg test suite)
36 *
37 * @return Full path to an executable in jdk/bin
38 */
39 public static String getJDKTool(String tool) {
40 String binPath = System.getProperty("compile.jdk");
41 if (binPath == null) {
42 throw new RuntimeException("System property 'compile.jdk' not set. "
43 + "This property is normally set by jtreg. "
44 + "When running test separately, set this property using "
45 + "'-Dcompile.jdk=/path/to/jdk'.");
46 }
47 binPath += File.separatorChar + "bin" + File.separatorChar + tool;
48
49 return binPath;
50 }
51 /**
52 * Returns the full path to an executable in <current jdk>/bin based
53 * on System property {@code test.jdk} (set by jtreg test suite)
54 *
55 * @return Full path to an executable in jdk/bin
56 */
57 public static String getCurrentJDKTool(String tool) {
58 String binPath = System.getProperty("test.jdk");
59 if (binPath == null) {
60 throw new RuntimeException("System property 'test.jdk' not set. "
61 + "This property is normally set by jtreg. "
62 + "When running test separately, set this property using "
63 + "'-Dtest.jdk=/path/to/jdk'.");
64 }
65 binPath += File.separatorChar + "bin" + File.separatorChar + tool;
66
67 return binPath;
68 }
69 }
|
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any
21 * questions.
22 */
23
24 package com.oracle.java.testlibrary;
25
26 import java.io.FileNotFoundException;
27 import java.nio.file.Path;
28 import java.nio.file.Paths;
29
30 public final class JDKToolFinder {
31
32 private JDKToolFinder() {
33 }
34
35 /**
36 * Returns the full path to an executable in jdk/bin based on System
37 * property {@code test.jdk} or {@code compile.jdk} (both are set by the jtreg test suite)
38 *
39 * @return Full path to an executable in jdk/bin
40 */
41 public static String getJDKTool(String tool) {
42
43 // First try to find the executable in test.jdk
44 try {
45 return getTool(tool, "test.jdk");
46 } catch (FileNotFoundException e) {
47
48 }
49
50 // Now see if it's available in compile.jdk
51 try {
52 return getTool(tool, "compile.jdk");
53 } catch (FileNotFoundException e) {
54 throw new RuntimeException("Failed to find " + tool +
55 ", looked in test.jdk (" + System.getProperty("test.jdk") +
56 ") and compile.jdk (" + System.getProperty("compile.jdk") + ")");
57 }
58 }
59
60 /**
61 * Returns the full path to an executable in jdk/bin based on System
62 * property {@code compile.jdk}
63 *
64 * @return Full path to an executable in jdk/bin
65 */
66 public static String getCompileJDKTool(String tool) {
67 try {
68 return getTool(tool, "compile.jdk");
69 } catch (FileNotFoundException e) {
70 throw new RuntimeException(e);
71 }
72 }
73
74 /**
75 * Returns the full path to an executable in jdk/bin based on System
76 * property {@code test.jdk}
77 *
78 * @return Full path to an executable in jdk/bin
79 */
80 public static String getTestJDKTool(String tool) {
81 try {
82 return getTool(tool, "test.jdk");
83 } catch (FileNotFoundException e) {
84 throw new RuntimeException(e);
85 }
86 }
87
88 private static String getTool(String tool, String property) throws FileNotFoundException {
89 String jdkPath = System.getProperty(property);
90
91 if (jdkPath == null) {
92 throw new RuntimeException(
93 "System property '" + property + "' not set. This property is normally set by jtreg. "
94 + "When running test separately, set this property using '-D" + property + "=/path/to/jdk'.");
95 }
96
97 Path toolName = Paths.get("bin", tool + (Platform.isWindows() ? ".exe" : ""));
98
99 Path jdkTool = Paths.get(jdkPath, toolName.toString());
100 if (!jdkTool.toFile().exists()) {
101 throw new FileNotFoundException("Could not find file " + jdkTool.toAbsolutePath());
102 }
103
104 return jdkTool.toAbsolutePath().toString();
105 }
106 }
|