[KLIB tool] Update Kotlin/Native C-interop tests
^KT-62340
This commit is contained in:
committed by
Space Team
parent
07767f88e2
commit
ab814e1600
+10
-12
@@ -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),
|
||||
|
||||
+10
-12
@@ -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)
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user