[KLIB tool] Run tests for 'dump-metadata' with & without signatures
This commit is contained in:
committed by
Space Team
parent
aa9b901926
commit
88a297b022
+2
-2
@@ -39,7 +39,7 @@ abstract class AbstractNativeCInteropKT39120Test : AbstractNativeCInteropBaseTes
|
||||
|
||||
val includeFrameworkArgs = TestCompilerArgs("-compiler-option", "-F${testDataDir.canonicalPath}")
|
||||
val klib1: KLIB = cinteropToLibrary(targets, def1File, buildDir, includeFrameworkArgs).assertSuccess().resultingArtifact
|
||||
val metadata1 = klib1.dumpMetadata(kotlinNativeClassLoader.classLoader)
|
||||
val metadata1 = klib1.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
|
||||
|
||||
val expectedFiltered1Output = golden1File.readText()
|
||||
val actualFiltered1Output = filterContentsOutput(metadata1, " pod.Version|POD|class Pod")
|
||||
@@ -47,7 +47,7 @@ abstract class AbstractNativeCInteropKT39120Test : AbstractNativeCInteropBaseTes
|
||||
|
||||
val cinterop2ExtraArgs = TestCompilerArgs("-l", klib1.klibFile.canonicalPath, "-compiler-option", "-fmodules")
|
||||
val klib2: KLIB = cinteropToLibrary(targets, def2File, buildDir, includeFrameworkArgs + cinterop2ExtraArgs).assertSuccess().resultingArtifact
|
||||
val metadata2 = klib2.dumpMetadata(kotlinNativeClassLoader.classLoader)
|
||||
val metadata2 = klib2.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
|
||||
|
||||
val expectedFiltered2Output = golden2File.readText()
|
||||
val actualFiltered2Output = filterContentsOutput(metadata2, " pod.Version|POD|class Pod")
|
||||
|
||||
+1
-1
@@ -103,7 +103,7 @@ abstract class AbstractNativeCInteropTest : AbstractNativeCInteropBaseTest() {
|
||||
"Test failed. CInterop compilation result was: $testCompilationResult"
|
||||
}
|
||||
} else {
|
||||
val metadata = testCompilationResult.assertSuccess().resultingArtifact.dumpMetadata(kotlinNativeClassLoader.classLoader)
|
||||
val metadata = testCompilationResult.assertSuccess().resultingArtifact.dumpMetadata(kotlinNativeClassLoader.classLoader, false, null)
|
||||
.let {
|
||||
if (ignoreExperimentalForeignApi) {
|
||||
it.replace("@ExperimentalForeignApi ", "")
|
||||
|
||||
+20
-7
@@ -17,7 +17,9 @@ import org.jetbrains.kotlin.konan.test.blackbox.support.settings.KotlinNativeCla
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.settings.Timeouts
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.util.getAbsoluteFile
|
||||
import org.jetbrains.kotlin.konan.test.blackbox.support.util.dumpMetadata
|
||||
import org.jetbrains.kotlin.library.KotlinIrSignatureVersion
|
||||
import org.jetbrains.kotlin.test.services.JUnit5Assertions.assertEqualsToFile
|
||||
import org.jetbrains.kotlin.test.utils.withSuffixAndExtension
|
||||
import org.junit.jupiter.api.Tag
|
||||
import java.io.File
|
||||
|
||||
@@ -33,12 +35,23 @@ abstract class AbstractNativeKlibDumpMetadataTest : AbstractNativeSimpleTest() {
|
||||
val testCompilationResult: TestCompilationResult.Success<out KLIB> = compileToLibrary(testCase)
|
||||
|
||||
val kotlinNativeClassLoader = testRunSettings.get<KotlinNativeClassLoader>()
|
||||
val metadata = testCompilationResult.assertSuccess().resultingArtifact.dumpMetadata(kotlinNativeClassLoader.classLoader)
|
||||
val metadataFiltered = filterOutput(metadata)
|
||||
assertEqualsToFile(
|
||||
File("${testPathFull.canonicalPath.substringBeforeLast(".")}.txt"),
|
||||
StringUtilRt.convertLineSeparators(metadataFiltered)
|
||||
)
|
||||
val klib: KLIB = testCompilationResult.assertSuccess().resultingArtifact
|
||||
|
||||
(KotlinIrSignatureVersion.CURRENTLY_SUPPORTED_VERSIONS + null).forEach { signatureVersion: KotlinIrSignatureVersion? ->
|
||||
val metadataDump = klib.dumpMetadata(
|
||||
kotlinNativeClassLoader.classLoader,
|
||||
printSignatures = signatureVersion != null,
|
||||
signatureVersion
|
||||
)
|
||||
val filteredMetadataDump = StringUtilRt.convertLineSeparators(filterMetadataDump(metadataDump))
|
||||
|
||||
val goldenDataFile = testPathFull.withSuffixAndExtension(
|
||||
suffix = signatureVersion?.let { ".v${it.number}" } ?: "",
|
||||
extension = "txt"
|
||||
)
|
||||
|
||||
assertEqualsToFile(goldenDataFile, filteredMetadataDump)
|
||||
}
|
||||
}
|
||||
|
||||
private fun generateTestCaseWithSingleSource(source: File, extraArgs: List<String>): TestCase {
|
||||
@@ -60,7 +73,7 @@ abstract class AbstractNativeKlibDumpMetadataTest : AbstractNativeSimpleTest() {
|
||||
}
|
||||
|
||||
// Remove intermediate "}\n\npackage ABC {\n" parts.
|
||||
private fun filterOutput(contents: String): String {
|
||||
private fun filterMetadataDump(contents: String): String {
|
||||
var packageLineMet = false
|
||||
return contents.lineSequence()
|
||||
.dropWhile { line -> line.isBlank() }
|
||||
|
||||
+7
-3
@@ -20,12 +20,16 @@ private fun invokeKlibTool(kotlinNativeClassLoader: ClassLoader, klibFile: File,
|
||||
|
||||
}
|
||||
|
||||
internal fun TestCompilationArtifact.KLIB.dumpMetadata(kotlinNativeClassLoader: ClassLoader): String = invokeKlibTool(
|
||||
internal fun TestCompilationArtifact.KLIB.dumpMetadata(
|
||||
kotlinNativeClassLoader: ClassLoader,
|
||||
printSignatures: Boolean,
|
||||
signatureVersion: KotlinIrSignatureVersion?
|
||||
): String = invokeKlibTool(
|
||||
kotlinNativeClassLoader = kotlinNativeClassLoader,
|
||||
klibFile = klibFile,
|
||||
functionName = "dumpMetadata",
|
||||
/* printSignatures= */ false,
|
||||
/* signatureVersion= */ null
|
||||
/* printSignatures= */ printSignatures,
|
||||
/* signatureVersion= */ signatureVersion?.let { getSignatureVersionForIsolatedClassLoader(kotlinNativeClassLoader, signatureVersion) }
|
||||
)
|
||||
|
||||
internal fun TestCompilationArtifact.KLIB.dumpIr(
|
||||
|
||||
Reference in New Issue
Block a user