[KLIB tool] Update Kotlin/Native C-interop tests

^KT-62340
This commit is contained in:
Dmitriy Dolovov
2024-02-09 11:14:29 +01:00
committed by Space Team
parent 07767f88e2
commit ab814e1600
66 changed files with 2280 additions and 844 deletions
@@ -5,7 +5,6 @@
package org.jetbrains.kotlin.konan.test.blackbox
import com.intellij.openapi.util.text.StringUtilRt
import com.intellij.testFramework.TestDataFile
import org.jetbrains.kotlin.konan.test.blackbox.support.*
import org.jetbrains.kotlin.konan.test.blackbox.support.compilation.TestCompilationArtifact.KLIB
@@ -17,7 +16,7 @@ import org.jetbrains.kotlin.konan.test.blackbox.support.util.DEFAULT_FILE_NAME
import org.jetbrains.kotlin.konan.test.blackbox.support.util.DEFAULT_MODULE_NAME
import org.jetbrains.kotlin.konan.test.blackbox.support.util.getAbsoluteFile
import org.jetbrains.kotlin.konan.test.blackbox.support.util.dumpMetadata
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertEquals
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertEqualsToFile
import org.junit.jupiter.api.Assumptions
import org.junit.jupiter.api.Tag
import kotlin.test.assertIs
@@ -40,18 +39,14 @@ abstract class AbstractNativeCInteropKT39120Test : AbstractNativeCInteropBaseTes
val includeFrameworkArgs = TestCInteropArgs("-compiler-option", "-F${testDataDir.canonicalPath}")
val klib1: KLIB = cinteropToLibrary(targets, def1File, buildDir, includeFrameworkArgs).assertSuccess().resultingArtifact
val metadata1 = klib1.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
val expectedFiltered1Output = golden1File.readText()
val actualFiltered1Output = filterContentsOutput(metadata1, " pod.Version|POD|class Pod")
assertEquals(StringUtilRt.convertLineSeparators(expectedFiltered1Output), StringUtilRt.convertLineSeparators(actualFiltered1Output))
assertEqualsToFile(golden1File, actualFiltered1Output)
val cinterop2ExtraArgs = TestCInteropArgs("-l", klib1.klibFile.canonicalPath, "-compiler-option", "-fmodules")
val klib2: KLIB = cinteropToLibrary(targets, def2File, buildDir, includeFrameworkArgs + cinterop2ExtraArgs).assertSuccess().resultingArtifact
val metadata2 = klib2.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
val expectedFiltered2Output = golden2File.readText()
val actualFiltered2Output = filterContentsOutput(metadata2, " pod.Version|POD|class Pod")
assertEquals(StringUtilRt.convertLineSeparators(expectedFiltered2Output), StringUtilRt.convertLineSeparators(actualFiltered2Output))
assertEqualsToFile(golden2File, actualFiltered2Output)
val ktFile = testPathFull.resolve(DEFAULT_FILE_NAME)
if (ktFile.exists()) {
@@ -79,10 +74,13 @@ abstract class AbstractNativeCInteropKT39120Test : AbstractNativeCInteropBaseTes
}
}
private fun filterContentsOutput(contents: String, pattern: String) =
contents.split("\n").filter {
it.contains(Regex(pattern))
}.joinToString(separator = "\n").replace("@ExperimentalForeignApi ", "")
private fun filterContentsOutput(contents: String, pattern: String): String {
val regex = Regex(pattern)
return contents.lineSequence()
.filter { it.contains(regex) }
.filterNot { it.trim() == "@kotlinx/cinterop/ExperimentalForeignApi" }
.joinToString("\n")
}
private fun createTestCaseNoTestRun(module: TestModule.Exclusive, compilerArgs: TestCompilerArgs) = TestCase(
id = TestCaseId.Named(module.name),
@@ -17,6 +17,7 @@ import org.jetbrains.kotlin.konan.test.blackbox.support.util.getAbsoluteFile
import org.jetbrains.kotlin.konan.test.blackbox.support.util.dumpMetadata
import org.jetbrains.kotlin.konan.util.CInteropHints
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertEquals
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertEqualsToFile
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertTrue
import org.junit.jupiter.api.Assumptions
import org.junit.jupiter.api.Tag
@@ -104,18 +105,15 @@ abstract class AbstractNativeCInteropTest : AbstractNativeCInteropBaseTest() {
"Test failed. CInterop compilation result was: $testCompilationResult"
}
} else {
val metadata = testCompilationResult.assertSuccess().resultingArtifact.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
.let {
if (ignoreExperimentalForeignApi) {
it.replace("@ExperimentalForeignApi ", "")
} else {
it
}
}
val expectedContents = goldenFile.readText()
assertEquals(StringUtilRt.convertLineSeparators(expectedContents), StringUtilRt.convertLineSeparators(metadata)) {
"Test failed. CInterop compilation result was: $testCompilationResult"
}
val metadata = testCompilationResult.assertSuccess().resultingArtifact
.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
val filteredMetadata = if (ignoreExperimentalForeignApi)
metadata.lineSequence().filterNot { it.trim() == "@kotlinx/cinterop/ExperimentalForeignApi" }.joinToString("\n")
else
metadata
assertEqualsToFile(goldenFile, filteredMetadata)
}
}