diff --git a/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java b/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java index 668bc6f5e..415a5c39b 100644 --- a/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java +++ b/src/main/java/io/github/bonigarcia/wdm/WebDriverManager.java @@ -454,6 +454,11 @@ public WebDriverManager avoidReadReleaseFromRepository() { return instanceMap.get(getDriverManagerType()); } + public WebDriverManager avoidTmpFolder() { + config().setAvoidTmpFolder(true); + return instanceMap.get(getDriverManagerType()); + } + public WebDriverManager ttl(int seconds) { config().setTtl(seconds); return instanceMap.get(getDriverManagerType()); diff --git a/src/main/java/io/github/bonigarcia/wdm/config/Config.java b/src/main/java/io/github/bonigarcia/wdm/config/Config.java index 37ff00327..b7941e07e 100644 --- a/src/main/java/io/github/bonigarcia/wdm/config/Config.java +++ b/src/main/java/io/github/bonigarcia/wdm/config/Config.java @@ -78,6 +78,8 @@ public class Config { "wdm.avoidResolutionCache", Boolean.class); ConfigKey avoidReadReleaseFromRepository = new ConfigKey<>( "wdm.avoidReadReleaseFromRepository", Boolean.class); + ConfigKey avoidTmpFolder = new ConfigKey<>("wdm.avoidTmpFolder", + Boolean.class); ConfigKey timeout = new ConfigKey<>("wdm.timeout", Integer.class); ConfigKey versionsPropertiesOnlineFirst = new ConfigKey<>( "wdm.versionsPropertiesOnlineFirst", Boolean.class); @@ -445,6 +447,15 @@ public Config setAvoidReadReleaseFromRepository(boolean value) { return this; } + public boolean isAvoidTmpFolder() { + return resolve(avoidTmpFolder); + } + + public Config setAvoidTmpFolder(boolean value) { + this.avoidTmpFolder.setValue(value); + return this; + } + public int getTimeout() { return resolve(timeout); } diff --git a/src/main/java/io/github/bonigarcia/wdm/online/Downloader.java b/src/main/java/io/github/bonigarcia/wdm/online/Downloader.java index 91e8f8aec..5887447ae 100644 --- a/src/main/java/io/github/bonigarcia/wdm/online/Downloader.java +++ b/src/main/java/io/github/bonigarcia/wdm/online/Downloader.java @@ -127,7 +127,8 @@ private Optional downloadAndExtract(URL url, File targetFile) throws IOException { log.info("Downloading {}", url); File targetFolder = targetFile.getParentFile(); - File tempDir = createTempDirectory("").toFile(); + File tempDir = config.isAvoidTmpFolder() ? targetFolder + : createTempDirectory("").toFile(); File temporaryFile = new File(tempDir, targetFile.getName()); log.trace("Target folder {} ... using temporal file {}", targetFolder, @@ -140,7 +141,8 @@ private Optional downloadAndExtract(URL url, File targetFile) extractedFiles.iterator().next().getName()); boolean driverExists = resultingDriver.exists(); - if (!driverExists || config.isForceDownload()) { + if ((!driverExists || config.isForceDownload()) + && !config.isAvoidTmpFolder()) { if (driverExists) { log.debug("Overriding former driver {}", resultingDriver); deleteFile(resultingDriver); @@ -152,7 +154,9 @@ private Optional downloadAndExtract(URL url, File targetFile) if (!config.isExecutable(resultingDriver)) { setFileExecutable(resultingDriver); } - deleteFolder(tempDir); + if (!config.isAvoidTmpFolder()) { + deleteFolder(tempDir); + } log.trace("Driver after extraction {}", resultingDriver); return of(resultingDriver); diff --git a/src/main/resources/webdrivermanager.properties b/src/main/resources/webdrivermanager.properties index d949a05ab..34f7f06d7 100644 --- a/src/main/resources/webdrivermanager.properties +++ b/src/main/resources/webdrivermanager.properties @@ -9,6 +9,7 @@ wdm.avoidAutoReset=false wdm.avoidResolutionCache=false wdm.avoidFallback=false wdm.avoidReadReleaseFromRepository=false +wdm.avoidTmpFolder=false wdm.timeout=30 wdm.serverPort=4041 wdm.resolutionCache=resolution.properties diff --git a/src/test/java/io/github/bonigarcia/wdm/test/forced/ForceDownloadTest.java b/src/test/java/io/github/bonigarcia/wdm/test/forced/ForceDownloadTest.java index 186234fab..8c5b57a2f 100644 --- a/src/test/java/io/github/bonigarcia/wdm/test/forced/ForceDownloadTest.java +++ b/src/test/java/io/github/bonigarcia/wdm/test/forced/ForceDownloadTest.java @@ -43,7 +43,7 @@ class ForceDownloadTest { void testForceDownload(Class driverClass) { WebDriverManager driverManager = WebDriverManager .getInstance(driverClass); - driverManager.forceDownload().avoidBrowserDetection() + driverManager.forceDownload().avoidTmpFolder().avoidBrowserDetection() .avoidReadReleaseFromRepository().timeout(20) .operatingSystem(WIN).setup(); assertThat(driverManager.getDownloadedDriverPath()).isNotNull();