Add possibility to use baseDir in AdditionalDiagnosticsSourceFilesProvider

In IJ infrastructure we have specific path prefix for compiler testData
This commit is contained in:
Nikita Bobko
2021-06-03 15:26:47 +02:00
committed by teamcityserver
parent 10f19c8f4a
commit 071ae301b4
2 changed files with 11 additions and 11 deletions
@@ -7,6 +7,7 @@ package org.jetbrains.kotlin.test.runners
import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.platform.jvm.JvmPlatforms
import org.jetbrains.kotlin.test.TestJdkKind import org.jetbrains.kotlin.test.TestJdkKind
import org.jetbrains.kotlin.test.bind
import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder import org.jetbrains.kotlin.test.builders.TestConfigurationBuilder
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.COMPARE_WITH_LIGHT_TREE import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.COMPARE_WITH_LIGHT_TREE
import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP import org.jetbrains.kotlin.test.directives.FirDiagnosticsDirectives.FIR_DUMP
@@ -44,7 +45,8 @@ abstract class AbstractFirDiagnosticsWithLightTreeTest : AbstractFirDiagnosticTe
} }
fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration() { // `baseDir` is used in Kotlin plugin from IJ infra
fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration(baseDir: String = ".") {
globalDefaults { globalDefaults {
frontend = FrontendKinds.FIR frontend = FrontendKinds.FIR
targetPlatform = JvmPlatforms.defaultJvmPlatform targetPlatform = JvmPlatforms.defaultJvmPlatform
@@ -59,7 +61,7 @@ fun TestConfigurationBuilder.baseFirDiagnosticTestConfiguration() {
) )
useAdditionalSourceProviders( useAdditionalSourceProviders(
::AdditionalDiagnosticsSourceFilesProvider, ::AdditionalDiagnosticsSourceFilesProvider.bind(baseDir),
::CoroutineHelpersSourceFilesProvider, ::CoroutineHelpersSourceFilesProvider,
) )
useFrontendFacades(::FirFrontendFacade) useFrontendFacades(::FirFrontendFacade)
@@ -17,14 +17,12 @@ import org.jetbrains.kotlin.test.services.AdditionalSourceProvider
import org.jetbrains.kotlin.test.services.TestServices import org.jetbrains.kotlin.test.services.TestServices
import java.io.File import java.io.File
class AdditionalDiagnosticsSourceFilesProvider(testServices: TestServices) : AdditionalSourceProvider(testServices) { class AdditionalDiagnosticsSourceFilesProvider(testServices: TestServices, baseDir: String = ".") : AdditionalSourceProvider(testServices) {
companion object { private val helpersPath = "$baseDir/compiler/testData/diagnostics/helpers"
private const val HELPERS_PATH = "./compiler/testData/diagnostics/helpers" private val directiveToFileMap: Map<SimpleDirective, String> = mapOf(
private val DIRECTIVE_TO_FILE_MAP: Map<SimpleDirective, String> = mapOf( CHECK_TYPE to "$helpersPath/types/checkType.kt",
CHECK_TYPE to "$HELPERS_PATH/types/checkType.kt", INFERENCE_HELPERS to "$helpersPath/inference/inferenceUtils.kt"
INFERENCE_HELPERS to "$HELPERS_PATH/inference/inferenceUtils.kt" )
)
}
override val directives: List<DirectivesContainer> = override val directives: List<DirectivesContainer> =
listOf(AdditionalFilesDirectives) listOf(AdditionalFilesDirectives)
@@ -32,7 +30,7 @@ class AdditionalDiagnosticsSourceFilesProvider(testServices: TestServices) : Add
@OptIn(ExperimentalStdlibApi::class) @OptIn(ExperimentalStdlibApi::class)
override fun produceAdditionalFiles(globalDirectives: RegisteredDirectives, module: TestModule): List<TestFile> { override fun produceAdditionalFiles(globalDirectives: RegisteredDirectives, module: TestModule): List<TestFile> {
return buildList { return buildList {
for ((directive, path) in DIRECTIVE_TO_FILE_MAP) { for ((directive, path) in directiveToFileMap) {
if (directive in module.directives) { if (directive in module.directives) {
add(File(path).toTestFile()) add(File(path).toTestFile())
} }