[IC] Add unit tests for resetting in-memory caches wrappers in a transaction
#KT-56052 In Progress
This commit is contained in:
committed by
Space Team
parent
04a5c7761c
commit
ca8d0bd100
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.incremental
|
||||
|
||||
import org.jetbrains.kotlin.build.report.DoNothingBuildReporter
|
||||
import org.jetbrains.kotlin.incremental.storage.InMemoryStorageWrapper
|
||||
import org.junit.jupiter.api.Assertions.assertEquals
|
||||
import org.junit.jupiter.api.Assertions.assertFalse
|
||||
import org.junit.jupiter.api.Assertions.assertTrue
|
||||
@@ -26,6 +27,32 @@ private class CacheMock(private val throwsException: Boolean = false) : Closeabl
|
||||
}
|
||||
}
|
||||
|
||||
private class InMemoryStorageWrapperMock : InMemoryStorageWrapper<Any, Any> {
|
||||
var reset = false
|
||||
|
||||
override fun resetInMemoryChanges() {
|
||||
reset = true
|
||||
}
|
||||
|
||||
override val keys: Collection<Any> = emptyList()
|
||||
|
||||
override fun clean() {}
|
||||
|
||||
override fun flush(memoryCachesOnly: Boolean) {}
|
||||
|
||||
override fun close() {}
|
||||
|
||||
override fun append(key: Any, value: Any) {}
|
||||
|
||||
override fun remove(key: Any) {}
|
||||
|
||||
override fun set(key: Any, value: Any) {}
|
||||
|
||||
override fun get(key: Any) = null
|
||||
|
||||
override fun contains(key: Any) = false
|
||||
}
|
||||
|
||||
abstract class BaseCompilationTransactionTest {
|
||||
@TempDir
|
||||
protected lateinit var stashDir: Path
|
||||
@@ -84,6 +111,38 @@ abstract class BaseCompilationTransactionTest {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testInMemoryWrappersAreResetOnUnsuccessfulTransaction() {
|
||||
val inMemoryStorageWrapperMock = InMemoryStorageWrapperMock()
|
||||
useTransaction {
|
||||
registerInMemoryStorageWrapper(inMemoryStorageWrapperMock)
|
||||
}
|
||||
assertTrue(inMemoryStorageWrapperMock.reset)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testInMemoryWrappersAreResetOnExecutionException() {
|
||||
val inMemoryStorageWrapperMock = InMemoryStorageWrapperMock()
|
||||
assertThrows<Exception> {
|
||||
useTransaction {
|
||||
registerInMemoryStorageWrapper(inMemoryStorageWrapperMock)
|
||||
markAsSuccessful()
|
||||
throw Exception()
|
||||
}
|
||||
}
|
||||
assertTrue(inMemoryStorageWrapperMock.reset)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testInMemoryWrappersAreNotResetOnSuccessfulTransaction() {
|
||||
val inMemoryStorageWrapperMock = InMemoryStorageWrapperMock()
|
||||
useTransaction {
|
||||
registerInMemoryStorageWrapper(inMemoryStorageWrapperMock)
|
||||
markAsSuccessful()
|
||||
}
|
||||
assertFalse(inMemoryStorageWrapperMock.reset)
|
||||
}
|
||||
}
|
||||
|
||||
class NonRecoverableCompilationTransactionTest : BaseCompilationTransactionTest() {
|
||||
|
||||
Reference in New Issue
Block a user