From 1f6a5e755716016359f585ae28875371ed860dd1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Boni=20Garc=C3=ADa?= Date: Sat, 3 Jul 2021 20:24:13 +0200 Subject: [PATCH] Include config key to avoid tmp folder (issue #657) --- .../io/github/bonigarcia/wdm/WebDriverManager.java | 5 +++++ .../java/io/github/bonigarcia/wdm/config/Config.java | 11 +++++++++++ .../io/github/bonigarcia/wdm/online/Downloader.java | 10 +++++++--- src/main/resources/webdrivermanager.properties | 1 + .../bonigarcia/wdm/test/forced/ForceDownloadTest.java | 2 +- 5 files changed, 25 insertions(+), 4 deletions(-) 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();