diff --git a/benchmarks/build.gradle.kts b/benchmarks/build.gradle.kts index 632987ea49f..5ba2c8813ed 100644 --- a/benchmarks/build.gradle.kts +++ b/benchmarks/build.gradle.kts @@ -74,14 +74,17 @@ tasks.matching { it is Zip && it.name == "mainBenchmarkJar" }.configureEach { val benchmarkTasks = listOf("mainBenchmark", "mainFirBenchmark", "mainNiBenchmark") tasks.matching { it is JavaExec && it.name in benchmarkTasks }.configureEach { this as JavaExec - systemProperty("idea.home.path", intellijRootDir().canonicalPath) + dependsOn(":createIdeaHomeForTests") + systemProperty("idea.home.path", ideaHomePathForTests().canonicalPath) } tasks.register("runBenchmark") { + dependsOn(":createIdeaHomeForTests") + // jmhArgs example: -PjmhArgs='CommonCalls -p size=500 -p isIR=true -p useNI=true -f 1' val jmhArgs = if (project.hasProperty("jmhArgs")) project.property("jmhArgs").toString() else "" val resultFilePath = "$buildDir/benchmarks/jmh-result.json" - val ideaHome = intellijRootDir().canonicalPath + val ideaHome = ideaHomePathForTests().canonicalPath val benchmarkJarPath = "$buildDir/benchmarks/main/jars/benchmarks.jar" args = mutableListOf("-Didea.home.path=$ideaHome", benchmarkJarPath, "-rf", "json", "-rff", resultFilePath) + jmhArgs.split("\\s".toRegex()) diff --git a/build.gradle.kts b/build.gradle.kts index 1c2282a2314..af227f68080 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -627,6 +627,13 @@ val syncMutedTests = tasks.register("syncMutedTests") { dependsOn(":compiler:tests-mutes:tc-integration:run") } +tasks.register("createIdeaHomeForTests") { + outputs.file(ideaBuildNumberFileForTests()) + doFirst { + writeIdeaBuildNumberForTests() + } +} + tasks { named("clean") { delete += setOf("$buildDir/repo", distDir) diff --git a/buildSrc/src/main/kotlin/localDependencies.kt b/buildSrc/src/main/kotlin/localDependencies.kt index bbfae4cb371..bcface74baf 100644 --- a/buildSrc/src/main/kotlin/localDependencies.kt +++ b/buildSrc/src/main/kotlin/localDependencies.kt @@ -113,4 +113,11 @@ object IntellijRootUtils { } } -fun Project.intellijRootDir() = IntellijRootUtils.getIntellijRootDir(project) \ No newline at end of file +fun Project.ideaHomePathForTests() = rootProject.buildDir.resolve("ideaHomeForTests") + +fun Project.ideaBuildNumberFileForTests() = File(ideaHomePathForTests(), "build.txt") + +fun Project.writeIdeaBuildNumberForTests() { + ideaHomePathForTests().mkdirs() + ideaBuildNumberFileForTests().writeText("IC-${rootProject.extra["versions.intellijSdk"]}") +} \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/tasks.kt b/buildSrc/src/main/kotlin/tasks.kt index 665be7240a1..3bfb8d1d8a1 100644 --- a/buildSrc/src/main/kotlin/tasks.kt +++ b/buildSrc/src/main/kotlin/tasks.kt @@ -110,6 +110,8 @@ fun Project.projectTest( evaluationDependsOn(":test-instrumenter") } return getOrCreateTask(taskName) { + dependsOn(":createIdeaHomeForTests") + doFirst { if (jUnitMode == JUnitMode.JUnit5) return@doFirst @@ -177,7 +179,7 @@ fun Project.projectTest( maxHeapSize = "1600m" systemProperty("idea.is.unit.test", "true") - systemProperty("idea.home.path", project.intellijRootDir().canonicalPath) + systemProperty("idea.home.path", project.ideaHomePathForTests().canonicalPath) systemProperty("java.awt.headless", "true") environment("NO_FS_ROOTS_ACCESS_CHECK", "true") environment("PROJECT_CLASSES_DIRS", project.testSourceSet.output.classesDirs.asPath) diff --git a/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts b/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts index 15b5d4f7591..622265ee9b0 100644 --- a/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts +++ b/compiler/fir/raw-fir/light-tree2fir/build.gradle.kts @@ -108,7 +108,9 @@ val jmhCompile by tasks.registering(JavaCompile::class) { } val jmhExec by tasks.registering(JavaExec::class) { + dependsOn(":createIdeaHomeForTests") dependsOn(tasks["compileTestJava"]) + doFirst { classpath = files( tasks["compactClasspath"].outputs.files.singleFile.absolutePath, @@ -120,7 +122,7 @@ val jmhExec by tasks.registering(JavaExec::class) { main = "org.openjdk.jmh.Main" workingDir = rootDir - systemProperty("idea.home.path", project.intellijRootDir().absolutePath) + systemProperty("idea.home.path", project.ideaHomePathForTests().absolutePath) systemProperty("idea.max.intellisense.filesize", 5000 * 1024) configurations.plusAssign(project.configurations["api"]) } diff --git a/compiler/tests-java8/build.gradle.kts b/compiler/tests-java8/build.gradle.kts index 7bda00d914c..8a9192f41c2 100644 --- a/compiler/tests-java8/build.gradle.kts +++ b/compiler/tests-java8/build.gradle.kts @@ -25,7 +25,6 @@ projectTest(parallel = true) { dependsOn(":dist") workingDir = rootDir systemProperty("kotlin.test.script.classpath", testSourceSet.output.classesDirs.joinToString(File.pathSeparator)) - systemProperty("idea.home.path", intellijRootDir().canonicalPath) } val generateTests by generator("org.jetbrains.kotlin.generators.tests.GenerateJava8TestsKt") diff --git a/gradle/jps.gradle.kts b/gradle/jps.gradle.kts index 951141df67d..ca43b90c66f 100644 --- a/gradle/jps.gradle.kts +++ b/gradle/jps.gradle.kts @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ideaExt.* val ideaPluginDir: File by extra val ideaSandboxDir: File by extra val ideaSdkPath: String - get() = IntellijRootUtils.getIntellijRootDir(rootProject).absolutePath + get() = rootProject.ideaHomePathForTests().absolutePath fun JUnit.configureForKotlin(xmx: String = "1600m") { vmParameters = listOf( @@ -135,6 +135,8 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { rootProject.afterEvaluate { + writeIdeaBuildNumberForTests() + setupFirRunConfiguration() setupGenerateAllTestsRunConfiguration() diff --git a/gradle/modularizedTestConfigurations.gradle.kts b/gradle/modularizedTestConfigurations.gradle.kts index 120eceb6e1c..be25dca7403 100644 --- a/gradle/modularizedTestConfigurations.gradle.kts +++ b/gradle/modularizedTestConfigurations.gradle.kts @@ -11,7 +11,7 @@ import org.jetbrains.kotlin.ideaExt.* val ideaPluginDir: File by extra val ideaSandboxDir: File by extra val ideaSdkPath: String - get() = IntellijRootUtils.getIntellijRootDir(rootProject).absolutePath + get() = rootProject.ideaHomePathForTests().absolutePath fun MutableList.addModularizedTestArgs(prefix: String, path: String, additionalParameters: Map, benchFilter: String?) { add("-${prefix}fir.bench.prefix=$path") diff --git a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts index dbc4edf75df..68471f3490b 100644 --- a/plugins/android-extensions/android-extensions-compiler/build.gradle.kts +++ b/plugins/android-extensions/android-extensions-compiler/build.gradle.kts @@ -62,15 +62,14 @@ projectTest { workingDir = rootDir useAndroidJar() - val androidPluginPath = File(intellijRootDir(), "plugins/android/lib").canonicalPath - systemProperty("ideaSdk.androidPlugin.path", androidPluginPath) - val androidExtensionsRuntimeProvider = project.provider { androidExtensionsRuntimeForTests.asPath } + val robolectricClasspathProvider = project.provider { robolectricClasspath.asPath } + doFirst { systemProperty("androidExtensionsRuntime.classpath", androidExtensionsRuntimeProvider.get()) systemProperty("robolectric.classpath", robolectricClasspathProvider.get()) diff --git a/plugins/parcelize/parcelize-compiler/build.gradle.kts b/plugins/parcelize/parcelize-compiler/build.gradle.kts index 83dc411d5db..dd5ea32a6fe 100644 --- a/plugins/parcelize/parcelize-compiler/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/build.gradle.kts @@ -106,9 +106,6 @@ projectTest(jUnitMode = JUnitMode.JUnit5) { workingDir = rootDir useAndroidJar() - val androidPluginPath = File(intellijRootDir(), "plugins/android/lib").canonicalPath - systemProperty("ideaSdk.androidPlugin.path", androidPluginPath) - val parcelizeRuntimeForTestsProvider = project.provider { parcelizeRuntimeForTests.asPath } val robolectricClasspathProvider = project.provider { robolectricClasspath.asPath } doFirst {