Skip to content

Commit 94179ca

Browse files
committed
Make sure tests run using the current Java Home, not whatever is on the
PATH
1 parent f0f2fcf commit 94179ca

1 file changed

Lines changed: 32 additions & 13 deletions

File tree

src/test/java/org/apache/bcel/util/BCELifierTest.java

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@
2929
import java.io.PrintStream;
3030
import java.nio.charset.StandardCharsets;
3131
import java.nio.file.Files;
32+
import java.nio.file.Path;
3233
import java.util.regex.Matcher;
3334
import java.util.regex.Pattern;
3435

@@ -38,6 +39,7 @@
3839
import org.apache.bcel.classfile.Utility;
3940
import org.apache.bcel.generic.BinaryOpCreator;
4041
import org.apache.commons.lang3.SystemProperties;
42+
import org.apache.commons.lang3.SystemUtils;
4143
import org.junit.jupiter.api.Test;
4244
import org.junit.jupiter.params.ParameterizedTest;
4345
import org.junit.jupiter.params.provider.ValueSource;
@@ -55,7 +57,7 @@ private String canonHashRef(String input) {
5557
}
5658

5759
private String exec(final File workDir, final String... args) throws Exception {
58-
// System.err.println(java.util.Arrays.toString(args));
60+
// System.out.println("ProcessBuilder: " + java.util.Arrays.toString(args));
5961
final ProcessBuilder pb = new ProcessBuilder(args);
6062
pb.directory(workDir);
6163
pb.redirectErrorStream(true);
@@ -74,6 +76,22 @@ private String exec(final File workDir, final String... args) throws Exception {
7476
}
7577
}
7678

79+
private String getJava() {
80+
return getJavaBin().resolve("java").toAbsolutePath().toString();
81+
}
82+
83+
private Path getJavaBin() {
84+
return SystemUtils.getJavaHomePath().resolve("bin");
85+
}
86+
87+
private String getJavaC() {
88+
return getJavaBin().resolve("javac").toAbsolutePath().toString();
89+
}
90+
91+
private String getJavaP() {
92+
return getJavaBin().resolve("javap").toAbsolutePath().toString();
93+
}
94+
7795
@ParameterizedTest
7896
@ValueSource(strings = {
7997
// @formatter:off
@@ -123,10 +141,10 @@ void testBinaryOp(final String exp) throws Exception {
123141
final String expected = matcher.group(4);
124142
final String javaAgent = getJavaAgent();
125143
if (javaAgent == null) {
126-
assertEquals(expected + EOL, exec(workDir, "java", "-cp", CLASSPATH, "org.apache.bcel.generic.BinaryOp", op, a, b));
144+
assertEquals(expected + EOL, exec(workDir, getJava(), "-cp", CLASSPATH, "org.apache.bcel.generic.BinaryOp", op, a, b));
127145
} else {
128146
final String runtimeExecJavaAgent = javaAgent.replace("jacoco.exec", "jacoco_org.apache.bcel.generic.BinaryOp.exec");
129-
assertEquals(expected + EOL, exec(workDir, "java", runtimeExecJavaAgent, "-cp", CLASSPATH, "org.apache.bcel.generic.BinaryOp", op, a, b));
147+
assertEquals(expected + EOL, exec(workDir, getJava(), runtimeExecJavaAgent, "-cp", CLASSPATH, "org.apache.bcel.generic.BinaryOp", op, a, b));
130148
}
131149
}
132150

@@ -137,27 +155,28 @@ private void testClassOnPath(final String javaClassFileName) throws Exception {
137155
assertNotNull(javaClass);
138156

139157
// Get javap of the input class
140-
final String initial = exec(null, "javap", "-cp", CLASSPATH, "-p", "-c", javaClass.getClassName());
158+
// System.out.println(exec(null, getJavaP(), "-version"));
159+
final String initial = exec(null, getJavaP(), "-cp", CLASSPATH, "-p", "-c", javaClass.getClassName());
141160
final String outFileName = javaClass.getSourceFilePath().replace(".java", "Creator.java");
142161
final File outfile = new File(workDir, outFileName);
143162
Files.createDirectories(outfile.getParentFile().toPath());
144163
final String javaAgent = getJavaAgent();
145164
String creatorSourceContents = null;
146165
if (javaAgent == null) {
147-
creatorSourceContents = exec(workDir, "java", "-cp", CLASSPATH, "org.apache.bcel.util.BCELifier", javaClass.getClassName());
166+
creatorSourceContents = exec(workDir, getJava(), "-cp", CLASSPATH, "org.apache.bcel.util.BCELifier", javaClass.getClassName());
148167
} else {
149168
final String runtimeExecJavaAgent = javaAgent.replace("jacoco.exec", "jacoco_" + infile.getName() + ".exec");
150-
creatorSourceContents = exec(workDir, "java", runtimeExecJavaAgent, "-cp", CLASSPATH, "org.apache.bcel.util.BCELifier", javaClass.getClassName());
169+
creatorSourceContents = exec(workDir, getJava(), runtimeExecJavaAgent, "-cp", CLASSPATH, "org.apache.bcel.util.BCELifier", javaClass.getClassName());
151170
}
152171
Files.write(outfile.toPath(), creatorSourceContents.getBytes(StandardCharsets.UTF_8));
153-
assertEquals("", exec(workDir, "javac", "-cp", CLASSPATH, outFileName.toString()));
172+
assertEquals("", exec(workDir, getJavaC(), "-cp", CLASSPATH, outFileName.toString()));
154173
if (javaAgent == null) {
155-
assertEquals("", exec(workDir, "java", "-cp", CLASSPATH, javaClass.getClassName() + "Creator"));
174+
assertEquals("", exec(workDir, getJava(), "-cp", CLASSPATH, javaClass.getClassName() + "Creator"));
156175
} else {
157176
final String runtimeExecJavaAgent = javaAgent.replace("jacoco.exec", "jacoco_" + Utility.pathToPackage(outFileName) + ".exec");
158-
assertEquals("", exec(workDir, "java", runtimeExecJavaAgent, "-cp", CLASSPATH, javaClass.getClassName() + "Creator"));
177+
assertEquals("", exec(workDir, getJava(), runtimeExecJavaAgent, "-cp", CLASSPATH, javaClass.getClassName() + "Creator"));
159178
}
160-
final String output = exec(workDir, "javap", "-p", "-c", infile.getName());
179+
final String output = exec(workDir, getJavaP(), "-p", "-c", infile.getName());
161180
assertEquals(canonHashRef(initial), canonHashRef(output));
162181
}
163182

@@ -167,10 +186,10 @@ void testHelloWorld() throws Exception {
167186
final File workDir = new File("target");
168187
final String javaAgent = getJavaAgent();
169188
if (javaAgent == null) {
170-
assertEquals("Hello World!" + EOL, exec(workDir, "java", "-cp", CLASSPATH, "org.apache.bcel.HelloWorld"));
189+
assertEquals("Hello World!" + EOL, exec(workDir, getJava(), "-cp", CLASSPATH, "org.apache.bcel.HelloWorld"));
171190
} else {
172191
final String runtimeExecJavaAgent = javaAgent.replace("jacoco.exec", "jacoco_org.apache.bcel.HelloWorld.exec");
173-
assertEquals("Hello World!" + EOL, exec(workDir, "java", runtimeExecJavaAgent, "-cp", CLASSPATH, "org.apache.bcel.HelloWorld"));
192+
assertEquals("Hello World!" + EOL, exec(workDir, getJava(), runtimeExecJavaAgent, "-cp", CLASSPATH, "org.apache.bcel.HelloWorld"));
174193
}
175194
}
176195

@@ -216,7 +235,7 @@ void testMainNoArg() throws Exception {
216235
void testStackMap(final String className) throws Exception {
217236
testJavapCompare(className);
218237
final File workDir = new File("target");
219-
assertEquals("Hello World" + EOL, exec(workDir, "java", "-cp", CLASSPATH, className, "Hello"));
238+
assertEquals("Hello World" + EOL, exec(workDir, getJava(), "-cp", CLASSPATH, className, "Hello"));
220239
}
221240

222241
@Test

0 commit comments

Comments
 (0)