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