diff --git a/analysis/analysis-api-fe10/build.gradle.kts b/analysis/analysis-api-fe10/build.gradle.kts index 7830eeb8935..623cb983c84 100644 --- a/analysis/analysis-api-fe10/build.gradle.kts +++ b/analysis/analysis-api-fe10/build.gradle.kts @@ -35,7 +35,7 @@ tasks.withType> { } } -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { dependsOn(":dist") workingDir = rootDir useJUnitPlatform() diff --git a/analysis/analysis-api-fir/build.gradle.kts b/analysis/analysis-api-fir/build.gradle.kts index 9dbbe8aee25..c871b5f3c1e 100644 --- a/analysis/analysis-api-fir/build.gradle.kts +++ b/analysis/analysis-api-fir/build.gradle.kts @@ -59,7 +59,7 @@ sourceSets { "test" { projectDefault() } } -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { dependsOn(":dist") workingDir = rootDir useJUnitPlatform() diff --git a/analysis/low-level-api-fir/build.gradle.kts b/analysis/low-level-api-fir/build.gradle.kts index 08695dbf350..637cf53c319 100644 --- a/analysis/low-level-api-fir/build.gradle.kts +++ b/analysis/low-level-api-fir/build.gradle.kts @@ -60,7 +60,7 @@ sourceSets { "test" { projectDefault() } } -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { dependsOn(":dist") workingDir = rootDir useJUnitPlatform() diff --git a/buildSrc/src/main/kotlin/tasks.kt b/buildSrc/src/main/kotlin/tasks.kt index 142c4a0c049..a483ee59cda 100644 --- a/buildSrc/src/main/kotlin/tasks.kt +++ b/buildSrc/src/main/kotlin/tasks.kt @@ -88,6 +88,10 @@ fun Task.dependsOnKotlinGradlePluginPublish() { } } +enum class JUnitMode { + JUnit4, JUnit5, Mix +} + /** * @param parallel is redundant if @param jUnit5Enabled is true, because * JUnit5 supports parallel test execution by itself, without gradle help @@ -96,7 +100,7 @@ fun Project.projectTest( taskName: String = "test", parallel: Boolean = false, shortenTempRootName: Boolean = false, - jUnit5Enabled: Boolean = false, + jUnitMode: JUnitMode = JUnitMode.JUnit4, body: Test.() -> Unit = {} ): TaskProvider { val shouldInstrument = project.providers.gradleProperty("kotlin.test.instrumentation.disable") @@ -136,7 +140,7 @@ fun Project.projectTest( } } - val parentNames = if (jUnit5Enabled) { + val parentNames = if (jUnitMode != JUnitMode.JUnit4) { /* * If we run test from inner test class with junit 5 we need * to include all containing classes of our class @@ -154,10 +158,12 @@ fun Project.projectTest( if (treeElement.isDirectory) { classFileNameWithoutExtension.startsWith(path) } else { - if (jUnit5Enabled) { - path == classFileName || (path.endsWith(".class") && parentNames.any { path.startsWith(it) }) - } else { - path == classFileName || (path.endsWith(".class") && path.startsWith("$classFileNameWithoutExtension$")) + if (path == classFileName) return@include true + if (!path.endsWith(".class")) return@include false + when(jUnitMode) { + JUnitMode.JUnit5 -> parentNames.any { path.startsWith(it) } + JUnitMode.JUnit4 -> path.startsWith("$classFileNameWithoutExtension$") + JUnitMode.Mix -> parentNames.any { path.startsWith(it) } || path.startsWith("$classFileNameWithoutExtension$") } } } @@ -225,7 +231,7 @@ fun Project.projectTest( } } - if (parallel && !jUnit5Enabled) { + if (parallel && jUnitMode != JUnitMode.JUnit5) { maxParallelForks = project.providers.gradleProperty("kotlin.test.maxParallelForks").forUseAtConfigurationTime().orNull?.toInt() ?: (Runtime.getRuntime().availableProcessors() / if (project.kotlinBuildProperties.isTeamcityBuild) 2 else 4).coerceAtLeast(1) diff --git a/compiler/fir/analysis-tests/build.gradle.kts b/compiler/fir/analysis-tests/build.gradle.kts index 9d1c109346d..37fdb3c2f8d 100644 --- a/compiler/fir/analysis-tests/build.gradle.kts +++ b/compiler/fir/analysis-tests/build.gradle.kts @@ -56,7 +56,7 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { } } -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { dependsOn(":dist") workingDir = rootDir jvmArgs!!.removeIf { it.contains("-Xmx") } diff --git a/compiler/fir/fir2ir/build.gradle.kts b/compiler/fir/fir2ir/build.gradle.kts index 47ccc13f64a..23ff3446447 100644 --- a/compiler/fir/fir2ir/build.gradle.kts +++ b/compiler/fir/fir2ir/build.gradle.kts @@ -73,7 +73,7 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { } } -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { dependsOn(":dist") workingDir = rootDir useJUnitPlatform() diff --git a/compiler/tests-common-new/build.gradle.kts b/compiler/tests-common-new/build.gradle.kts index c40b6740f32..6986a9e7693 100644 --- a/compiler/tests-common-new/build.gradle.kts +++ b/compiler/tests-common-new/build.gradle.kts @@ -62,7 +62,7 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { } } -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { dependsOn(":dist") workingDir = rootDir jvmArgs!!.removeIf { it.contains("-Xmx") } diff --git a/compiler/tests-different-jdk/build.gradle.kts b/compiler/tests-different-jdk/build.gradle.kts index 49ccf8ff62a..b663ff7a0e8 100644 --- a/compiler/tests-different-jdk/build.gradle.kts +++ b/compiler/tests-different-jdk/build.gradle.kts @@ -33,7 +33,7 @@ fun Project.codegenTest( body: Test.() -> Unit = {} ): TaskProvider = projectTest( taskName = "codegenTarget${targetInTestClass}Jvm${jvm}Test", - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { dependsOn(":dist") workingDir = rootDir diff --git a/compiler/visualizer/build.gradle.kts b/compiler/visualizer/build.gradle.kts index 50b3796a6da..096677bd80a 100644 --- a/compiler/visualizer/build.gradle.kts +++ b/compiler/visualizer/build.gradle.kts @@ -40,7 +40,7 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { } } -projectTest(parallel = true, jUnit5Enabled = true) { +projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) { workingDir = rootDir useJUnitPlatform() diff --git a/js/js.tests/build.gradle.kts b/js/js.tests/build.gradle.kts index 3c759804b5a..001148a3caa 100644 --- a/js/js.tests/build.gradle.kts +++ b/js/js.tests/build.gradle.kts @@ -243,7 +243,7 @@ fun Test.setUpBoxTests() { val testDataDir = project(":js:js.translator").projectDir.resolve("testData") -projectTest(parallel = true) { +projectTest(parallel = true, jUnitMode = JUnitMode.Mix) { setUpJsBoxTests(jsEnabled = true, jsIrEnabled = true) systemProperty("kotlin.js.ir.pir", "false") maxHeapSize = "3g" @@ -263,7 +263,7 @@ projectTest(parallel = true) { configureTestDistribution() } -projectTest("jsTest", parallel = true, jUnit5Enabled = true) { +projectTest("jsTest", parallel = true, jUnitMode = JUnitMode.Mix) { // PIR temporary disabled systemProperty("kotlin.js.ir.pir", "false") setUpJsBoxTests(jsEnabled = true, jsIrEnabled = false) @@ -303,7 +303,7 @@ projectTest("jsPirTest", true) { setUpJsBoxTests(jsEnabled = false, jsIrEnabled = true) } -projectTest("quickTest", parallel = true, jUnit5Enabled = true) { +projectTest("quickTest", parallel = true, jUnitMode = JUnitMode.Mix) { setUpJsBoxTests(jsEnabled = true, jsIrEnabled = false) maxHeapSize = "3g" systemProperty("kotlin.js.skipMinificationTest", "true") diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts index ace202c0e68..0f5b4946004 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/build.gradle.kts @@ -101,7 +101,7 @@ fun Test.advanceGradleVersion() { projectTest( "test", shortenTempRootName = shortenTempRootName, - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { includeMppAndAndroid(false) includeNative(false) @@ -111,7 +111,7 @@ projectTest( projectTest( "testAdvanceGradleVersion", shortenTempRootName = shortenTempRootName, - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { advanceGradleVersion() includeMppAndAndroid(false) @@ -124,7 +124,7 @@ if (isTeamcityBuild) { projectTest( "testNative", shortenTempRootName = shortenTempRootName, - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { includeNative(true) finalizedBy(cleanTestKitCacheTask) @@ -133,7 +133,7 @@ if (isTeamcityBuild) { projectTest( "testAdvanceGradleVersionNative", shortenTempRootName = shortenTempRootName, - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { advanceGradleVersion() includeNative(true) @@ -143,7 +143,7 @@ if (isTeamcityBuild) { projectTest( "testMppAndAndroid", shortenTempRootName = shortenTempRootName, - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { includeMppAndAndroid(true) finalizedBy(cleanTestKitCacheTask) @@ -152,7 +152,7 @@ if (isTeamcityBuild) { projectTest( "testAdvanceGradleVersionMppAndAndroid", shortenTempRootName = shortenTempRootName, - jUnit5Enabled = true + jUnitMode = JUnitMode.JUnit5 ) { advanceGradleVersion() includeMppAndAndroid(true) diff --git a/plugins/fir/fir-plugin-prototype/build.gradle.kts b/plugins/fir/fir-plugin-prototype/build.gradle.kts index 621af7d611a..0352d824777 100644 --- a/plugins/fir/fir-plugin-prototype/build.gradle.kts +++ b/plugins/fir/fir-plugin-prototype/build.gradle.kts @@ -60,7 +60,7 @@ if (kotlinBuildProperties.isInJpsBuildIdeaSync) { } } -projectTest(parallel = true, jUnit5Enabled = true) { +projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) { workingDir = rootDir jvmArgs!!.removeIf { it.contains("-Xmx") } maxHeapSize = "3g" diff --git a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts index 2f0cf0f0558..a468d15d192 100644 --- a/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts +++ b/plugins/kotlin-serialization/kotlin-serialization-compiler/build.gradle.kts @@ -51,7 +51,7 @@ sourcesJar() javadocJar() testsJar() -projectTest(parallel = true, jUnit5Enabled = true) { +projectTest(parallel = true, jUnitMode = JUnitMode.JUnit5) { workingDir = rootDir useJUnitPlatform() } diff --git a/plugins/parcelize/parcelize-compiler/build.gradle.kts b/plugins/parcelize/parcelize-compiler/build.gradle.kts index 99e264ca127..332671e8293 100644 --- a/plugins/parcelize/parcelize-compiler/build.gradle.kts +++ b/plugins/parcelize/parcelize-compiler/build.gradle.kts @@ -75,7 +75,7 @@ sourcesJar() testsJar() -projectTest(jUnit5Enabled = true) { +projectTest(jUnitMode = JUnitMode.JUnit5) { useJUnitPlatform() dependsOn(parcelizeRuntimeForTests) dependsOn(":dist")