IR text tests: throw an error when test fails to build an external dump

This commit is contained in:
Mikhail Glukhikh
2019-04-08 17:50:16 +03:00
parent 2937cb7237
commit 02bdc826d5
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.ir.visitors.acceptChildrenVoid
import org.jetbrains.kotlin.name.ClassId
import org.jetbrains.kotlin.name.FqName
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.testFramework.KtUsefulTestCase
import org.jetbrains.kotlin.utils.rethrow
import java.io.File
import java.util.regex.Pattern
@@ -59,11 +60,19 @@ abstract class AbstractIrTextTestCase : AbstractIrGeneratorTestCase() {
myEnvironment.configuration.languageVersionSettings
)
val path = wholeFile.path
val replacedPath = path.replace(".kt", "__")
val externalFilePaths = wholeFile.parentFile.listFiles().mapNotNullTo(mutableListOf()) {
if (it.path.startsWith(replacedPath)) it.path else null
}
for (externalClassFqn in parseDumpExternalClasses(wholeText)) {
val classDump = stubGenerator.generateExternalClass(irModule.descriptor, externalClassFqn).dump()
val expectedFile = File(wholeFile.path.replace(".kt", "__$externalClassFqn.txt"))
val expectedFilePath = path.replace(".kt", "__$externalClassFqn.txt")
val expectedFile = File(expectedFilePath)
externalFilePaths -= expectedFilePath
KotlinTestUtils.assertEqualsToFile(expectedFile, classDump)
}
KtUsefulTestCase.assertEmpty("The following external dump files were not built: $externalFilePaths", externalFilePaths)
}
private fun DeclarationStubGenerator.generateExternalClass(descriptor: ModuleDescriptor, externalClassFqn: String): IrClass {