From 2767a27382186fc3a7101a51caa8c899de1c98b4 Mon Sep 17 00:00:00 2001 From: Kenny Ballou Date: Mon, 29 May 2023 11:08:31 -0600 Subject: [PATCH] JavaExecCmdUtil: use `Paths.get` to join file paths Instead of relying on the values of the retrieved variables correctly handling trailing slashes, simply use the `Paths` utility methods to combine directory/path objects. Signed-off-by: Kenny Ballou --- .../evosuite/runtime/util/JavaExecCmdUtil.java | 16 ++++++---------- .../runtime/util/JavaExecCmdUtilUnixTest.java | 3 ++- 2 files changed, 8 insertions(+), 11 deletions(-) diff --git a/runtime/src/main/java/org/evosuite/runtime/util/JavaExecCmdUtil.java b/runtime/src/main/java/org/evosuite/runtime/util/JavaExecCmdUtil.java index 4b1ac916ec..df5d253944 100644 --- a/runtime/src/main/java/org/evosuite/runtime/util/JavaExecCmdUtil.java +++ b/runtime/src/main/java/org/evosuite/runtime/util/JavaExecCmdUtil.java @@ -20,6 +20,7 @@ package org.evosuite.runtime.util; import java.io.File; +import java.nio.file.Paths; import java.util.Optional; /** @@ -45,19 +46,14 @@ private JavaExecCmdUtil() { * @apiNote under maven java.home property is ${JAVA_HOME}/jre/bin/java */ public static String getJavaBinExecutablePath(final boolean isFullOriginalJavaExecRequired) { - final String separator = System.getProperty("file.separator"); - final String JAVA_CMD = - System.getProperty("java.home") + separator + "bin" + separator + "java"; + final String JAVA_CMD = Paths.get(System.getProperty("java.home"), "bin", "java").toString(); return getJavaHomeEnv() .map(javaHomeEnvVar -> - new File( - javaHomeEnvVar + File.separatorChar + "bin" + File.separatorChar + "java" + - getOsName() - .filter(osName -> osName.toLowerCase().contains("windows")) - .map(osName -> ".exe") - .orElse("") - ) + Paths.get(javaHomeEnvVar, "bin", "java", getOsName() + .filter(osName -> osName.toLowerCase().contains("windows")) + .map(osName -> ".exe") + .orElse("")).toFile() ) .filter(File::exists) .map(File::getPath) diff --git a/runtime/src/test/java/org/evosuite/runtime/util/JavaExecCmdUtilUnixTest.java b/runtime/src/test/java/org/evosuite/runtime/util/JavaExecCmdUtilUnixTest.java index 0c6a7008c2..8bcbf6cff3 100644 --- a/runtime/src/test/java/org/evosuite/runtime/util/JavaExecCmdUtilUnixTest.java +++ b/runtime/src/test/java/org/evosuite/runtime/util/JavaExecCmdUtilUnixTest.java @@ -19,6 +19,7 @@ */ package org.evosuite.runtime.util; +import java.nio.file.Paths; import org.apache.commons.lang3.StringUtils; import org.hamcrest.core.IsEqual; import org.junit.Before; @@ -100,7 +101,7 @@ public void unixNewBehavior() { // set correct java_home and get real path to java environmentVariables.set("JAVA_HOME", JAVA_HOME_SYSTEM); assertThat(JavaExecCmdUtil.getJavaBinExecutablePath(), - IsEqual.equalTo(JAVA_HOME_SYSTEM + SEPARATOR + "bin" + SEPARATOR + "java")); + IsEqual.equalTo(Paths.get(JAVA_HOME_SYSTEM, "bin", "java").toString())); } ); }