[Test] Unify work with KLIB artifact paths and dependencies

Unify functions from `JsEnvironmentConfigurator` and
`WasmEnvironmentConfigurator` that do the same logic. Make this logic
also be available for `NativeEnvironmentConfigurator`:
- get*ArtifactSimpleName()
- get*KlibArtifactPath()
- get*KlibOutputDir()
- getAllRecursiveLibrariesFor()
- getAllRecursiveDependenciesFor()
- getAllDependenciesMappingFor()
- getKlibDependencies()

This would allow to have the same logic in one place, and also
reuse it in `IrBackendFacade`s to be implemented for Native.

^KT-65117
This commit is contained in:
Dmitriy Dolovov
2024-01-19 12:59:52 +01:00
committed by Space Team
parent 7e9e064748
commit f204293e4d
10 changed files with 115 additions and 153 deletions
@@ -29,7 +29,6 @@ import org.jetbrains.kotlin.test.model.TestModule
import org.jetbrains.kotlin.test.services.*
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
import org.jetbrains.kotlin.utils.addToStdlib.safeAs
import java.io.File
class FirJsKlibBackendFacade(
testServices: TestServices,
@@ -51,7 +50,7 @@ class FirJsKlibBackendFacade(
}
val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
val outputFile = JsEnvironmentConfigurator.getJsKlibArtifactPath(testServices, module.name)
val outputFile = JsEnvironmentConfigurator.getKlibArtifactFile(testServices, module.name)
// TODO: consider avoiding repeated libraries resolution
val libraries = resolveLibraries(configuration, getAllJsDependenciesPaths(module, testServices))
@@ -62,7 +61,7 @@ class FirJsKlibBackendFacade(
configuration,
inputArtifact.diagnosticReporter,
inputArtifact.metadataSerializer,
klibPath = outputFile,
klibPath = outputFile.path,
libraries.map { it.library },
inputArtifact.irModuleFragment,
cleanFiles = inputArtifact.icData,
@@ -76,7 +75,7 @@ class FirJsKlibBackendFacade(
// TODO: consider avoiding repeated libraries resolution
val lib = CommonKLibResolver.resolve(
getAllJsDependenciesPaths(module, testServices) + listOf(outputFile),
getAllJsDependenciesPaths(module, testServices) + listOf(outputFile.path),
configuration.getLogger(treatWarningsAsErrors = true)
).getFullResolvedList().last().library
@@ -97,8 +96,8 @@ class FirJsKlibBackendFacade(
if (JsEnvironmentConfigurator.incrementalEnabled(testServices)) {
testServices.jsIrIncrementalDataProvider.recordIncrementalData(module, lib)
}
testServices.libraryProvider.setDescriptorAndLibraryByName(outputFile, moduleDescriptor, lib)
testServices.libraryProvider.setDescriptorAndLibraryByName(outputFile.path, moduleDescriptor, lib)
return BinaryArtifacts.KLib(File(outputFile), inputArtifact.diagnosticReporter)
return BinaryArtifacts.KLib(outputFile, inputArtifact.diagnosticReporter)
}
}
@@ -42,7 +42,7 @@ import org.jetbrains.kotlin.test.model.*
import org.jetbrains.kotlin.test.services.TestServices
import org.jetbrains.kotlin.test.services.compilerConfigurationProvider
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator.Companion.getJsArtifactSimpleName
import org.jetbrains.kotlin.test.services.configuration.JsEnvironmentConfigurator.Companion.getJsModuleArtifactName
import org.jetbrains.kotlin.test.services.configuration.getDependencies
import org.jetbrains.kotlin.test.services.libraryProvider
import org.jetbrains.kotlin.utils.addToStdlib.ifTrue
@@ -127,7 +127,7 @@ class JsIrBackendFacade(
val phaseConfig = if (debugMode >= DebugMode.SUPER_DEBUG) {
val dumpOutputDir = File(
JsEnvironmentConfigurator.getJsArtifactsOutputDir(testServices),
JsEnvironmentConfigurator.getJsArtifactSimpleName(testServices, module.name) + "-irdump"
JsEnvironmentConfigurator.getKlibArtifactSimpleName(testServices, module.name) + "-irdump"
)
PhaseConfig(
jsPhases,
@@ -181,7 +181,7 @@ class JsIrBackendFacade(
loweredIr.context,
moduleToName = runIf(isEsModules) {
loweredIr.allModules.associateWith {
"./${getJsArtifactSimpleName(testServices, it.safeName)}_v5".minifyIfNeed()
"./${getJsModuleArtifactName(testServices, it.safeName)}".minifyIfNeed()
}
} ?: emptyMap(),
shouldReferMainFunction,
@@ -23,7 +23,6 @@ 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.configuration.JsEnvironmentConfigurator
import java.io.File
class JsKlibBackendFacade(
testServices: TestServices,
@@ -44,7 +43,7 @@ class JsKlibBackendFacade(
}
val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
val outputFile = JsEnvironmentConfigurator.getJsKlibArtifactPath(testServices, module.name)
val outputFile = JsEnvironmentConfigurator.getKlibArtifactFile(testServices, module.name)
if (firstTimeCompilation) {
serializeModuleIntoKlib(
@@ -52,7 +51,7 @@ class JsKlibBackendFacade(
configuration,
inputArtifact.diagnosticReporter,
inputArtifact.metadataSerializer,
klibPath = outputFile,
klibPath = outputFile.path,
JsEnvironmentConfigurator.getAllRecursiveLibrariesFor(module, testServices).keys.toList(),
inputArtifact.irModuleFragment,
cleanFiles = inputArtifact.icData,
@@ -66,7 +65,7 @@ class JsKlibBackendFacade(
val dependencies = JsEnvironmentConfigurator.getAllRecursiveDependenciesFor(module, testServices).toList()
val lib = CommonKLibResolver.resolve(
dependencies.map { testServices.libraryProvider.getPathByDescriptor(it) } + listOf(outputFile),
dependencies.map { testServices.libraryProvider.getPathByDescriptor(it) } + listOf(outputFile.path),
configuration.getLogger(treatWarningsAsErrors = true)
).getFullResolvedList().last().library
@@ -84,8 +83,8 @@ class JsKlibBackendFacade(
if (JsEnvironmentConfigurator.incrementalEnabled(testServices)) {
testServices.jsIrIncrementalDataProvider.recordIncrementalData(module, lib)
}
testServices.libraryProvider.setDescriptorAndLibraryByName(outputFile, moduleDescriptor, lib)
testServices.libraryProvider.setDescriptorAndLibraryByName(outputFile.path, moduleDescriptor, lib)
return BinaryArtifacts.KLib(File(outputFile), inputArtifact.diagnosticReporter)
return BinaryArtifacts.KLib(outputFile, inputArtifact.diagnosticReporter)
}
}
@@ -57,8 +57,8 @@ class JsIrIncrementalDataProvider(private val testServices: TestServices) : Test
fun getCaches() = icCache.map { it.value.fetchArtifacts() }
fun getCacheForModule(module: TestModule): Map<String, ByteArray> {
val path = JsEnvironmentConfigurator.getJsKlibArtifactPath(testServices, module.name)
val canonicalPath = File(path).canonicalPath
val path = JsEnvironmentConfigurator.getKlibArtifactFile(testServices, module.name)
val canonicalPath = path.canonicalPath
val moduleCache = icCache[canonicalPath] ?: error("No cache found for $path")
val oldBinaryAsts = mutableMapOf<String, ByteArray>()
@@ -94,7 +94,7 @@ class JsIrIncrementalDataProvider(private val testServices: TestServices) : Test
recordIncrementalDataForRuntimeKlib(module)
val dirtyFiles = module.files.map { "/${it.relativePath}" }
val path = JsEnvironmentConfigurator.getJsKlibArtifactPath(testServices, module.name)
val path = JsEnvironmentConfigurator.getKlibArtifactFile(testServices, module.name).path
val configuration = testServices.compilerConfigurationProvider.getCompilerConfiguration(module)
val mainArguments = JsEnvironmentConfigurator.getMainCallParametersForModule(module)
@@ -33,7 +33,7 @@ import java.io.File
const val MODULE_EMULATION_FILE = "${JsEnvironmentConfigurator.TEST_DATA_DIR_PATH}/moduleEmulation.js"
fun TestModule.getNameFor(filePath: String, testServices: TestServices): String {
return JsEnvironmentConfigurator.getJsArtifactSimpleName(testServices, name) + "-js-" + filePath
return JsEnvironmentConfigurator.getKlibArtifactSimpleName(testServices, name) + "-js-" + filePath
}
fun TestModule.getNameFor(file: TestFile, testServices: TestServices): String {