[K/N] Adjust moved special backend checks tests

^KT-61564
This commit is contained in:
Vladimir Sukharev
2023-11-10 13:07:12 +01:00
committed by Space Team
parent 8f12bf6cc8
commit 08bc0a6bd0
74 changed files with 2155 additions and 19 deletions
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.frontend.fir
import org.jetbrains.kotlin.backend.common.CommonKLibResolver
import org.jetbrains.kotlin.config.CompilerConfiguration
import org.jetbrains.kotlin.config.LanguageVersionSettings
import org.jetbrains.kotlin.fir.FirSession
@@ -12,6 +13,7 @@ import org.jetbrains.kotlin.fir.deserialization.ModuleDataProvider
import org.jetbrains.kotlin.fir.extensions.FirExtensionRegistrar
import org.jetbrains.kotlin.fir.java.FirProjectSessionProvider
import org.jetbrains.kotlin.fir.session.FirNativeSessionFactory
import org.jetbrains.kotlin.ir.backend.js.resolverLogger
import org.jetbrains.kotlin.test.services.configuration.NativeEnvironmentConfigurator
import org.jetbrains.kotlin.name.Name
import org.jetbrains.kotlin.test.model.TestModule
@@ -29,7 +31,11 @@ object TestFirNativeSessionFactory {
languageVersionSettings: LanguageVersionSettings,
registerExtraComponents: (FirSession) -> Unit = {},
): FirSession {
val resolvedLibraries = resolveLibraries(configuration, getAllNativeDependenciesPaths(module, testServices))
val resolvedLibraries = CommonKLibResolver.resolve(
getAllNativeDependenciesPaths(module, testServices),
configuration.resolverLogger,
knownIrProviders = listOf("kotlin.native.cinterop"), // FIXME use KonanLibraryProperResolver instead, as in production.
).getFullResolvedList()
return FirNativeSessionFactory.createLibrarySession(
mainModuleName,
@@ -5,6 +5,7 @@
package org.jetbrains.kotlin.test.services.configuration
import org.jetbrains.kotlin.konan.target.TargetSupportException
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.EnvironmentConfigurator
@@ -25,6 +26,13 @@ class NativeEnvironmentConfigurator(testServices: TestServices) : EnvironmentCon
result += File("$nativeHome/klib/common/stdlib").absolutePath
}
if (ConfigurationDirectives.WITH_PLATFORM_LIBS in module.directives) {
// Diagnostic tests are agnostic of native target, so host is enforced to be a target.
File("$nativeHome/klib/platform/${hostOsArch()}").listFiles()?.forEach {
result += it.absolutePath
}
}
testServices.runtimeClasspathProviders
.flatMap { it.runtimeClassPaths(module) }
.mapTo(result) { it.absolutePath }
@@ -32,4 +40,27 @@ class NativeEnvironmentConfigurator(testServices: TestServices) : EnvironmentCon
return result
}
}
}
}
private fun hostOsArch() = "${hostOs()}_${hostArch()}"
// `:native` module cannot be imported here, so functions are just copy/pasted here.
// `hostOs()` and `hostArch()` are similar to functions in org.jetbrains.kotlin.konan.target.HostManager
private fun hostOs(): String {
val javaOsName = System.getProperty("os.name")
return when {
javaOsName == "Mac OS X" -> "macos"
javaOsName == "Linux" -> "linux"
javaOsName.startsWith("Windows") -> "mingw"
else -> throw TargetSupportException("Unknown operating system: $javaOsName")
}
}
fun hostArch(): String =
when (val arch = System.getProperty("os.arch")) {
"x86_64" -> "x64"
"amd64" -> "x64"
"arm64" -> "arm64"
"aarch64" -> "arm64"
else -> throw TargetSupportException("Unknown hardware platform: $arch")
}