[K2/N] KT-55464, KT-56091 Fix various klib annotations, including critical ones

Merge-request: KT-MR-8457
Merged-by: Vladimir Sukharev <Vladimir.Sukharev@jetbrains.com>
This commit is contained in:
Vladimir Sukharev
2023-01-26 11:15:15 +00:00
committed by Space Team
parent 53967a1822
commit 1990883bdc
19 changed files with 394 additions and 19 deletions
@@ -100,6 +100,23 @@ fun main() {
}
}
// Klib contents tests
testGroup("native/native.tests/tests-gen", "native/native.tests/testData") {
testClass<AbstractNativeKlibContentsTest>(
suiteTestClassName = "NativeK1LibContentsTestGenerated"
) {
model("klibContents", pattern = "^([^_](.+)).kt$", recursive = false)
}
}
testGroup("native/native.tests/tests-gen", "native/native.tests/testData") {
testClass<AbstractNativeKlibContentsTest>(
suiteTestClassName = "NativeK2LibContentsTestGenerated",
annotations = listOf(provider<K2Pipeline>())
) {
model("klibContents", pattern = "^([^_](.+)).kt$", recursive = false)
}
}
// LLDB integration tests.
testGroup("native/native.tests/tests-gen", "native/native.tests/testData") {
testClass<AbstractNativeBlackBoxTest>(
@@ -0,0 +1,61 @@
/*
* Copyright 2010-2022 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.openapi.util.text.StringUtilRt
import com.intellij.testFramework.TestDataFile
import org.jetbrains.kotlin.konan.blackboxtest.support.*
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.*
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.TestCompilationArtifact.*
import org.jetbrains.kotlin.konan.blackboxtest.support.compilation.TestCompilationResult.Companion.assertSuccess
import org.jetbrains.kotlin.konan.blackboxtest.support.runner.*
import org.jetbrains.kotlin.konan.blackboxtest.support.settings.*
import org.jetbrains.kotlin.konan.blackboxtest.support.util.*
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertEquals
import org.junit.jupiter.api.Tag
import java.io.File
@Tag("klib-contents")
abstract class AbstractNativeKlibContentsTest : AbstractNativeSimpleTest() {
protected fun runTest(@TestDataFile testPath: String) {
val testPathFull = getAbsoluteFile(testPath)
val testCase: TestCase = generateTestCaseWithSingleSource(testPathFull, listOf())
val testCompilationResult: TestCompilationResult.Success<out KLIB> = compileToLibrary(testCase)
val kotlinNativeClassLoader = testRunSettings.get<KotlinNativeClassLoader>()
val klibContents = testCompilationResult.assertSuccess().resultingArtifact.getContents(kotlinNativeClassLoader.classLoader)
val klibContentsFiltered = filterContentsOutput(klibContents, linestoExclude = listOf("package test {", "}", ""))
val expectedContents = File("${testPathFull.canonicalPath.substringBeforeLast(".")}.txt").readText()
assertEquals(StringUtilRt.convertLineSeparators(expectedContents), StringUtilRt.convertLineSeparators(klibContentsFiltered)) {
"Test failed. Compilation result was: $testCompilationResult"
}
}
private fun generateTestCaseWithSingleSource(source: File, extraArgs: List<String>): TestCase {
val moduleName: String = source.name
val module = TestModule.Exclusive(moduleName, emptySet(), emptySet())
module.files += TestFile.createCommitted(source, module)
return TestCase(
id = TestCaseId.Named(moduleName),
kind = TestKind.STANDALONE,
modules = setOf(module),
freeCompilerArgs = TestCompilerArgs(extraArgs),
nominalPackageName = PackageName.EMPTY,
checks = TestRunChecks.Default(testRunSettings.get<Timeouts>().executionTimeout),
extras = TestCase.WithTestRunnerExtras(TestRunnerType.DEFAULT)
).apply {
initialize(null, null)
}
}
private fun filterContentsOutput(contents: String, linestoExclude: List<String>) =
contents.split("\n").filterNot { line ->
linestoExclude.any { exclude -> exclude == line }
}.joinToString(separator = "\n")
}