[Native][tests] Support FIR for KLIB evolution tests
This commit is contained in:
committed by
Space Team
parent
3506e0c20f
commit
17c5f5d5a2
+262
@@ -0,0 +1,262 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 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.konan.blackboxtest;
|
||||||
|
|
||||||
|
import com.intellij.testFramework.TestDataPath;
|
||||||
|
import org.jetbrains.kotlin.test.util.KtTestUtil;
|
||||||
|
import org.jetbrains.kotlin.konan.blackboxtest.support.group.FirPipeline;
|
||||||
|
import org.jetbrains.kotlin.test.TestMetadata;
|
||||||
|
import org.junit.jupiter.api.Nested;
|
||||||
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
|
import java.io.File;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
|
/** This class is generated by {@link org.jetbrains.kotlin.generators.tests.GenerateNativeTestsKt}. DO NOT MODIFY MANUALLY */
|
||||||
|
@SuppressWarnings("all")
|
||||||
|
@TestMetadata("compiler/testData/binaryCompatibility/klibEvolution")
|
||||||
|
@TestDataPath("$PROJECT_ROOT")
|
||||||
|
@FirPipeline()
|
||||||
|
public class FirNativeKlibEvolutionTestGenerated extends AbstractNativeKlibEvolutionTest {
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addAbstractMemberBody.kt")
|
||||||
|
public void testAddAbstractMemberBody() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addAbstractMemberBody.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addCompanionObject.kt")
|
||||||
|
public void testAddCompanionObject() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addCompanionObject.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addDefaultImplementations.kt")
|
||||||
|
public void testAddDefaultImplementations() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addDefaultImplementations.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addEnumClassMember.kt")
|
||||||
|
public void testAddEnumClassMember() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addEnumClassMember.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addLateinitToVar.kt")
|
||||||
|
public void testAddLateinitToVar() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addLateinitToVar.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addOpenToClass.kt")
|
||||||
|
public void testAddOpenToClass() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addOpenToClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addOpenToMember.kt")
|
||||||
|
public void testAddOpenToMember() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addOpenToMember.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addOrRemoveConst.kt")
|
||||||
|
public void testAddOrRemoveConst() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addOrRemoveConst.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addOrRemoveInitBlock.kt")
|
||||||
|
public void testAddOrRemoveInitBlock() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addOrRemoveInitBlock.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addOverloads.kt")
|
||||||
|
public void testAddOverloads() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addOverloads.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addParameterDefaulValue.kt")
|
||||||
|
public void testAddParameterDefaulValue() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addParameterDefaulValue.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addPropertyAccessor.kt")
|
||||||
|
public void testAddPropertyAccessor() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addPropertyAccessor.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("addingSealedClassMember.kt")
|
||||||
|
public void testAddingSealedClassMember() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/addingSealedClassMember.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAllFilesPresentInKlibEvolution() throws Exception {
|
||||||
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("compiler/testData/binaryCompatibility/klibEvolution"), Pattern.compile("^(.+)\\.kt$"), null, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changeBaseClassOrder.kt")
|
||||||
|
public void testChangeBaseClassOrder() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changeBaseClassOrder.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changeCompanionToNestedObject.kt")
|
||||||
|
public void testChangeCompanionToNestedObject() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changeCompanionToNestedObject.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changeConstInitialization.kt")
|
||||||
|
public void testChangeConstInitialization() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changeConstInitialization.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changeNamesOfTypeParameters.kt")
|
||||||
|
public void testChangeNamesOfTypeParameters() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changeNamesOfTypeParameters.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changeObjectToCompanion.kt")
|
||||||
|
public void testChangeObjectToCompanion() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changeObjectToCompanion.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changeParameterDefaultValue.kt")
|
||||||
|
public void testChangeParameterDefaultValue() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changeParameterDefaultValue.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changePropertyFromValToVar.kt")
|
||||||
|
public void testChangePropertyFromValToVar() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changePropertyFromValToVar.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("changePropertyInitialization.kt")
|
||||||
|
public void testChangePropertyInitialization() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/changePropertyInitialization.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("constructorParameterMarkValVar.kt")
|
||||||
|
public void testConstructorParameterMarkValVar() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/constructorParameterMarkValVar.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deleteOverrideMember.kt")
|
||||||
|
public void testDeleteOverrideMember() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/deleteOverrideMember.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("deletePrivateMembers.kt")
|
||||||
|
public void testDeletePrivateMembers() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/deletePrivateMembers.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inlineBodyChange.kt")
|
||||||
|
public void testInlineBodyChange() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/inlineBodyChange.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("inlineFunction.kt")
|
||||||
|
public void testInlineFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/inlineFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("makeFunctionInfixOrTailrec.kt")
|
||||||
|
public void testMakeFunctionInfixOrTailrec() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/makeFunctionInfixOrTailrec.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("moreSpecificBaseClass.kt")
|
||||||
|
public void testMoreSpecificBaseClass() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/moreSpecificBaseClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("moveMemberUpInHierarchy.kt")
|
||||||
|
public void testMoveMemberUpInHierarchy() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/moveMemberUpInHierarchy.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("newFakeOverride.kt")
|
||||||
|
public void testNewFakeOverride() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/newFakeOverride.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("newOverrideMember.kt")
|
||||||
|
public void testNewOverrideMember() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/newOverrideMember.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("removeAbstractFromClass.kt")
|
||||||
|
public void testRemoveAbstractFromClass() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/removeAbstractFromClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("removeInfixOrTailrecFromFunction.kt")
|
||||||
|
public void testRemoveInfixOrTailrecFromFunction() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/removeInfixOrTailrecFromFunction.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("removeLateinitFromVar.kt")
|
||||||
|
public void testRemoveLateinitFromVar() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/removeLateinitFromVar.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("removePropertyAccessor.kt")
|
||||||
|
public void testRemovePropertyAccessor() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/removePropertyAccessor.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("renameArguments.kt")
|
||||||
|
public void testRenameArguments() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/renameArguments.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("reorderClassConstructors.kt")
|
||||||
|
public void testReorderClassConstructors() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/reorderClassConstructors.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("turnClassIntoDataClass.kt")
|
||||||
|
public void testTurnClassIntoDataClass() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/turnClassIntoDataClass.kt");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("widenSuperMemberVisibility.kt")
|
||||||
|
public void testWidenSuperMemberVisibility() throws Exception {
|
||||||
|
runTest("compiler/testData/binaryCompatibility/klibEvolution/widenSuperMemberVisibility.kt");
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -75,6 +75,12 @@ fun main() {
|
|||||||
) {
|
) {
|
||||||
model("binaryCompatibility/klibEvolution", recursive = false)
|
model("binaryCompatibility/klibEvolution", recursive = false)
|
||||||
}
|
}
|
||||||
|
testClass<AbstractNativeKlibEvolutionTest>(
|
||||||
|
suiteTestClassName = "FirNativeKlibEvolutionTestGenerated",
|
||||||
|
annotations = listOf(provider<FirPipeline>())
|
||||||
|
) {
|
||||||
|
model("binaryCompatibility/klibEvolution", recursive = false)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// CInterop tests.
|
// CInterop tests.
|
||||||
|
|||||||
+61
-34
@@ -21,7 +21,9 @@ import org.jetbrains.kotlin.konan.blackboxtest.support.settings.KotlinNativeTarg
|
|||||||
import org.jetbrains.kotlin.konan.blackboxtest.support.settings.SimpleTestDirectories
|
import org.jetbrains.kotlin.konan.blackboxtest.support.settings.SimpleTestDirectories
|
||||||
import org.jetbrains.kotlin.konan.blackboxtest.support.settings.Timeouts
|
import org.jetbrains.kotlin.konan.blackboxtest.support.settings.Timeouts
|
||||||
import org.jetbrains.kotlin.konan.blackboxtest.support.util.*
|
import org.jetbrains.kotlin.konan.blackboxtest.support.util.*
|
||||||
|
import org.jetbrains.kotlin.test.Directives
|
||||||
import org.jetbrains.kotlin.utils.DFS
|
import org.jetbrains.kotlin.utils.DFS
|
||||||
|
import org.junit.jupiter.api.Assumptions
|
||||||
import org.junit.jupiter.api.Tag
|
import org.junit.jupiter.api.Tag
|
||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.math.max
|
import kotlin.math.max
|
||||||
@@ -31,12 +33,24 @@ import org.jetbrains.kotlin.compatibility.binary.TestModule as TModule
|
|||||||
@Tag("klib-evolution")
|
@Tag("klib-evolution")
|
||||||
abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
||||||
|
|
||||||
protected fun runTest(@TestDataFile testPath: String): Unit = AbstractKlibBinaryCompatibilityTest.doTest(
|
// TODO: unmute after fixing KT-57711
|
||||||
filePath = testPath,
|
private fun isIgnoredTest(filePath: String): Boolean {
|
||||||
expectedResult = "OK",
|
if (!this::class.java.simpleName.startsWith("Fir"))
|
||||||
produceKlib = ::buildKlib,
|
return false
|
||||||
produceAndRunProgram = ::buildAndExecuteBinary
|
|
||||||
)
|
val fileName = filePath.substringAfterLast('/')
|
||||||
|
return fileName == "addOrRemoveConst.kt" || fileName == "changeConstInitialization.kt"
|
||||||
|
}
|
||||||
|
|
||||||
|
protected fun runTest(@TestDataFile testPath: String) {
|
||||||
|
Assumptions.assumeFalse(isIgnoredTest(testPath))
|
||||||
|
AbstractKlibBinaryCompatibilityTest.doTest(
|
||||||
|
filePath = testPath,
|
||||||
|
expectedResult = "OK",
|
||||||
|
produceKlib = ::buildKlib,
|
||||||
|
produceAndRunProgram = ::buildAndExecuteBinary
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
private fun buildKlib(
|
private fun buildKlib(
|
||||||
testModule: TModule,
|
testModule: TModule,
|
||||||
@@ -49,7 +63,7 @@ abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
|||||||
)
|
)
|
||||||
val klibFile = module.klibFile
|
val klibFile = module.klibFile
|
||||||
|
|
||||||
val testCase = mkTestCase(module, COMPILER_ARGS_FOR_KLIB)
|
val testCase = makeTestCase(module.name, module.module, COMPILER_ARGS_FOR_KLIB)
|
||||||
|
|
||||||
val compilation = LibraryCompilation(
|
val compilation = LibraryCompilation(
|
||||||
settings = testRunSettings,
|
settings = testRunSettings,
|
||||||
@@ -68,46 +82,58 @@ abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
|||||||
mainTestModule: TModule,
|
mainTestModule: TModule,
|
||||||
expectedResult: String
|
expectedResult: String
|
||||||
) {
|
) {
|
||||||
val binaryVersion = moduleVersions.values.maxOrNull() ?: 2
|
val latestVersion = moduleVersions.values.maxOrNull() ?: 2
|
||||||
|
|
||||||
buildKlib(mainTestModule, binaryVersion)
|
|
||||||
|
|
||||||
val (binarySourceDir, binaryOutputDir) = listOf(BINARY_SOURCE_DIR_NAME, BINARY_OUTPUT_DIR_NAME).map {
|
val (binarySourceDir, binaryOutputDir) = listOf(BINARY_SOURCE_DIR_NAME, BINARY_OUTPUT_DIR_NAME).map {
|
||||||
buildDir.resolve(LAUNCHER_MODULE_NAME).resolve(it).apply { mkdirs() }
|
buildDir.resolve(LAUNCHER_MODULE_NAME).resolve(it).apply { mkdirs() }
|
||||||
}
|
}
|
||||||
|
|
||||||
val launcherModule = LightDependencyWithVersion(LAUNCHER_MODULE_NAME, binaryVersion).apply {
|
val launcherText = generateBoxFunctionLauncher("box", expectedResult)
|
||||||
module.files += TestFile.createUncommitted(
|
val launcherFile = binarySourceDir.resolve(LAUNCHER_FILE_NAME)
|
||||||
location = binarySourceDir.resolve(LAUNCHER_FILE_NAME),
|
TFile(mainTestModule, launcherFile.name, launcherText, Directives())
|
||||||
module = module,
|
|
||||||
text = generateBoxFunctionLauncher("box", expectedResult)
|
buildKlib(mainTestModule, latestVersion)
|
||||||
)
|
|
||||||
}
|
|
||||||
val launcherDependencies = collectDependencies(mainTestModule.name, binaryVersion)
|
|
||||||
val executableFile = binaryOutputDir.resolve(
|
val executableFile = binaryOutputDir.resolve(
|
||||||
"app." + testRunSettings.get<KotlinNativeTargets>().testTarget.family.exeSuffix
|
"app." + testRunSettings.get<KotlinNativeTargets>().testTarget.family.exeSuffix
|
||||||
)
|
)
|
||||||
|
val executableArtifact = TestCompilationArtifact.Executable(executableFile)
|
||||||
|
|
||||||
val cachedDependencies = if (staticCacheRequiredForEveryLibrary) {
|
val cachedDependencies: List<ExistingDependency<KLIBStaticCache>> = if (staticCacheRequiredForEveryLibrary) {
|
||||||
latestDependencies.map { (module, deps) ->
|
latestDependencies.map { (module, deps) ->
|
||||||
buildCacheForKlib(module, deps)
|
val testModule = module.module
|
||||||
|
|
||||||
|
val staticCacheCompilationOptions = if (testModule.name == mainTestModule.name)
|
||||||
|
StaticCacheCompilation.Options.ForIncludedLibraryWithTests(executableArtifact, DEFAULT_EXTRAS)
|
||||||
|
else
|
||||||
|
StaticCacheCompilation.Options.Regular
|
||||||
|
|
||||||
|
buildCacheForKlib(module, staticCacheCompilationOptions, deps)
|
||||||
module.klibFile.toStaticCacheArtifact().toDependency()
|
module.klibFile.toStaticCacheArtifact().toDependency()
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
emptyList()
|
emptyList()
|
||||||
}
|
}
|
||||||
|
|
||||||
val testCase = mkTestCase(launcherModule, COMPILER_ARGS_FOR_STATIC_CACHE_AND_EXECUTABLE)
|
val mainModuleDependencies: List<ExistingDependency<KLIB>> = collectDependencies(mainTestModule.name, latestVersion).map { module ->
|
||||||
|
val klibArtifact = module.klibFile.toKlib()
|
||||||
|
|
||||||
|
val testModule = module.module
|
||||||
|
if (testModule.name == mainTestModule.name)
|
||||||
|
klibArtifact.toIncludedDependency()
|
||||||
|
else
|
||||||
|
klibArtifact.toDependency()
|
||||||
|
}
|
||||||
|
|
||||||
|
val testCase = makeTestCase(LAUNCHER_MODULE_NAME, module = null, COMPILER_ARGS_FOR_STATIC_CACHE_AND_EXECUTABLE)
|
||||||
|
|
||||||
val compilation = ExecutableCompilation(
|
val compilation = ExecutableCompilation(
|
||||||
settings = testRunSettings,
|
settings = testRunSettings,
|
||||||
freeCompilerArgs = testCase.freeCompilerArgs,
|
freeCompilerArgs = testCase.freeCompilerArgs,
|
||||||
sourceModules = testCase.modules,
|
sourceModules = testCase.modules,
|
||||||
extras = testCase.extras,
|
extras = testCase.extras,
|
||||||
dependencies = launcherDependencies.map {
|
dependencies = mainModuleDependencies + cachedDependencies,
|
||||||
it.klibFile.toKlib().toDependency()
|
expectedArtifact = executableArtifact
|
||||||
} + cachedDependencies,
|
|
||||||
expectedArtifact = TestCompilationArtifact.Executable(executableFile)
|
|
||||||
)
|
)
|
||||||
|
|
||||||
val compilationResult = compilation.trigger()
|
val compilationResult = compilation.trigger()
|
||||||
@@ -118,6 +144,7 @@ abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
|||||||
|
|
||||||
private fun buildCacheForKlib(
|
private fun buildCacheForKlib(
|
||||||
module: LightDependencyWithVersion,
|
module: LightDependencyWithVersion,
|
||||||
|
staticCacheCompilationOptions: StaticCacheCompilation.Options,
|
||||||
moduleDependencies: Collection<LightDependencyWithVersion>
|
moduleDependencies: Collection<LightDependencyWithVersion>
|
||||||
) {
|
) {
|
||||||
val klib = module.klibFile
|
val klib = module.klibFile
|
||||||
@@ -125,7 +152,7 @@ abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
|||||||
val compilation = StaticCacheCompilation(
|
val compilation = StaticCacheCompilation(
|
||||||
settings = testRunSettings,
|
settings = testRunSettings,
|
||||||
freeCompilerArgs = COMPILER_ARGS_FOR_STATIC_CACHE_AND_EXECUTABLE,
|
freeCompilerArgs = COMPILER_ARGS_FOR_STATIC_CACHE_AND_EXECUTABLE,
|
||||||
options = StaticCacheCompilation.Options.Regular,
|
options = staticCacheCompilationOptions,
|
||||||
pipelineType = testRunSettings.get(),
|
pipelineType = testRunSettings.get(),
|
||||||
dependencies = moduleDependencies.map {
|
dependencies = moduleDependencies.map {
|
||||||
it.klibFile.toStaticCacheArtifact().toDependency()
|
it.klibFile.toStaticCacheArtifact().toDependency()
|
||||||
@@ -240,13 +267,14 @@ abstract class AbstractNativeKlibEvolutionTest : AbstractNativeSimpleTest() {
|
|||||||
return extra
|
return extra
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun mkTestCase(
|
private fun makeTestCase(
|
||||||
extra: LightDependencyWithVersion,
|
id: String,
|
||||||
|
module: TestModule.Exclusive?,
|
||||||
compilerArgs: TestCompilerArgs
|
compilerArgs: TestCompilerArgs
|
||||||
): TestCase = TestCase(
|
): TestCase = TestCase(
|
||||||
id = TestCaseId.Named(extra.name),
|
id = TestCaseId.Named(id),
|
||||||
kind = TestKind.STANDALONE,
|
kind = TestKind.STANDALONE,
|
||||||
modules = setOf(extra.module),
|
modules = setOfNotNull(module),
|
||||||
freeCompilerArgs = compilerArgs,
|
freeCompilerArgs = compilerArgs,
|
||||||
nominalPackageName = PackageName.EMPTY,
|
nominalPackageName = PackageName.EMPTY,
|
||||||
checks = TestRunChecks.Default(testRunSettings.get<Timeouts>().executionTimeout),
|
checks = TestRunChecks.Default(testRunSettings.get<Timeouts>().executionTimeout),
|
||||||
@@ -282,10 +310,9 @@ private fun File.toStaticCacheArtifact() = KLIBStaticCache(
|
|||||||
klib = KLIB(this)
|
klib = KLIB(this)
|
||||||
)
|
)
|
||||||
|
|
||||||
private fun KLIB.toDependency() =
|
private fun KLIB.toDependency() = ExistingDependency(this, TestCompilationDependencyType.Library)
|
||||||
ExistingDependency(this, TestCompilationDependencyType.Library)
|
private fun KLIB.toIncludedDependency() = ExistingDependency(this, TestCompilationDependencyType.IncludedLibrary)
|
||||||
private fun KLIBStaticCache.toDependency() =
|
private fun KLIBStaticCache.toDependency() = ExistingDependency(this, TestCompilationDependencyType.LibraryStaticCache)
|
||||||
ExistingDependency(this, TestCompilationDependencyType.LibraryStaticCache)
|
|
||||||
|
|
||||||
private fun <T : TestCompilationArtifact> BasicCompilation<T>.trigger(): TestCompilationResult.Success<out T> =
|
private fun <T : TestCompilationArtifact> BasicCompilation<T>.trigger(): TestCompilationResult.Success<out T> =
|
||||||
result.assertSuccess()
|
result.assertSuccess()
|
||||||
|
|||||||
Reference in New Issue
Block a user