Skip to content

Commit b3e3832

Browse files
committed
[java] if cache path is not writable, SM will be extracted to a temporal folder
1 parent e1d6bbb commit b3e3832

File tree

1 file changed

+11
-8
lines changed

1 file changed

+11
-8
lines changed

Diff for: java/src/org/openqa/selenium/manager/SeleniumManager.java

+11-8
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import static org.openqa.selenium.Platform.MAC;
2020
import static org.openqa.selenium.Platform.WINDOWS;
2121

22+
import java.io.IOException;
2223
import java.io.InputStream;
2324
import java.nio.file.Files;
2425
import java.nio.file.Path;
@@ -29,7 +30,6 @@
2930
import java.util.Map;
3031
import java.util.logging.Level;
3132
import java.util.logging.Logger;
32-
3333
import org.openqa.selenium.Beta;
3434
import org.openqa.selenium.BuildInfo;
3535
import org.openqa.selenium.Capabilities;
@@ -58,18 +58,13 @@ public class SeleniumManager {
5858

5959
private static final Logger LOG = Logger.getLogger(SeleniumManager.class.getName());
6060

61-
6261
private static final String SELENIUM_MANAGER = "selenium-manager";
6362
private static final String DEFAULT_CACHE_PATH = "~/.cache/selenium";
6463
private static final String BINARY_PATH_FORMAT = "/manager/%s/%s";
6564
private static final String HOME = "~";
6665
private static final String CACHE_PATH_ENV = "SE_CACHE_PATH";
6766
private static final String BETA_PREFIX = "0.";
68-
6967
private static final String EXE = ".exe";
70-
private static final String INFO = "INFO";
71-
private static final String WARN = "WARN";
72-
private static final String DEBUG = "DEBUG";
7368

7469
private static volatile SeleniumManager manager;
7570
private final String managerPath = System.getenv("SE_MANAGER_PATH");
@@ -290,7 +285,7 @@ private Level getLogLevel() {
290285
return level;
291286
}
292287

293-
private Path getBinaryInCache(String binaryName) {
288+
private Path getBinaryInCache(String binaryName) throws IOException {
294289
String cachePath = DEFAULT_CACHE_PATH.replace(HOME, System.getProperty("user.home"));
295290

296291
// Look for cache path as env
@@ -299,6 +294,14 @@ private Path getBinaryInCache(String binaryName) {
299294
cachePath = cachePathEnv;
300295
}
301296

302-
return Paths.get(cachePath + String.format(BINARY_PATH_FORMAT, seleniumManagerVersion, binaryName));
297+
// If cache path is not writable, SM will be extracted to a temporal folder
298+
Path cacheParent = Paths.get(cachePath);
299+
if (!Files.isWritable(cacheParent)) {
300+
cacheParent = Files.createTempDirectory(SELENIUM_MANAGER);
301+
}
302+
303+
return Paths.get(
304+
cacheParent.toString(),
305+
String.format(BINARY_PATH_FORMAT, seleniumManagerVersion, binaryName));
303306
}
304307
}

0 commit comments

Comments
 (0)