[Tests] Port KotlinKlibSerializerTest to K2

^KT-64440 Fixed
This commit is contained in:
Vladimir Sukharev
2024-02-29 09:59:06 +01:00
committed by Space Team
parent 8fe5cf2641
commit 9b4f503fbe
2 changed files with 67 additions and 29 deletions
@@ -16,53 +16,39 @@
package org.jetbrains.kotlin.serialization.klib
import com.intellij.openapi.util.Disposer
import com.intellij.openapi.util.io.FileUtil
import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
import org.jetbrains.kotlin.cli.common.config.addKotlinSourceRoots
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
import org.jetbrains.kotlin.cli.jvm.compiler.EnvironmentConfigFiles
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
import org.jetbrains.kotlin.config.CommonConfigurationKeys
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.languageVersionSettings
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
import org.jetbrains.kotlin.incremental.components.LookupTracker
import org.jetbrains.kotlin.js.analyze.TopDownAnalyzerFacadeForJS
import org.jetbrains.kotlin.js.config.JSConfigurationKeys
import org.jetbrains.kotlin.js.config.JsConfig
import org.jetbrains.kotlin.js.resolve.JsPlatformAnalyzerServices
import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler
import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
import org.jetbrains.kotlin.jvm.compiler.LoadDescriptorUtil.TEST_PACKAGE_FQNAME
import org.jetbrains.kotlin.resolve.CompilerEnvironment
import org.jetbrains.kotlin.serialization.NonStableParameterNamesSerializationTest
import org.jetbrains.kotlin.serialization.deserialization.DeserializationConfiguration
import org.jetbrains.kotlin.serialization.js.KotlinJavascriptSerializationUtil.readModuleAsProto
import org.jetbrains.kotlin.storage.LockBasedStorageManager
import org.jetbrains.kotlin.test.CompilerTestUtil
import org.jetbrains.kotlin.test.KlibTestUtil
import org.jetbrains.kotlin.test.KotlinTestUtils
import org.jetbrains.kotlin.test.TestCaseWithTmpdir
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparator
import org.jetbrains.kotlin.test.util.RecursiveDescriptorComparatorAdaptor
import org.jetbrains.kotlin.utils.JsMetadataVersion
import org.jetbrains.kotlin.utils.KotlinJavascriptMetadataUtils
import org.jetbrains.kotlin.utils.sure
import java.io.File
class KotlinKlibSerializerTest : TestCaseWithTmpdir() {
private val BASE_DIR = "compiler/testData/serialization"
private fun doTest(fileName: String) {
private fun doTest(fileName: String, goldenDataExtension: String = ".txt") {
val source = "$BASE_DIR/$fileName"
val klibName = File(source).nameWithoutExtension
val klibFile = File(tmpdir, "$klibName.klib")
KlibTestUtil.compileCommonSourcesToKlib(listOf(File(source)), klibName, klibFile)
CompilerTestUtil.executeCompilerAssertSuccessful(K2MetadataCompiler(), listOf(
File(source).absolutePath,
"-d", klibFile.absolutePath,
"-module-name", klibName,
// support for the legacy version of kotlin-stdlib-common (JAR with .kotlin_metadata)
"-classpath", ForTestCompileRuntime.stdlibCommonForTests().absolutePath
)
)
val module = KlibTestUtil.deserializeKlibToCommonModule(klibFile)
RecursiveDescriptorComparatorAdaptor.validateAndCompareDescriptorWithFile(
module.getPackage(TEST_PACKAGE_FQNAME),
RecursiveDescriptorComparator.DONT_INCLUDE_METHODS_OF_OBJECT,
File(source.replace(".kt", ".txt"))
File(source.replace(".kt", goldenDataExtension))
)
}
@@ -75,7 +61,9 @@ class KotlinKlibSerializerTest : TestCaseWithTmpdir() {
}
fun testCompileTimeConstants() {
doTest("builtinsSerializer/compileTimeConstants.kt")
// After implementation of https://youtrack.jetbrains.com/issue/KT-65805/Migrate-builtins-serializer-to-K2,
// compileTimeConstants.txt will be same as compileTimeConstants.fir.txt. So, it would be worthwhile to unify them.
doTest("builtinsSerializer/compileTimeConstants.kt", ".fir.txt")
}
fun testAnnotationTargets() {