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) + } +} 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)