From e6d3810c991ff5e481318268274c3d5feb227797 Mon Sep 17 00:00:00 2001 From: Samuel Unknown Date: Thu, 16 Feb 2023 10:46:24 +0300 Subject: [PATCH 1/2] Fix DiskCache maxSize calculation (#1619) --- coil-base/src/main/java/coil/disk/DiskCache.kt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/coil-base/src/main/java/coil/disk/DiskCache.kt b/coil-base/src/main/java/coil/disk/DiskCache.kt index bf648bb528..74be4652dc 100644 --- a/coil-base/src/main/java/coil/disk/DiskCache.kt +++ b/coil-base/src/main/java/coil/disk/DiskCache.kt @@ -198,6 +198,10 @@ interface DiskCache { val directory = checkNotNull(directory) { "directory == null" } val maxSize = if (maxSizePercent > 0) { try { + if (directory.toFile().exists().not()) { + directory.toFile().mkdir() + } + val stats = StatFs(directory.toFile().absolutePath) val size = maxSizePercent * stats.blockCountLong * stats.blockSizeLong size.toLong().coerceIn(minimumMaxSizeBytes, maximumMaxSizeBytes) From 82d3eaa3dbd529f3946db12d63753eccbf746c4c Mon Sep 17 00:00:00 2001 From: Samuel Unknown Date: Fri, 17 Feb 2023 11:52:38 +0300 Subject: [PATCH 2/2] DiskCacheAndroidTest added (#1619) --- .../java/coil/disk/DiskCacheAndroidTest.kt | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 coil-base/src/androidTest/java/coil/disk/DiskCacheAndroidTest.kt diff --git a/coil-base/src/androidTest/java/coil/disk/DiskCacheAndroidTest.kt b/coil-base/src/androidTest/java/coil/disk/DiskCacheAndroidTest.kt new file mode 100644 index 0000000000..37cd288bfd --- /dev/null +++ b/coil-base/src/androidTest/java/coil/disk/DiskCacheAndroidTest.kt @@ -0,0 +1,41 @@ +package coil.disk + +import android.content.Context +import androidx.test.core.app.ApplicationProvider +import java.io.File +import kotlin.test.assertEquals +import org.junit.After +import org.junit.Before +import org.junit.Test + +class DiskCacheAndroidTest { + + private lateinit var context: Context + private lateinit var directory: File + + @Before + fun before() { + context = ApplicationProvider.getApplicationContext() + directory = context.filesDir.resolve("test_dir") + } + + @After + fun after() { + directory.delete() // Ensure we start fresh. + } + + @Test + fun checkMaxSize() { + val minimumMaxSizeBytes = 100L + val maximumMaxSizeBytes = 200L + val maxSizePercent = 0.5 + + val diskCache = DiskCache.Builder().directory(directory) + .maxSizePercent(maxSizePercent) + .minimumMaxSizeBytes(minimumMaxSizeBytes) + .maximumMaxSizeBytes(maximumMaxSizeBytes) + .build() + + assertEquals(maximumMaxSizeBytes, diskCache.maxSize) + } +}