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
|
||||
// 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
|
||||
|
||||
|
||||
+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.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))
|
||||
}
|
||||
|
||||
+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.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)
|
||||
)
|
||||
|
||||
|
||||
+12
-9
@@ -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
|
||||
Reference in New Issue
Block a user