ModuleTransformerForTwoFilesBoxTests -> SplittingModuleTransformerForBoxTests

Need to include Java files in IR serialization tests, so generalize
TwoFilesBoxTest for more than two files.
This commit is contained in:
Georgy Bronnikov
2021-08-07 16:14:30 +03:00
committed by TeamCityServer
parent 13cf9329b2
commit 3b8cb4b00d
4 changed files with 16 additions and 15 deletions
@@ -1,8 +1,6 @@
// FULL_JDK
// WITH_RUNTIME
// Not a multi-module test.
// TARGET_BACKEND: JVM
// IGNORE_BACKEND_MULTI_MODULE: JVM, JVM_IR, JVM_MULTI_MODULE_OLD_AGAINST_IR, JVM_MULTI_MODULE_IR_AGAINST_OLD
// ASSERTIONS_MODE: jvm
// FILE: A.kt
@@ -25,7 +25,7 @@ import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendFacade
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
import org.jetbrains.kotlin.test.model.*
import org.jetbrains.kotlin.test.runners.AbstractKotlinCompilerWithTargetBackendTest
import org.jetbrains.kotlin.test.services.ModuleTransformerForTwoFilesBoxTests
import org.jetbrains.kotlin.test.services.SplittingModuleTransformerForBoxTests
@OptIn(TestInfrastructureInternals::class)
@@ -45,7 +45,7 @@ abstract class AbstractCompileKotlinAgainstInlineKotlinTestBase<I : ResultingArt
useInlineHandlers()
configureCommonHandlersForBoxTest()
useModuleStructureTransformers(
ModuleTransformerForTwoFilesBoxTests()
SplittingModuleTransformerForBoxTests()
)
useAfterAnalysisCheckers(::BlackBoxCodegenSuppressor.bind(IGNORE_BACKEND_MULTI_MODULE))
}
@@ -10,7 +10,7 @@ import org.jetbrains.kotlin.test.TestInfrastructureInternals
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.builders.configureJvmArtifactsHandlersStep
import org.jetbrains.kotlin.test.services.ModuleTransformerForSwitchingBackend
import org.jetbrains.kotlin.test.services.ModuleTransformerForTwoFilesBoxTests
import org.jetbrains.kotlin.test.services.SplittingModuleTransformerForBoxTests
@OptIn(TestInfrastructureInternals::class)
abstract class AbstractBoxInlineWithDifferentBackendsTest(
@@ -25,7 +25,7 @@ abstract class AbstractBoxInlineWithDifferentBackendsTest(
resetModuleStructureTransformers()
useModuleStructureTransformers(
ModuleTransformerForTwoFilesBoxTests(),
SplittingModuleTransformerForBoxTests(),
ModuleTransformerForSwitchingBackend(backendForLib, backendForMain)
)
@@ -13,20 +13,23 @@ import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.impl.TestModuleStructureImpl
/**
* This transformers is used for transforming test with two files
* into test with two modules
* This transformers is used for transforming test with several files
* into test with two modules, the second one containing the last file.
*
* It will fail in case when module structure contains more than one module
* or not exactly two files in it
* Used when the same test sets are run both in a single module mode (as in IrBlackBoxInlineCodegenTest)
* and in multi-module mode (as in IrCompileKotlinAgainstInlineKotlinTest).
*
* It will fail in case when module structure contains more than one module.
*/
@TestInfrastructureInternals
class ModuleTransformerForTwoFilesBoxTests : ModuleStructureTransformer() {
class SplittingModuleTransformerForBoxTests : ModuleStructureTransformer() {
override fun transformModuleStructure(moduleStructure: TestModuleStructure): TestModuleStructure {
val module = moduleStructure.modules.singleOrNull() ?: error("Test should contain only one module")
val realFiles = module.files.filterNot { it.isAdditional }
if (realFiles.size != 2) error("Test should contain exactly two files")
if (realFiles.size < 2) error("Test should contain at least two files")
val additionalFiles = module.files.filter { it.isAdditional }
val (first, second) = realFiles
val firstModuleFiles = realFiles.dropLast(1)
val secondModuleFile = realFiles.last()
val firstModule = TestModule(
name = "lib",
module.targetPlatform,
@@ -34,7 +37,7 @@ class ModuleTransformerForTwoFilesBoxTests : ModuleStructureTransformer() {
module.frontendKind,
module.backendKind,
module.binaryKind,
files = listOf(first) + additionalFiles,
files = firstModuleFiles + additionalFiles,
allDependencies = emptyList(),
module.directives,
module.languageVersionSettings
@@ -47,7 +50,7 @@ class ModuleTransformerForTwoFilesBoxTests : ModuleStructureTransformer() {
module.frontendKind,
module.backendKind,
module.binaryKind,
files = listOf(second) + additionalFiles,
files = listOf(secondModuleFile) + additionalFiles,
allDependencies = listOf(DependencyDescription("lib", DependencyKind.Binary, DependencyRelation.FriendDependency)),
module.directives,
module.languageVersionSettings