[IC] Add unit tests for TransactionOutputsRegistrar
#KT-49785 In Progress
This commit is contained in:
committed by
Space Team
parent
1f2eb4c9fe
commit
40a901caa1
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||
*/
|
||||
|
||||
package org.jetbrains.kotlin.incremental
|
||||
|
||||
import org.jetbrains.kotlin.build.report.DoNothingBuildReporter
|
||||
import org.jetbrains.kotlin.compilerRunner.OutputItemsCollector
|
||||
import org.junit.jupiter.api.Assertions.*
|
||||
import org.junit.jupiter.api.Test
|
||||
import org.junit.jupiter.api.io.TempDir
|
||||
import java.io.File
|
||||
import java.nio.file.Files
|
||||
import java.nio.file.Path
|
||||
|
||||
class TransactionOutputsRegistrarTest {
|
||||
@TempDir
|
||||
private lateinit var stashDir: Path
|
||||
|
||||
@TempDir
|
||||
private lateinit var workingDir: Path
|
||||
|
||||
private class MockOutputItemsCollector : OutputItemsCollector {
|
||||
val addedOutputItems = mutableSetOf<Pair<Collection<File>, File>>()
|
||||
|
||||
override fun add(sourceFiles: Collection<File>, outputFile: File) {
|
||||
addedOutputItems.add(sourceFiles to outputFile)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testSuccessfulTransaction() {
|
||||
val mockCollector = MockOutputItemsCollector()
|
||||
val srcFile = workingDir.resolve("a.kt")
|
||||
val outputFile = workingDir.resolve("AKt.class")
|
||||
RecoverableCompilationTransaction(DoNothingBuildReporter, stashDir).use {
|
||||
val registrar = TransactionOutputsRegistrar(it, mockCollector)
|
||||
registrar.add(listOf(srcFile.toFile()), outputFile.toFile())
|
||||
Files.write(outputFile, "blah-blah".toByteArray())
|
||||
it.markAsSuccessful()
|
||||
}
|
||||
assertIterableEquals(
|
||||
setOf(listOf(srcFile.toFile()) to outputFile.toFile()),
|
||||
mockCollector.addedOutputItems,
|
||||
"TransactionOutputsRegistrar should call the origin"
|
||||
)
|
||||
assertEquals("blah-blah", String(Files.readAllBytes(outputFile)))
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testFailedTransaction() {
|
||||
val mockCollector = MockOutputItemsCollector()
|
||||
val srcFile = workingDir.resolve("a.kt")
|
||||
val outputFile = workingDir.resolve("AKt.class")
|
||||
RecoverableCompilationTransaction(DoNothingBuildReporter, stashDir).use {
|
||||
val registrar = TransactionOutputsRegistrar(it, mockCollector)
|
||||
registrar.add(listOf(srcFile.toFile()), outputFile.toFile())
|
||||
Files.write(outputFile, "blah-blah".toByteArray())
|
||||
}
|
||||
assertIterableEquals(
|
||||
setOf(listOf(srcFile.toFile()) to outputFile.toFile()),
|
||||
mockCollector.addedOutputItems,
|
||||
"TransactionOutputsRegistrar should call the origin"
|
||||
)
|
||||
assertFalse(Files.exists(outputFile), "Output file wasn't reverted")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user