[FIR] Configure language version for FP test via env properties

This commit is contained in:
Dmitriy Novozhilov
2021-08-06 13:23:52 +03:00
parent 4f15bd4817
commit afd9b4935a
2 changed files with 28 additions and 19 deletions
@@ -7,12 +7,14 @@ package org.jetbrains.kotlin.fir
import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments import org.jetbrains.kotlin.cli.common.arguments.K2JVMCompilerArguments
private val LANGUAGE_VERSION: String = System.getProperty("fir.bench.language.version", "1.4")
class FullPipelineModularizedTest : AbstractFullPipelineModularizedTest() { class FullPipelineModularizedTest : AbstractFullPipelineModularizedTest() {
override fun configureArguments(args: K2JVMCompilerArguments, moduleData: ModuleData) { override fun configureArguments(args: K2JVMCompilerArguments, moduleData: ModuleData) {
args.useFir = true args.useFir = true
args.useIR = true args.useIR = true
args.apiVersion = "1.4" args.apiVersion = LANGUAGE_VERSION
} }
fun testTotalKotlin() { fun testTotalKotlin() {
+25 -18
View File
@@ -13,17 +13,18 @@ val ideaSandboxDir: File by extra
val ideaSdkPath: String val ideaSdkPath: String
get() = IntellijRootUtils.getIntellijRootDir(rootProject).absolutePath get() = IntellijRootUtils.getIntellijRootDir(rootProject).absolutePath
fun MutableList<String>.addModularizedTestArgs(prefix: String, path: String, benchFilter: String?) { fun MutableList<String>.addModularizedTestArgs(prefix: String, path: String, languageVersion: String, benchFilter: String?) {
add("-${prefix}fir.bench.prefix=$path") add("-${prefix}fir.bench.prefix=$path")
add("-${prefix}fir.bench.jps.dir=$path/test-project-model-dump") add("-${prefix}fir.bench.jps.dir=$path/test-project-model-dump")
add("-${prefix}fir.bench.passes=1") add("-${prefix}fir.bench.passes=1")
add("-${prefix}fir.bench.dump=true") add("-${prefix}fir.bench.dump=true")
add("-${prefix}fir.bench.language.version=$languageVersion")
if (benchFilter != null) { if (benchFilter != null) {
add("-${prefix}fir.bench.filter=$benchFilter") add("-${prefix}fir.bench.filter=$benchFilter")
} }
} }
fun generateVmParametersForJpsConfiguration(path: String, benchFilter: String?): String { fun generateVmParametersForJpsConfiguration(path: String, languageVersion: String, benchFilter: String?): String {
val vmParameters = mutableListOf( val vmParameters = mutableListOf(
"-ea", "-ea",
"-XX:+HeapDumpOnOutOfMemoryError", "-XX:+HeapDumpOnOutOfMemoryError",
@@ -40,13 +41,13 @@ fun generateVmParametersForJpsConfiguration(path: String, benchFilter: String?):
"-Duse.jps=true", "-Duse.jps=true",
"-Djava.awt.headless=true" "-Djava.awt.headless=true"
) )
vmParameters.addModularizedTestArgs(prefix = "D", path = path, benchFilter = benchFilter) vmParameters.addModularizedTestArgs(prefix = "D", path = path, languageVersion = languageVersion, benchFilter = benchFilter)
return vmParameters.joinToString(" ") return vmParameters.joinToString(" ")
} }
fun generateArgsForGradleConfiguration(benchFilter: String?, path: String): String { fun generateArgsForGradleConfiguration(path: String, languageVersion: String, benchFilter: String?): String {
val args = mutableListOf<String>() val args = mutableListOf<String>()
args.addModularizedTestArgs(prefix = "P", path = path, benchFilter = benchFilter) args.addModularizedTestArgs(prefix = "P", path = path, languageVersion = languageVersion, benchFilter = benchFilter)
return args.joinToString(" ") return args.joinToString(" ")
} }
@@ -111,8 +112,8 @@ fun String.convertNameToRunConfigurationFile(prefix: String = ""): File {
return rootDir.resolve(".idea/runConfigurations/${fileName}") return rootDir.resolve(".idea/runConfigurations/${fileName}")
} }
fun generateJpsConfiguration(name: String, testClassName: String, path: String, benchFilter: String?) { fun generateJpsConfiguration(name: String, testClassName: String, path: String, languageVersion: String, benchFilter: String?) {
val vmParameters = generateVmParametersForJpsConfiguration(path, benchFilter) val vmParameters = generateVmParametersForJpsConfiguration(path, languageVersion, benchFilter)
val content = generateXmlContentForJpsConfiguration( val content = generateXmlContentForJpsConfiguration(
name = name, name = name,
testClassName = testClassName, testClassName = testClassName,
@@ -121,8 +122,8 @@ fun generateJpsConfiguration(name: String, testClassName: String, path: String,
name.convertNameToRunConfigurationFile("JPS").writeText(content) name.convertNameToRunConfigurationFile("JPS").writeText(content)
} }
fun generateGradleConfiguration(name: String, testClassName: String, path: String, benchFilter: String?) { fun generateGradleConfiguration(name: String, testClassName: String, path: String, languageVersion: String, benchFilter: String?) {
val vmParameters = generateArgsForGradleConfiguration(benchFilter, path) val vmParameters = generateArgsForGradleConfiguration(path, languageVersion, benchFilter)
val content = generateXmlContentForGradleConfiguration( val content = generateXmlContentForGradleConfiguration(
name = name, name = name,
testClassName = testClassName, testClassName = testClassName,
@@ -131,12 +132,18 @@ fun generateGradleConfiguration(name: String, testClassName: String, path: Strin
name.convertNameToRunConfigurationFile().writeText(content) name.convertNameToRunConfigurationFile().writeText(content)
} }
infix fun <A : Any, B> A?.toNotNull(b: B): Pair<A, B>? = this?.to(b) data class Configuration(val path: String, val name: String, val languageVersion: String) {
companion object {
operator fun invoke(path: String?, name: String, languageVersion: String): Configuration? {
return path?.let { Configuration(it, name, languageVersion) }
}
}
}
val testDataPathList = listOfNotNull( val testDataPathList = listOfNotNull(
kotlinBuildProperties.pathToKotlinModularizedTestData toNotNull "Kotlin", Configuration(kotlinBuildProperties.pathToKotlinModularizedTestData, "Kotlin", "1.4"),
kotlinBuildProperties.pathToIntellijModularizedTestData toNotNull "IntelliJ", Configuration(kotlinBuildProperties.pathToIntellijModularizedTestData, "IntelliJ", "1.4"),
kotlinBuildProperties.pathToYoutrackModularizedTestData toNotNull "YouTrack" Configuration(kotlinBuildProperties.pathToYoutrackModularizedTestData, "YouTrack", "1.5")
) )
val additionalConfigurationsWithFilter = mapOf( val additionalConfigurationsWithFilter = mapOf(
@@ -147,7 +154,7 @@ val additionalConfigurationsWithFilter = mapOf(
) )
) )
for ((path, projectName) in testDataPathList) { for ((path, projectName, languageVersion) in testDataPathList) {
rootProject.afterEvaluate { rootProject.afterEvaluate {
val configurations = mutableListOf<Pair<String, String?>>( val configurations = mutableListOf<Pair<String, String?>>(
"Full $projectName" to null "Full $projectName" to null
@@ -160,11 +167,11 @@ for ((path, projectName) in testDataPathList) {
val jpsBuildEnabled = kotlinBuildProperties.isInJpsBuildIdeaSync val jpsBuildEnabled = kotlinBuildProperties.isInJpsBuildIdeaSync
for ((name, benchFilter) in configurations) { for ((name, benchFilter) in configurations) {
generateGradleConfiguration("[MT] $name", "FirResolveModularizedTotalKotlinTest", path, benchFilter) generateGradleConfiguration("[MT] $name", "FirResolveModularizedTotalKotlinTest", path, languageVersion, benchFilter)
generateGradleConfiguration("[FP] $name", "FullPipelineModularizedTest", path, benchFilter) generateGradleConfiguration("[FP] $name", "FullPipelineModularizedTest", path, languageVersion, benchFilter)
if (jpsBuildEnabled) { if (jpsBuildEnabled) {
generateJpsConfiguration("[MT-JPS] $name", "FirResolveModularizedTotalKotlinTest", path, benchFilter) generateJpsConfiguration("[MT-JPS] $name", "FirResolveModularizedTotalKotlinTest", path, languageVersion, benchFilter)
generateJpsConfiguration("[FP-JPS] $name", "FullPipelineModularizedTest", path, benchFilter) generateJpsConfiguration("[FP-JPS] $name", "FullPipelineModularizedTest", path, languageVersion, benchFilter)
} }
} }
} }