[JS TESTS] Extract common code responsible for getting dependencies
This commit is contained in:
+2
-6
@@ -316,12 +316,8 @@ class ClassicFrontendFacade(
|
|||||||
): AnalysisResult {
|
): AnalysisResult {
|
||||||
val runtimeKlibsNames = JsEnvironmentConfigurator.getStdlibPathsForModule(module)
|
val runtimeKlibsNames = JsEnvironmentConfigurator.getStdlibPathsForModule(module)
|
||||||
val runtimeKlibs = loadKlib(runtimeKlibsNames, configuration)
|
val runtimeKlibs = loadKlib(runtimeKlibsNames, configuration)
|
||||||
val transitiveLibraries = configuration[JSConfigurationKeys.TRANSITIVE_LIBRARIES]!!.map {
|
val transitiveLibraries = JsEnvironmentConfigurator.getDependencies(module, testServices, DependencyRelation.RegularDependency)
|
||||||
testServices.jsLibraryProvider.getDescriptorByPath(File(it).absolutePath.replace("_v5.meta.js", "").replace("outputDir", "outputKlibDir"))
|
val friendLibraries = JsEnvironmentConfigurator.getDependencies(module, testServices, DependencyRelation.FriendDependency)
|
||||||
}
|
|
||||||
val friendLibraries = configuration[JSConfigurationKeys.FRIEND_PATHS]!!.map {
|
|
||||||
testServices.jsLibraryProvider.getDescriptorByPath(File(it).absolutePath.replace("_v5.meta.js", "").replace("outputDir", "outputKlibDir"))
|
|
||||||
}
|
|
||||||
val allDependencies = runtimeKlibs + dependentDescriptors + transitiveLibraries
|
val allDependencies = runtimeKlibs + dependentDescriptors + transitiveLibraries
|
||||||
|
|
||||||
val analyzer = AnalyzerWithCompilerReport(configuration)
|
val analyzer = AnalyzerWithCompilerReport(configuration)
|
||||||
|
|||||||
+25
-7
@@ -10,7 +10,6 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
|
|||||||
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
|
||||||
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
import org.jetbrains.kotlin.config.CommonConfigurationKeys
|
||||||
import org.jetbrains.kotlin.config.CompilerConfiguration
|
import org.jetbrains.kotlin.config.CompilerConfiguration
|
||||||
import org.jetbrains.kotlin.descriptors.ModuleDescriptor
|
|
||||||
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
import org.jetbrains.kotlin.descriptors.impl.ModuleDescriptorImpl
|
||||||
import org.jetbrains.kotlin.js.config.*
|
import org.jetbrains.kotlin.js.config.*
|
||||||
import org.jetbrains.kotlin.js.facade.MainCallParameters
|
import org.jetbrains.kotlin.js.facade.MainCallParameters
|
||||||
@@ -22,15 +21,17 @@ import org.jetbrains.kotlin.serialization.js.ModuleKind
|
|||||||
import org.jetbrains.kotlin.test.TargetBackend
|
import org.jetbrains.kotlin.test.TargetBackend
|
||||||
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
import org.jetbrains.kotlin.test.directives.ConfigurationDirectives
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
|
||||||
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.ERROR_POLICY
|
||||||
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.EXPECT_ACTUAL_LINKER
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.MODULE_KIND
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.MODULE_KIND
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.NO_INLINE
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.NO_INLINE
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.ERROR_POLICY
|
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.SOURCE_MAP_EMBED_SOURCES
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.SOURCE_MAP_EMBED_SOURCES
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.EXPECT_ACTUAL_LINKER
|
|
||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.TYPED_ARRAYS
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives.TYPED_ARRAYS
|
||||||
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
import org.jetbrains.kotlin.test.directives.model.DirectivesContainer
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.moduleDescriptorProvider
|
import org.jetbrains.kotlin.test.frontend.classic.moduleDescriptorProvider
|
||||||
|
import org.jetbrains.kotlin.test.model.ArtifactKinds
|
||||||
import org.jetbrains.kotlin.test.model.DependencyDescription
|
import org.jetbrains.kotlin.test.model.DependencyDescription
|
||||||
|
import org.jetbrains.kotlin.test.model.DependencyRelation
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
import org.jetbrains.kotlin.test.services.*
|
import org.jetbrains.kotlin.test.services.*
|
||||||
import org.jetbrains.kotlin.test.util.joinToArrayString
|
import org.jetbrains.kotlin.test.util.joinToArrayString
|
||||||
@@ -72,19 +73,19 @@ class JsEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigu
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun getJsModuleArtifactPath(testServices: TestServices, moduleName: String): String {
|
fun getJsModuleArtifactPath(testServices: TestServices, moduleName: String): String {
|
||||||
return getJsArtifactsOutputDir(testServices).absolutePath + "/" + getJsArtifactSimpleName(testServices, moduleName) + "_v5"
|
return getJsArtifactsOutputDir(testServices).absolutePath + File.separator + getJsArtifactSimpleName(testServices, moduleName) + "_v5"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getJsKlibArtifactPath(testServices: TestServices, moduleName: String): String {
|
fun getJsKlibArtifactPath(testServices: TestServices, moduleName: String): String {
|
||||||
return getJsKlibOutputDir(testServices).absolutePath + "/" + getJsArtifactSimpleName(testServices, moduleName)
|
return getJsKlibOutputDir(testServices).absolutePath + File.separator + getJsArtifactSimpleName(testServices, moduleName)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getDceJsArtifactPath(testServices: TestServices, moduleName: String): String {
|
fun getDceJsArtifactPath(testServices: TestServices, moduleName: String): String {
|
||||||
return getDceJsArtifactsOutputDir(testServices).absolutePath + "/" + getJsArtifactSimpleName(testServices, moduleName) + "_v5"
|
return getDceJsArtifactsOutputDir(testServices).absolutePath + File.separator + getJsArtifactSimpleName(testServices, moduleName) + "_v5"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getPirJsArtifactPath(testServices: TestServices, moduleName: String): String {
|
fun getPirJsArtifactPath(testServices: TestServices, moduleName: String): String {
|
||||||
return getPirJsArtifactsOutputDir(testServices).absolutePath + "/" + getJsArtifactSimpleName(testServices, moduleName) + "_v5"
|
return getPirJsArtifactsOutputDir(testServices).absolutePath + File.separator + getJsArtifactSimpleName(testServices, moduleName) + "_v5"
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getJsArtifactsOutputDir(testServices: TestServices): File {
|
fun getJsArtifactsOutputDir(testServices: TestServices): File {
|
||||||
@@ -150,6 +151,23 @@ class JsEnvironmentConfigurator(testServices: TestServices) : EnvironmentConfigu
|
|||||||
return names.map { System.getProperty("kotlin.js.$it.path") }
|
return names.map { System.getProperty("kotlin.js.$it.path") }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getDependencies(module: TestModule, testServices: TestServices, kind: DependencyRelation): List<ModuleDescriptorImpl> {
|
||||||
|
val visited = mutableSetOf<TestModule>()
|
||||||
|
fun getRecursive(module: TestModule, kind: DependencyRelation) {
|
||||||
|
val dependencies = if (kind == DependencyRelation.FriendDependency) module.friendDependencies else module.regularDependencies
|
||||||
|
dependencies.map { testServices.dependencyProvider.getTestModule(it.moduleName) }.forEach {
|
||||||
|
if (it !in visited) {
|
||||||
|
visited += it
|
||||||
|
getRecursive(it, kind)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
getRecursive(module, kind)
|
||||||
|
return visited
|
||||||
|
.map { testServices.dependencyProvider.getArtifact(it, ArtifactKinds.KLib).outputFile }
|
||||||
|
.map { testServices.jsLibraryProvider.getDescriptorByPath(it.absolutePath) }
|
||||||
|
}
|
||||||
|
|
||||||
fun getMainCallParametersForModule(module: TestModule): MainCallParameters {
|
fun getMainCallParametersForModule(module: TestModule): MainCallParameters {
|
||||||
return when (JsEnvironmentConfigurationDirectives.CALL_MAIN) {
|
return when (JsEnvironmentConfigurationDirectives.CALL_MAIN) {
|
||||||
in module.directives -> MainCallParameters.mainWithArguments(listOf())
|
in module.directives -> MainCallParameters.mainWithArguments(listOf())
|
||||||
|
|||||||
@@ -34,10 +34,7 @@ import org.jetbrains.kotlin.serialization.js.ModuleKind
|
|||||||
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
|
import org.jetbrains.kotlin.test.directives.JsEnvironmentConfigurationDirectives
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
|
import org.jetbrains.kotlin.test.frontend.classic.ClassicFrontendOutputArtifact
|
||||||
import org.jetbrains.kotlin.test.frontend.classic.moduleDescriptorProvider
|
import org.jetbrains.kotlin.test.frontend.classic.moduleDescriptorProvider
|
||||||
import org.jetbrains.kotlin.test.model.AbstractTestFacade
|
import org.jetbrains.kotlin.test.model.*
|
||||||
import org.jetbrains.kotlin.test.model.ArtifactKinds
|
|
||||||
import org.jetbrains.kotlin.test.model.BinaryArtifacts
|
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
|
||||||
import org.jetbrains.kotlin.test.services.*
|
import org.jetbrains.kotlin.test.services.*
|
||||||
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
|
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
|
||||||
import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
|
import org.jetbrains.kotlin.utils.fileUtils.withReplacedExtensionOrNull
|
||||||
@@ -181,14 +178,8 @@ class JsIrBackendFacade(
|
|||||||
|
|
||||||
val moduleDescriptor = testServices.moduleDescriptorProvider.getModuleDescriptor(module)
|
val moduleDescriptor = testServices.moduleDescriptorProvider.getModuleDescriptor(module)
|
||||||
val mainModuleLib = testServices.jsLibraryProvider.getCompiledLibraryByDescriptor(moduleDescriptor)
|
val mainModuleLib = testServices.jsLibraryProvider.getCompiledLibraryByDescriptor(moduleDescriptor)
|
||||||
val friendLibraries = configuration[JSConfigurationKeys.FRIEND_PATHS]!!.map {
|
val friendLibraries = JsEnvironmentConfigurator.getDependencies(module, testServices, DependencyRelation.FriendDependency)
|
||||||
val descriptor = testServices.jsLibraryProvider.getDescriptorByPath(
|
.map { testServices.jsLibraryProvider.getCompiledLibraryByDescriptor(it) }
|
||||||
File(it).absolutePath
|
|
||||||
.replace("_v5.meta.js", "")
|
|
||||||
.replace("outputDir", "outputKlibDir")
|
|
||||||
)
|
|
||||||
testServices.jsLibraryProvider.getCompiledLibraryByDescriptor(descriptor)
|
|
||||||
}
|
|
||||||
val friendModules = mapOf(mainModuleLib.uniqueName to friendLibraries.map { it.uniqueName })
|
val friendModules = mapOf(mainModuleLib.uniqueName to friendLibraries.map { it.uniqueName })
|
||||||
|
|
||||||
return getIrModuleInfoForKlib(
|
return getIrModuleInfoForKlib(
|
||||||
|
|||||||
Reference in New Issue
Block a user