diff --git a/utils/src/main/java/org/robolectric/util/TempDirectory.java b/utils/src/main/java/org/robolectric/util/TempDirectory.java index ae309fc3445..6e76add0806 100644 --- a/utils/src/main/java/org/robolectric/util/TempDirectory.java +++ b/utils/src/main/java/org/robolectric/util/TempDirectory.java @@ -1,5 +1,7 @@ package org.robolectric.util; +import static java.util.concurrent.TimeUnit.SECONDS; + import java.io.IOException; import java.io.Writer; import java.nio.file.FileAlreadyExistsException; @@ -50,7 +52,7 @@ public TempDirectory(String name) { } } - private static void clearAllDirectories() { + static void clearAllDirectories() { ExecutorService deletionExecutorService = Executors.newFixedThreadPool(DELETE_THREAD_POOL_SIZE); synchronized (tempDirectoriesToDelete) { for (TempDirectory undeletedDirectory : tempDirectoriesToDelete) { @@ -58,6 +60,13 @@ private static void clearAllDirectories() { } } deletionExecutorService.shutdown(); + try { + deletionExecutorService.awaitTermination(5, SECONDS); + } catch (InterruptedException e) { + deletionExecutorService.shutdownNow(); + // Preserve interrupt status + Thread.currentThread().interrupt(); + } } public Path createFile(String name, String contents) { diff --git a/utils/src/test/java/org/robolectric/util/TempDirectoryTest.java b/utils/src/test/java/org/robolectric/util/TempDirectoryTest.java index f481268e96c..699233b4e34 100644 --- a/utils/src/test/java/org/robolectric/util/TempDirectoryTest.java +++ b/utils/src/test/java/org/robolectric/util/TempDirectoryTest.java @@ -18,4 +18,15 @@ public void createsDirsWithSameParent() throws IOException { Path path2 = tempDir.create("dir2"); assertThat(path.getParent().toString()).isEqualTo(path2.getParent().toString()); } + + @Test + public void clearAllDirectories_removesDirectories() { + TempDirectory tempDir = new TempDirectory("temp_dir"); + Path dir = tempDir.create("dir1"); + Path file = tempDir.create("file1"); + TempDirectory.clearAllDirectories(); + assertThat(dir.toFile().exists()).isFalse(); + assertThat(file.toFile().exists()).isFalse(); + assertThat(dir.getParent().toFile().exists()).isFalse(); + } }