[Test] Enable builtin parallel tests execution form JUnit5 in :compiler:tests-common-new
This commit is contained in:
committed by
TeamCityServer
parent
78b2eb994b
commit
2f1e4862e5
@@ -30,6 +30,7 @@ val SourceSet.projectDefault: Project.() -> Unit
|
|||||||
}
|
}
|
||||||
"test" -> {
|
"test" -> {
|
||||||
java.srcDirs("test", "tests")
|
java.srcDirs("test", "tests")
|
||||||
|
this@projectDefault.resources.srcDir("testResources")
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -476,11 +476,19 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
|
|
||||||
fun getOrCreateApplicationEnvironmentForProduction(
|
fun getOrCreateApplicationEnvironmentForProduction(
|
||||||
parentDisposable: Disposable, configuration: CompilerConfiguration
|
parentDisposable: Disposable, configuration: CompilerConfiguration
|
||||||
|
): KotlinCoreApplicationEnvironment = getOrCreateApplicationEnvironment(parentDisposable, configuration, unitTestMode = false)
|
||||||
|
|
||||||
|
fun getOrCreateApplicationEnvironmentForTests(
|
||||||
|
parentDisposable: Disposable, configuration: CompilerConfiguration
|
||||||
|
): KotlinCoreApplicationEnvironment = getOrCreateApplicationEnvironment(parentDisposable, configuration, unitTestMode = true)
|
||||||
|
|
||||||
|
private fun getOrCreateApplicationEnvironment(
|
||||||
|
parentDisposable: Disposable, configuration: CompilerConfiguration, unitTestMode: Boolean
|
||||||
): KotlinCoreApplicationEnvironment {
|
): KotlinCoreApplicationEnvironment {
|
||||||
synchronized(APPLICATION_LOCK) {
|
synchronized(APPLICATION_LOCK) {
|
||||||
if (ourApplicationEnvironment == null) {
|
if (ourApplicationEnvironment == null) {
|
||||||
val disposable = Disposer.newDisposable()
|
val disposable = Disposer.newDisposable()
|
||||||
ourApplicationEnvironment = createApplicationEnvironment(disposable, configuration, unitTestMode = false)
|
ourApplicationEnvironment = createApplicationEnvironment(disposable, configuration, unitTestMode)
|
||||||
ourProjectCount = 0
|
ourProjectCount = 0
|
||||||
Disposer.register(disposable, Disposable {
|
Disposer.register(disposable, Disposable {
|
||||||
synchronized(APPLICATION_LOCK) {
|
synchronized(APPLICATION_LOCK) {
|
||||||
|
|||||||
+9
-1
@@ -475,11 +475,19 @@ class KotlinCoreEnvironment private constructor(
|
|||||||
|
|
||||||
fun getOrCreateApplicationEnvironmentForProduction(
|
fun getOrCreateApplicationEnvironmentForProduction(
|
||||||
parentDisposable: Disposable, configuration: CompilerConfiguration
|
parentDisposable: Disposable, configuration: CompilerConfiguration
|
||||||
|
): KotlinCoreApplicationEnvironment = getOrCreateApplicationEnvironment(parentDisposable, configuration, unitTestMode = false)
|
||||||
|
|
||||||
|
fun getOrCreateApplicationEnvironmentForTests(
|
||||||
|
parentDisposable: Disposable, configuration: CompilerConfiguration
|
||||||
|
): KotlinCoreApplicationEnvironment = getOrCreateApplicationEnvironment(parentDisposable, configuration, unitTestMode = true)
|
||||||
|
|
||||||
|
private fun getOrCreateApplicationEnvironment(
|
||||||
|
parentDisposable: Disposable, configuration: CompilerConfiguration, unitTestMode: Boolean
|
||||||
): KotlinCoreApplicationEnvironment {
|
): KotlinCoreApplicationEnvironment {
|
||||||
synchronized(APPLICATION_LOCK) {
|
synchronized(APPLICATION_LOCK) {
|
||||||
if (ourApplicationEnvironment == null) {
|
if (ourApplicationEnvironment == null) {
|
||||||
val disposable = Disposer.newDisposable()
|
val disposable = Disposer.newDisposable()
|
||||||
ourApplicationEnvironment = createApplicationEnvironment(disposable, configuration, unitTestMode = false)
|
ourApplicationEnvironment = createApplicationEnvironment(disposable, configuration, unitTestMode)
|
||||||
ourProjectCount = 0
|
ourProjectCount = 0
|
||||||
Disposer.register(disposable, Disposable {
|
Disposer.register(disposable, Disposable {
|
||||||
synchronized(APPLICATION_LOCK) {
|
synchronized(APPLICATION_LOCK) {
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ dependencies {
|
|||||||
testApi(platform("org.junit:junit-bom:5.7.0"))
|
testApi(platform("org.junit:junit-bom:5.7.0"))
|
||||||
testApi("org.junit.jupiter:junit-jupiter")
|
testApi("org.junit.jupiter:junit-jupiter")
|
||||||
testApi("org.junit.platform:junit-platform-commons:1.7.0")
|
testApi("org.junit.platform:junit-platform-commons:1.7.0")
|
||||||
|
testApi("org.junit.platform:junit-platform-launcher:1.7.0")
|
||||||
|
|
||||||
testCompileOnly(project(":kotlin-reflect-api"))
|
testCompileOnly(project(":kotlin-reflect-api"))
|
||||||
testRuntimeOnly(project(":kotlin-reflect"))
|
testRuntimeOnly(project(":kotlin-reflect"))
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ dependencies {
|
|||||||
testApi(platform("org.junit:junit-bom:5.7.0"))
|
testApi(platform("org.junit:junit-bom:5.7.0"))
|
||||||
testApi("org.junit.jupiter:junit-jupiter")
|
testApi("org.junit.jupiter:junit-jupiter")
|
||||||
testApi("org.junit.platform:junit-platform-commons:1.7.0")
|
testApi("org.junit.platform:junit-platform-commons:1.7.0")
|
||||||
|
testApi("org.junit.platform:junit-platform-launcher:1.7.0")
|
||||||
testApi(projectTests(":compiler:test-infrastructure"))
|
testApi(projectTests(":compiler:test-infrastructure"))
|
||||||
testApi(projectTests(":compiler:test-infrastructure-utils"))
|
testApi(projectTests(":compiler:test-infrastructure-utils"))
|
||||||
testApi(projectTests(":compiler:tests-compiler-utils"))
|
testApi(projectTests(":compiler:tests-compiler-utils"))
|
||||||
|
|||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
org.jetbrains.kotlin.test.ApplicationEnvironmentDisposer
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
junit.jupiter.execution.parallel.enabled=true
|
||||||
|
junit.jupiter.execution.parallel.mode.default=concurrent
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.test
|
||||||
|
|
||||||
|
import com.intellij.openapi.Disposable
|
||||||
|
import com.intellij.openapi.util.Disposer
|
||||||
|
import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment
|
||||||
|
import org.junit.platform.launcher.TestExecutionListener
|
||||||
|
import org.junit.platform.launcher.TestPlan
|
||||||
|
|
||||||
|
class ApplicationEnvironmentDisposer : TestExecutionListener {
|
||||||
|
companion object {
|
||||||
|
val ROOT_DISPOSABLE: Disposable = Disposer.newDisposable()
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun testPlanExecutionFinished(testPlan: TestPlan) {
|
||||||
|
KotlinCoreEnvironment.disposeApplicationEnvironment()
|
||||||
|
Disposer.dispose(ROOT_DISPOSABLE)
|
||||||
|
}
|
||||||
|
}
|
||||||
+6
-1
@@ -25,6 +25,7 @@ import org.jetbrains.kotlin.platform.js.isJs
|
|||||||
import org.jetbrains.kotlin.platform.jvm.isJvm
|
import org.jetbrains.kotlin.platform.jvm.isJvm
|
||||||
import org.jetbrains.kotlin.platform.konan.isNative
|
import org.jetbrains.kotlin.platform.konan.isNative
|
||||||
import org.jetbrains.kotlin.psi.KtFile
|
import org.jetbrains.kotlin.psi.KtFile
|
||||||
|
import org.jetbrains.kotlin.test.ApplicationEnvironmentDisposer
|
||||||
import org.jetbrains.kotlin.test.model.TestFile
|
import org.jetbrains.kotlin.test.model.TestFile
|
||||||
import org.jetbrains.kotlin.test.model.TestModule
|
import org.jetbrains.kotlin.test.model.TestModule
|
||||||
import java.io.File
|
import java.io.File
|
||||||
@@ -72,7 +73,11 @@ class CompilerConfigurationProviderImpl(
|
|||||||
platform.isCommon() -> EnvironmentConfigFiles.METADATA_CONFIG_FILES
|
platform.isCommon() -> EnvironmentConfigFiles.METADATA_CONFIG_FILES
|
||||||
else -> error("Unknown platform: $platform")
|
else -> error("Unknown platform: $platform")
|
||||||
}
|
}
|
||||||
val projectEnv = KotlinCoreEnvironment.createProjectEnvironmentForTests(testRootDisposable, CompilerConfiguration())
|
val applicationEnvironment = KotlinCoreEnvironment.getOrCreateApplicationEnvironmentForTests(
|
||||||
|
ApplicationEnvironmentDisposer.ROOT_DISPOSABLE,
|
||||||
|
CompilerConfiguration()
|
||||||
|
)
|
||||||
|
val projectEnv = KotlinCoreEnvironment.ProjectEnvironment(testRootDisposable, applicationEnvironment)
|
||||||
KotlinCoreEnvironment.createForTests(
|
KotlinCoreEnvironment.createForTests(
|
||||||
projectEnv,
|
projectEnv,
|
||||||
createCompilerConfiguration(module, projectEnv.project),
|
createCompilerConfiguration(module, projectEnv.project),
|
||||||
|
|||||||
Reference in New Issue
Block a user